취약점/Bee-Box

A1-Injection SQL Injection (AJAX/JSON/jQuery) 비박스(bWAPP)

시큐렛 2019. 12. 18. 21:10

SQL Injection이란?

웹 및 응용프로그램에서 데이터를 조회나 처리할 경우 데이터베이스에 명령을 하는데 이때 처리할 데이터에 악의적인 SQL문을 삽입하여 비정상적으로 데이터베이스를 조작하는 공격 방법이다.

 

AJAX란?

일반적인 HTTP통신은 통신을 할때마다 HTML페이지 전체를 갱신해야 하지만 AJAX를 통한 비동기 방식으로 전체의 페이지를 불러오지않고 필요한 데이터를 JSON이나 XML형태로 받아와 갱신하여 시간과 자원을 효율적으로 사용할수있다.


메인페이지

이전과 다르게 "i"를 입력과 동시에 밑에 제목,년도,주인공,장르,IMDb정보가 바로 출력이된다.

페이지 소스코드

페이지 소스코드 확인시(크롬 F12) 제목란에 키입력이 있을 경우 데이터를 sqli_10-2.php로 GET방식으로 HTTP 요청을 전송하는 것을 확인하였다.

버프슈트 캡쳐

버프슈트로 intercept후 i를 입력 후 응답값 확인시 윗사진과 같이 JSON형태로 응답을 받는것을 확인하였다.

 

sqli_10-2.php 소스

vi /var/www/bWAPP/sqli_10-2.php 

위 명령으로 소스코드 확인시 위 사진과 같이 SQL문을 이용하여 데이터를 생성을 하는 것을 확인할수있다.

 

요약

메인페이지의 title인풋박스의 데이터를 sqli_10-2.php로 보내고 sqli_10-2.php는 받은 title데이터를 

"SELECT * FROM movies WHERE title LIKE '%" . sqli($title) . "%'";

위 SQL문에 넣어 얻은 정보를 JSON형태로 sqli_10-1.php로 반환하여 sqli_10-1.php는 받은 데이터를 출력해준다.

 

삽입코드 : 

'union select 1,load_file('/etc/passwd'),3,4,5,6,7#		//passwd파일 출력
'union select 1,login,password,4,5,6,7 from users#		//users테이블의 id,password 정보획득

 

이전글과 같은 방식으로 SQL Injection이 가능하므로 이전글을 참조