최근에  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 포트에서 바로 테스트도 할 수 있습니다. (그래봤자 insomnia나 swagger가 더 편한건 안비밀)

Conclusion

아직은 Beta 버전이라 기능도 미흡한 것 같습니다만, REST를 지원해준다는 점에선 참 맘에드는 업그레이드네요. (PostSwigger가 무슨 바람이 들었는지, 요 근래 변화를 자주 시도하는 것 같습니다)

지인들과도 이야기에서도 비슷한 의견으로 좁혀졌는데 결국은 추후에 API Spec이 좀 더 나오면 명확하게 무엇을 할 수 있을지 더 보일 것 같다는 이야기가 다수입니다. 그전까진 2.0의 새로운 기능들이나 즐겨야겠네요 :)

(대시보드도 생각보단 편한듯해요..)

댓글 1개:

  1. "스캔정보(결과) 가져오기" 관련해서 이슈 정보는 못가져오는줄 알았는데, 다시 확인해보니 같이 찍혀서 오네요.

    GET /scan/[task_id]
    Host: 127.0.0.1:1337

    다만, 모든 이슈정보가 오는게 아닌 것 같아, 테스트가 좀 더 필요할 것 같습니다 :)

    답글삭제