ZAP Scanning to Swagger Documents

OpenAPI in ZAP

ZAP은 단순히 url 리스트를 import 하는 기능 이외에도 GraphQL endpoint나 OpenAPI를 import 하는 기능을 가지고 있습니다. 여기서 OpenAPI Import를 활용하면 보통 API Spec에 많이 사용되는 SwaggerUI의 doc 데이터를 가지고 Example 코드에 맞게 API 데이터를 로드할 수 있습니다.

Swagger for testing

테스팅을 위해 swagger를 하나 준비합시다. 전 그냥 dalfox의 swagger를 사용할 예정이에요.

dalfox server --port 8844
http://frozen.hahwul.com:8844/swagger/index.html

여기서 doc.json 경로로 접근하면 swagger에서 사용하는 JSON 포맷의 Documents 정보를 얻을 수 있습니다. 저의 경우는 이 경로가 되겠네요.

http://frozen.hahwul.com:8844/swagger/doc.json

Import API swagger documents

이제 import > Import an OpenAPI Definition From a URL 메뉴를 통해 아까 doc.json 파일을 불러옵시다.

불러오기가 완료되면 Sites에 추가된 걸 볼 수 있고, doc.json에 명시된 정보(Spec, Example 등)에 따라서 미리 쿼리 데이터가 만들어져 있게 됩니다.

Req/Res 보시면 로드 당시 이미 정의된 패턴으로 한번 요청하게 됩니다.

이 상태에서 바로 Active Scan을 진행하여 쉽게 ZAP에서 swagger 기반의 API 페이지를 스캐닝할 수 있습니다.