アプリケーションのWebアプリケーションスキャンを自動化するために、VMWare開発のBurp API( https://github.com/vmware/burp-rest-api )を使用しています。たとえば、localhostのポート85をテストしようとした場合、プロセスは次のようになります。
# Add the target to scope
curl -X PUT --header 'Content-Type: application/json' --header 'Accept: application/json' 'http://localhost:8080/burp/target/scope?url=http://127.0.0.1:85'
# Spider the target
curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' 'http://localhost:8080/burp/spider?baseUrl=http://127.0.0.1:85'
# Scan the target
curl -X POST --header 'Content-Type: application/json' --header 'Accept: */*' 'http://localhost:8080/burp/scanner/scans/active?baseUrl=http://127.0.0.1:85'
# Get Status of Scan
curl -X GET --header 'Accept: application/json' 'http://localhost:8080/burp/scanner/status'
# Create HTML Report
curl -X GET --header 'Accept: application/octet-stream' 'http://localhost:8080/burp/report?urlPrefix=http://127.0.0.1:85&reportType=HTML' -o testReport.html
APIを介してスパイダープロセスの前/最中にログインする方法はありますか?そのため、スパイダーは認証されたページもクロールしますか?
#Pass the user/project config json file
curl -X POST "http://localhost:8080/burp/configuration" -H "accept: */*" -H "Content-Type: application/json" -d "\"string\""
project_config jsonファイルまたは文字列の次の行を変更して、フォームベースのログイン/認証に基づいてアプリケーションをスパイダーします。
...
...
"spider":
{ "application_login":
{ "mode": "automatic",
"password": " ",
"username": " "
},
"crawler":
...
...
注:project_config jsonの例はAPIドキュメントにあります
PortSwiggerの連中がコメントで述べたように、APIを介してスキャンをトリガーする場合は、新しい公式のげっぷAPIを使用することをお勧めします。ただし、Seleniumベースの自動化をセットアップしている場合の代替方法は次のとおりです。
この場合、機能テストケースの実行中に、げっぷスキャナーを使用してセキュリティスキャンを実行できます。あなたがする必要があるのは、ゲッププロキシを指すようにターゲットブラウザを設定することだけです。この場合、機能テストケースが認証を処理し、さらに、より適切なカバレッジを提供します。
私の経験では、アクティブスキャンが機能テストケースに干渉する可能性があるため、Burpスキャナーをパッシブスキャンモードで実行している場合にこれが最もよく機能します。実行が完了すると、APIを使用してレポートを取得できます。 BurpはJenkinsのようなツールをあまりサポートしていないため、このアプローチはBurpをCI/CDパイプラインに統合するために使用できます。