Burp Suite REST API(Burp 2.0 beta)

최근에 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의 새로운 기능들이나 즐겨야겠네요 :)