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

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

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

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

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

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

Load OAST in ZAP

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

1417 경로는 아까 빌드한 경로

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

Where is OAST?

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

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

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 릴리즈 주기가…..)

1414

References