콘텐츠로 이동

ZAP (Zed Attack Proxy) - 웹 앱 보안 스캐너 치트시트

ZAP (Zed Attack Proxy) - 웹 앱 보안 스캐너 치트시트

ZAP (Zed Attack Proxy, Checkmarx에서 관리, 이전에 OWASP 플래그십)는 무료 오픈소스 동적 애플리케이션 보안 테스팅 (DAST) 도구다. 브라우저와 타겟 사이에 인터셉팅 프록시로 작동하면서 웹 앱과 API를 패시브 및 액티브 스캔하여 취약점을 찾는다. 스파이더/크롤러, 퍼저, 액티브 스캐너, WebSocket 지원, REST/GraphQL/SOAP API 스캔을 결합한다 — GUI를 통해 대화형으로 사용하거나 CI/CD를 위해 CLI와 API를 통해 헤드리스로 사용할 수 있다.

설치

플랫폼명령어
Docker (CI 권장)docker pull zaproxy/zap-stable
Debian/UbuntuZAP 사이트에서 인스톨러 다운로드
macOS (Homebrew)brew install --cask zap
크로스 플랫폼크로스 플랫폼 패키지 다운로드 (Java 필요)
확인zap.sh -version (또는 Windows에서는 zap.bat)

실행 모드

명령어설명
zap.sh데스크톱 GUI 시작
zap.sh -daemon -host 0.0.0.0 -port 8080API를 사용하는 헤드리스 데몬
zap.sh -cmd -quickurl https://target -quickout report.html보고서로 원샷 빠른 스캔
docker run -t zaproxy/zap-stable zap-baseline.py -t https://targetDocker에서 기본 (패시브) 스캔

자동화 프레임워크 (스크립트된 스캔)

ZAP의 패키지된 스캔 스크립트는 CI 통합으로 가장 빠른 경로다.

스크립트목적
zap-baseline.py -t URL패시브 스캔 + 스파이더 (빠름, CI-안전)
zap-full-scan.py -t URL기본 + 액티브 공격 스캔
zap-api-scan.py -t openapi.json -f openapiOpenAPI/SOAP/GraphQL 정의에서 API 스캔
-r report.htmlHTML 보고서 작성
-J report.jsonJSON 보고서 작성
-c config.conf알림 필터 / 규칙 설정
# CI-친화적 기본 스캔, 발견 사항에서 빌드 실패
docker run -t zaproxy/zap-stable zap-baseline.py \
  -t https://staging.example.com -r zap-report.html

핵심 구성 요소

구성 요소역할
ProxyHTTP(S) 트래픽 인터셉트/검사/수정
Spider앱을 크롤링하여 URL 발견
Ajax Spider실제 브라우저를 통해 JS-집약적 앱 크롤링
Passive Scan관찰된 트래픽에서 문제 플래그 (공격 없음)
Active Scan공격 페이로드를 전송하여 취약점 발견
Fuzzer요청에 페이로드 리스트 삽입

프록시 설정

단계방법
브라우저 프록시 설정브라우저를 localhost:8080으로 지정
ZAP CA 인증서 설치HTTPS를 인터셉트하기 위해 ZAP의 루트 인증서 가져오기
수동 탐색앱 브라우징; ZAP가 트래픽 기록
그 후 스캔발견된 트리 스파이더 + 액티브 스캔

API (자동화)

데몬이 실행 중이면, HTTP 위에서 ZAP를 제어한다.

엔드포인트작업
/JSON/spider/action/scan/?url=...스파이더 시작
/JSON/ascan/action/scan/?url=...액티브 스캔 시작
/JSON/core/view/alerts/발견 사항 검색
/OTHER/core/other/htmlreport/HTML 보고서 생성
API 키요청과 함께 apikey=... 전달

인증 및 컨텍스트

개념사용
Context타겟 범위 및 인증 정의
Session mgmt쿠키/HTTP/스크립트-기반 세션
Authentication폼, JSON, HTTP, 또는 스크립트 인증
Users인증된 사용자로 테스트

일반적인 워크플로우

# CI의 스테이징에 대한 빠른 패시브 기본 테스트
zap-baseline.py -t https://staging.example.com -r report.html

# OpenAPI 스펙에서 REST API 스캔
zap-api-scan.py -t https://api.example.com/openapi.json -f openapi -J out.json

# 전체 액티브 스캔 (승인된 타겟만)
zap-full-scan.py -t https://target.example.com -r full.html

ZAP vs 다른 DAST 도구

측면ZAPNucleiBurp SuiteNikto
모델Proxy + crawl + active DASTTemplate CVE scannerProxy + manual + scannerServer misconfig scanner
비용무료/오픈소스무료/오픈소스무료 + 유료 Pro무료
API/CI강함 (API + 스크립트)강함Pro 확장CLI
최고풀 앱 DAST, CI빠른 알려진 CVE 체크수동 펜테스팅빠른 서버 체크

일반적인 페어링: 빠른 알려진 CVE 감지를 위한 Nuclei + 크롤링 애플리케이션 수준 DAST를 위한 ZAP.

자료