최근에 Burp suite 2.0 Beta 버전이 공개되었습니다. 혹여나 큰 변화가 있을까 공식 블로그랑 주변 반응?(기껏해야 트위터..) 좀 살펴본 이후 burp pro 2.0 으로 업그레이드 하였죠.
2.0의 여러가지 기능 중 가장 눈에 들어온 REST API에 대한 이야기를 잠깐 할까 합니다.
REST API of Burp suite 2.0
REST API를 지원해준다는 이야기는 곧 Burp suite가 분석툴로써만이 아닌 범용적인 스캐너~이를 활용한 도구로도 진화할 수 있다는 말입니다. Burp suite의 REST API는 어떤것들을 지원하는지가 가장 궁금했습니다. 우선 현재 제공하는 기능을 보면 아래와 같습니다.
- Scanning
- Get Scan data
- Get Rule(issues)
무엇을 만드냐에 따라 다르겠지만, 스캐너으로써 기능을 이용한다면 스캔할 수 있고, 정보를 가져올 수 있기 때문에 어느정도 사용이 가능합니다.
다만 테스트해보니 아직 모자란감이 여러가지가 있는데, 가장 심각한건 스캔 데이터를 가져올 때 결과 정보를 얻어올 수 없습니다.(현재 스캔 진행 상태 정도? 만 가능)
결국은 결과리포트를 재 활용할 수 있는게 아닌, 스캔을 REST로 쏘고 Burp에서 확인해야하는 상태인거죠.
다시 테스트해보니 결과정보도 가져올 수 있습니다. 다만 모든 결과(이슈)를 가져오진 못합니다. 나름대로 기준이나 GET요청 시 같이 전달하는 Param 차이에서 나타난 결과일 것 같네요.
[ 스캔등록 ]
POST /scan HTTP/1.1
Host: 127.0.0.1:1337
{
"urls":["https://www.hahwul.com"]
}
Response로 Task_id를 받습니다
Tast Id는 Burp suite dashboard에서 보이는 task id 입니다.
결과 가져오기
GET /scan/[task_id]
Host: 127.0.0.1:1337
{
"task_id": "3",
"scan_status": "crawling",
"scan_metrics": {
"crawl_requests_made": 52,
"crawl_requests_queued": 0,
"audit_queue_items_completed": 0,
"audit_queue_items_waiting": 0,
"audit_requests_made": 0,
"audit_network_errors": 0,
"issue_events": 0
},
"message": "",
"issue_events": []
}
How to use?
proxy options > REST API 항목이 있습니다. 기본 포트는 1337로 잡혀있고 Enable 시 바로 활성화됩니다. API-Key 기반 인증을 걸어서 접근제어를 할수도 있습니다.
Swagger UI 같은 테스팅 도구를 기본적으로 지원해주기 떄문에 1337 포트에서 바로 테스트도 할 수 있습니다.
Conclusion
아직은 Beta 버전이라 기능도 미흡한 것 같습니다만, REST를 지원해준다는 점에선 참 맘에드는 업그레이드네요.
지인들과도 이야기에서도 비슷한 의견으로 좁혀졌는데 결국은 추후에 API Spec이 좀 더 나오면 명확하게 무엇을 할 수 있을지 더 보일 것 같다는 이야기가 다수입니다. 그전까진 2.0의 새로운 기능들이나 즐겨야겠네요 :)