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

웹 애플리케이션 사전조사 및 스캐닝(2) - ZAP(Zed Attack Proxy)

by 사이테일 2015. 4. 14.


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


웹 애플리케이션 스캐너가 애플리케이션의 취약점을 자동으로 찾는 것과 Nessus가 웹서버의 설정이 잘못된 것이나 빠뜨린 패치를 찾는 방식은 비슷하다.

대개의 웹 애플리케이션 스캐너는 웹 프록시와 같이 브라우저와 웹 애플리케이션의 중간에 자리잡으며, Burp Suite와 ZAP처럼 큰 도구모음의 일부 기능으로 구현되어 있다.

웹 스캐너는 다듬어진 입력값을 애플리케이션에 보내고 그 응답값을 분석하여 알려진 취약점 징후를 찾아본다.

또한 웹 애플리케이션의 입력 필드에 요청내용을 수백가지로 입력하여 취약점의 시그니처 유형을 확인하는게 보통이다.


웹 스캐너(Burp Suite Professional, ZAP 등과 같은)가 인식하는 웹 애플리케이션의 취약점은 보통 다음의 세 가지 유형이다. 

- SQL이나 운영체제 명령을 Injection하는 등의 서버를 목표로 하는 입력 기반 취약점

- 크로스 사이트 스크립트(XSS)와 같은 클라이언트 측을 목표로 하는 입력 기반 취약점

- 브라우저와 웹 애플리케이션 중간에서 쿠키나 비밀번호를 암호화하지 않고 전송하는 등의 요청과 응답 주기를 조사해서 식별할 수 있는 취약점


웹 스캐너가 찾는 취약점 유형에는 분명한 한계가 존재한다. 다음과 같은 항목들은 자동화된 스캐너가 발견하지 못하는 취약점이다.

- 취약한 비밀번호

- 의미 있는 매개변수 이름

- 저장된 SQL Injection (2차 SQL Injection)

- 여러 단계의 저장된 XSS

- 강제 브라우징 (파일과 디렉토리 무작위 공격)

- 세션 공격

- 논리 결함


ZED 공격 프록시로 스캔하기

ZAP(Zed Attack Proxy)를 사용하기 전에 기본 8080에서 동작하고 있는 Burp Suite를 완전히 종료하자.

서로 다른 포트를 사용하면 동시에 동작시킬 수 있지만, 굳이 필요하지 않다.

ZAP는 Kali Linux -> Web Application -> Web Application Fuzzers -> owasp-zap 의 메뉴를 통해 실행시키면 된다.

(Burp Suite도 훌륭한 웹 스캐너 도구지만, Professional 버전에서만 제공하고 이는 $299이다.)

ZAP은 Burp Suite와 비슷한데 웹서버를 사전조사할 때 쓰는 포트스캐너와 애플리케이션에 빠르게 입력값을 보낼 수 있는 퍼징툴, 그리고 웹 서버에서 공통으로 쓰는 이름의 디렉토리를 추정하는 디렉토리 무작위 공격 툴을 가지고 있다.


ZAP이 HTTPS 위에서 제대로 동작하기 위해서는 SSL 인증서가 탑재되어야 한다.

Options 창에서 Dynamic SSL Certification을 선택한 후 Generate 버튼을 누르면 인증서를 만들 수 있다.



웹 페이지를 방문하면 Burp Suite에서 사이트맵이 만들어지는 것과 같은 식으로 Site 탭이 만들어진다.

임의의 IP나 URL에 오른쪽 클릭하면, 목표 애플리케이션과 서버에 대한 스캔, 스파이더, 무작위 공격 혹은 포트 스캔을 할 수 있다.

일단 해당 사이트를 스파이더하여 스캔할 모든 자원을 찾아내도록 하자.



스파이더가 끝나면 Active Scan 탭을 선택하여 웹 애플리케이션에 대해 실질적인 스캐닝을 할 수 있다.



Active Scan이 끝나면, Alerts 탭에서 발견된 취약점이 트리 구조로 표시되는 것을 보고 검토할 수 있다.

ZAP은 발견한 페이지의 취약점에 대해 간략히 설명해주고 매개변수 값을 보여준다.




정확한 URL과 취약한 매개변수를 알게 되었기 때문에 웹 애플리케이션을 공격할 악성 입력값을 보내는 것이 가능하다.

브라우저의 실질적인 HTML 폼 필드에서 악성 입력값을 타이핑할 수도 있고, 혹은 프록시에서 요청문을 가로챈 후 파라미터값을 편집해서 보낼 수도 있다.

ZAP으로 스캐닝하여 찾은 전체 보고서는 Reports 메뉴에서 HTML이나 XMP로 내보낼 수 있다.

HTML로 보고서 파일을 저장할 경우 추후 브라우저로 열어보고 검토할 수 있다.




ZAP를 이용한 Brute force

ZAP에서 스캐닝하는 동안 동시에 할 수 있는 것으로 무작위 공격(brute force)이 있다.

이를 활용하면 디렉토리 목록이 사전에 입력되어 있어서 단순히 존재하는지 확인하게 된다.

이 디렉토리는 온라인에서 가장 일반적인 디렉토리를 중요한 순서대로 목록화한 것이다.

무작위 공격은 오랜 시간이 걸리는데, 특히 단어 목록이 크면 클수록 걸리는 시간은 늘어나게 된다.

도구 목록에서 Forced Browse 메뉴를 클릭한 후 사용할 수 있다.