# OWASP ZAP Attack Proxy 사용방법
ZAP(Zed Attack Proxy)
ZAP는 웹서버를 사전조사할 때 쓰는 포트스캐너와 애플리케이션에 빠르게 입력 값을 보낼 수 있는 퍼징툴, 그리고 웹 서버에서 공통으로 쓰는 이름의 디렉토리를 추정하는 디렉토리 무작위 공격 툴을 가지고 있다.
웹 스캐너(Burp Suite, ZAP 등과 같은)가 인식하는 웹 애플리케이션의 취약점은 보통 다음의 세 가지 유형이다.
- SQL이나 OS 명령을 Injection하는 등의 서버를 목표로 하는 입력 기반 취약점
- 크로스 사이트 스크립트(XSS)와 같은 클라이언트 측을 목표로 하는 입력 기반 취약점
- 브라우저와 웹 애플리케이션 중간에서 쿠키나 비밀번호를 암호화하지 않고 전송하는 등의 요청과 응답 주기를 조사해서 식별할 수 있는 취약점
Kali에 기본적으로 설치가 되어 있는 툴이다.
Kali Linux -> Web Application -> Web Application Fuzzers -> owasp-zap 을 실행시키면 된다.
ZAP가 정상적으로 진행되려면 SSL 인증서가 필수적으로 준비되어야 한다.
Options - Dynamic SSL Certificates에서 <Generate>를 클릭하면 인증서를 만들 수 있다.
해당 사이트에서 애플리케이션, 서버에 대한 스캔정보, Sprider, Brute force, PortScan 등등을 진행할 수 있다.
먼저 Spider 기능을 통해 해당 사이트를 스캔해보자.
IP/URL에 우클릭해서 Attack - Spider 를 클릭하면 사이트에 대한 스캔이 진행된다.
스캔이 진행되면 아래 이미지와 같은 결과 뷰를 확인할 수 있다.
미리 설치가 되어 있는 DVWA 페이지를 대상으로 지정하여 스캔하였다.
Spider를 마치면 Active Scan 탭을 선택하여 웹에대한 실질적인 스캐닝을 진행할 수 있다.
아래 이미지를 보면 Active Scan 탭의 정보를 확인할 수 있다.
스캐닝을 마치면 Alert 탭에서 발견된 취약점들이 Tree 형태로 출력되는 것을 확인할 수 있다.
출력된 취약점 리스트를 가지고 검토를 진행하면 된다.
ZAP를 통해 페이지의 발견한 취약점에 대해 간단하게 설명을 하고 Parameter 값을 확인할 수 있다.
URL과 취약한 파라미터를 알았으므로 악의적인 공격이 가능하다.
브라우저의 실질적인 HTML 폼 필드에서 악성 입력값을 타이핑할 수도 있고, 혹은 프록시에서 요청문을 가로챈 후 파라미터 값을 수정해서 전송할 수도 있다.
ZAP으로 스캐닝하여 찾은 전체 보고서는 Reports 메뉴에서 HTML이나 XMP로 내보낼 수 있다.
HTML로 보고서 파일을 저장할 경우 추후 브라우저로 열어보고 검토할 수 있다.
ZAP는 스캐닝을 진행하는 동시에 Brute force 무작위 대입 공격을 진행할 수 있다.
이를 활용하면 디렉토리 목록이 사전에 입력되어 있어서 단순히 존재하는지 확인하게 된다.
이 디렉토리는 온라인에서 가장 일반적인 디렉토리를 중요한 순서대로 목록화한 것이다.
무작위 공격은 오랜 시간이 걸리는데, 특히 단어 목록이 크면 클수록 걸리는 시간은 늘어나게 된다.
도구 목록에서 Forced Browse 메뉴를 클릭한 후 사용할 수 있다.