ZAP OAST 미리 구경하기 (for OOB)

ZAP developers에 컨텐츠 하나가 공유되었는데요 바로 OAST에 대한 내용이였습니다. OAST는 이번에 ZAP core team(akshath)에서 신규로 개발중인 AddOn입니다. 기존 zap callback 기능에 burp suite의 collaborator 와 같이 out-of-band를 쉽게 테스트할 수 있도록 지원해주는 AddOn입니다.

그럼 ZAP OAST에 대해 알아보죠 🚀

ZAP OAST

OAST는 BurpSuite의 collaborator, project-discovery의 interactsh 같이 OOB 테스트를 위해 DNS Query, HTTP Request 등이 발생하면 사용자에게 어떤 요청이 발생했는지 알려주는 도구입니다.

아직 개발 단계로, 위 두 도구처럼 사용자에게 테스팅을 위한 도메인을 할당해주는 도구까지 구현될지, 또는 TukTuk 같이 사용자가 자신의 환경에 구성하고 사용할 수 있는 형태인지는 잘 모르겠으나, ZAP callback을 유지하고 추가되는 것을 보면 전자이지 않을까 싶습니다.

by https://ricekot.com/2021/zap-oast-basic-design-decisions/

다만 ZAP OAST 자체가 완전 신규로 구성되는건 아니고, 아마 백엔드의 경우 BOAST 기반으로 구성하고, ZAP에서 연동하여 사용하는 형태로 동작하는 것 같습니다. 그렇다면 사용자가 직접 구성해야할 가능성도 있겠네요.

어쨌던 기존 callback의 경우 http request 만 받고 처리할 수 있었는데, BOAST 기반으로 ZAP OAST가 릴리즈된다면 기존 HTTP/HTTPS 부터 DNS, SMTP 등 여러 프로토콜을 기반으로도 테스트가 가능해져서 Burp Collaborator 와 비슷하게 사용할 수 있지 않을까 싶습니다.

Take a sneak peek OAST

물론 확장 기능을 빌드하고 개발 버전의 ZAP에서 로드하면 사용해볼 수 있습니다. 마침 저도 올해 안에 zap-extension과 zaproxy에서 둘다 Contribute 하기 위해 로컬에 빌드 환경이 구성되어 있던 상태였는데요. 겸사겸사 구경이나 해보려고 합니다.

TLDR

결국 현재 addOn은 빌드/로드가 가능하지만, ZAP 개발 버전의 Options에서 정상적으로 로드되진 않습니다. 이건 제가 개발자한테 물어보고 구경할 수 있으면 글 수정해두겠습니다 :D (아래는 그냥 삽질)

Build OAST

지난번에 PR 보내고 오랜만에 pull 했더니 엄청 많네요..

zap-extensions [master] git pull -v
POST git-upload-pack (144 bytes)
POST git-upload-pack (958 bytes)
remote: Enumerating objects: 3064, done.
remote: Counting objects: 100% (1917/1917), done.
remote: Compressing objects: 100% (658/658), done.
remote: Total 3064 (delta 883), reused 1757 (delta 786), pack-reused 1147
오브젝트를 받는 중: 100% (3064/3064), 1.83 MiB | 2.66 MiB/s, 완료.
델타를 알아내는 중: 100% (1005/1005), 로컬 오브젝트 283개 마침.

각 addOn은 addOns 하위 디렉토리에 존재합니다. OAST도 여기에 있습니다.

├── addOns
│   ├── oast

그럼 OAST 빌드해서 ZAP에 로드해볼까요? ZAP은 gradle로 관리되며 :addOns:<addOn이름>:command 형태로 인자값을 주어 빌드할 수 있습니다.

./gradlew :addOns:oast:build

ZAP addOn 추가해보시면 아시겠지만 빌드 진짜 길어요.. 난 이래서 자바가 싫습니다.

빌드가 완료되면 addOns/oast/build/zapAddOn/bin/ 디렉토리 하위에 .zap 파일로 addOn이 생성됩니다.

fzf
addOns/oast/build/zapAddOn/bin/oast-alpha-0.0.1.zap

경로가 복잡하니 fzf로 찾는게 편해요.

Load OAST in ZAP

메뉴의 File > Load Add-on file 또는 Command + l 단축키를 통해 addOn을 로드합니다.

경로는 아까 빌드한 경로

로드 시 정상적으로 잘 로드됩니다.

Where is OAST?

그러나, Options에선 찾아볼 수 없습니다. 이는 제가 방금 릴리즈 버전에서 로드를 했는데 단순히 addOn 만의 기능이 아닌 ZAP Core와 연동이 있는 부분이라 바로 찾을 수 없었습니다. 이후에 제가 다시 zaproxy 개발 빌드로 진행해봤지만 안나타나네요 😭

아 여기도 로드가 잘 되는데... 메뉴가 없단 말이지

BOAST

https://github.com/marcoagner/boast 와 연동되도록, 결국 BOAST는 직접 올려야할 가능성도 있어서 미리 정리해둡니다.

Install with build

git clone https://github.com/marcoagner/boast
cd boast
go mod download
go build

Install go-get

go.mod 파일을 보면 module 주소를 별도로 사용합니다. 그래서 아래와 같은 형태로 go get 할 수 있습니다.

go get agner.io/boast

When Release?

현재 initial commit의 경우 main branch에 merge 됬기 때문에 아마.. 길지 않은 시간에 추가될 것 같단 생각을 했지만, OAST 관련 PR 이 2.11.0 Milestone으로 잡힌걸 봐선 다음 정식 릴리즈일 것 같네요. (ZAP 릴리즈 주기가…..)

References