본문 바로가기
정상을향해/Web

웹 애플리케이션 사전조사 및 스캐닝(1) - Burp Suite

by 사이테일 2015. 4. 8.


※ 본 포스팅은 '웹 해킹 입문 - 조쉬 파울리 / BJPUBLIC'의 내용을 참고하였습니다.


웹 애플리케이션을 사전조사하고 스캔하는 단계에서는 웹 애플리케이션을 구성하는 자원(페이지, 파일, 디렉토리, 링크, 이미지 등)에 대한 상세한 정보를 얻을 수 있다.

이러한 정보는 이후 웹 애플리케이션을 공격할 때 매우 중요한 정보로 사용된다.

웹 애플리케이션을 사전조사하는 방법에는 여러 가지가 있지만, 그 중 목표물을 공격하는 가장 훌륭한 방법은 "애플리케이션이 어떻게 동작하는지 완전히 이해"하는 것이다.

- 데이터의 진입지점 확인 (HTML 입력 필드 - 폼 필드, 숨겨진 필드, 드롭다운 박스, 라디오 버튼 목록 등)

- HTTP 헤더, HTTP 쿠키, URL 질의 검사

- 클라이언트 측 HTML과 JavaScript 가능성 검토

- 사용된 부호화 방식 확인


웹 프록시의 기초

웹 해킹에서 브라우저와 함께 동작하는 프록시를 설치하고 설정하는 것은 필수적이다.

웹 애플리케이션과 서로 통신하는 것이 브라우저라는 것을 생각하면 이는 당연하다.

브라우저(클라이언트)가 웹 애플리케이션(서버)에 요청을 보내면 웹 애플리케이션은 브라우저에 응답을 회신한다.

이런 요청과 응답의 순환이 실제로 어떻게 동작하는지 프록시로 볼 수 있는데, 프록시가 브라우저와 웹 애플리케이션 중간에서 요청과 응답의 흐름을 제어할 수 있기 때문이다.

일단 프록시를 설정하면 프록시를 통과하는 모든 요청과 응답 데이터를 검사하고, 심지어 매개변수 값을 가로채거나 바꾸기도 한다.

또한 프록시를 거치는 모든 요청과 응답의 진행성 이력을 모두 목록화하는 것이 가능하기 때문에 향후 취약점을 조사하고 공격하는 단계에서 이를 활용할 수 있다.


Burp Suite

Burp Suite(이하, Burp)는 대표적인 프록시 도구로써 Kali에 기본으로 내장되어 있다.

웹 브라우저의 설정(Preferences) -> 고급(Advance) -> 설정(Settings) 에서 수동 프록시 설정(Manual Proxy Configuration) 을 선택하고, 다음 그림과 같이 입력한다.



(위 그림에서 No Proxy for에 적힌 목록을 삭제해야한다.)

웹 애플리케이션의 모든 자원을 색인화하고 목록화하는 것을 스파이더링(spidering)이라고 하며 나중에 전체 웹 애플리케이션을 크롤링할 때 사용한다.

Burp로 스파이더 기능을 사용해보자.

Burp를 실행하고, 웹 브라우저에서 http://127.0.0.1/login.php 에 접속하면 전에 세팅해 두었던 DVWA 로그인 페이지가 나온다.

(DVWA 환경 세팅은 전 포스팅을 참조하기 바란다. - http://scytalezz.tistory.com/83)

사실 곧바로 로그인 페이지가 나오지는 않는다.

Burp는 기본적으로 모든 요청을 가로채도록 설정되어 있기 때문에 Proxy -> Intercept -> Intercept is on 토글 버튼을 눌러 스위치를 해제해야 한다. (일단은 해제하고 사용하자.)



우선은 자체 웹서버(DVWA)를 대상으로 할 것이기 때문에 Target -> Site map 에서 127.0.0.1 을 선택하고 해당 항목을 Scope에 추가(add item to scope)하자.



디렉토리는 폴더 모양의 아이콘으로 표시되며 Burp가 디렉토리 안에서 찾은 페이지를 보여준다.

톱니 모양의 아이콘은 부가 기능이 있는 페이지를 표시할 때 쓰인다. 대체로 이런 페이지는 매개변수를 이용하여 로그인하거나, 데이터베이스를 설정하고, 데이터를 가져오는 그런 것들이다.

만약 이런 페이지가 동적이라면, 사용자의 입력에 대해 웹 애플리케이션이 처음으로 신호를 보내는 페이지므로 중요하다.

흰색 페이지 모양의 아이콘은 입력을 허용하지 않고 동적인 기능이 없는 정적 페이지를 나타낸다.


Site map 항목 중 굵은 글씨로 표시된 것은 사용자가 수동으로 요청한 것을 프록시가 목록화한 자원이다.

위 그림에서는 dvwa 디렉토리의 index.php, login.php를 수동으로 브라우징한 것이다.

회색으로 표시된 항목은 사용자가 브라우저로 요청한 것이 아니라 Burp 스파이더가 사전조사하며 발견한 것을 나타낸다.


다음으로 스파이더 탭의 옵션(option) 서브 탭에 Passive Spidering 항목이 있다.

이 모드는 자원을 요청하지 않고 Site map에 다른 디렉토리나 파일로 연계된 모든 요청과 응답을 포함시킨다.

실제로 스파이더링을 하면 dvwa.co.uk와 같은 URL 디렉토리가 Site map의 일부로 포함되어 있다.

원한다면 Passive Spidering을 해제할 수는 있으나 일반적으로 그냥 두는 편이 낫다. 



자동화된 스파이더는 기본적으로 찾은 모든 폼(Form)을 제출(Submit)한다.

Burp는 그 폼의 목적이나 위치, 또는 파생된 결과가 수백번 제출되어도 이에 대해 고려하지 않고, 자동으로 폼이 발견되면 그저 제출한다.

다음의 값들이 스파이더가 자동으로 제출하는 폼을 찾을 때마다 웹 애플리케이션으로 보내는 실제 값이다.



이 값은 Burp에서 일정하게 사용하고 있기 때문에 바꿔주는 편이 좋다.