LIFULL Advent Calendar 2022 23日目の記事です
LIFULL に新卒入社し、もうすぐ4年目になるヒラノです。
普段はセキュリティエンジニアとして、セキュリティ/テスト自動化に関する推進、支援などを中心に取り組んでいます。
15日目の記事 では Dastardly を GitHub 上で動かしていましたが、今回はローカル(WSL2)上で動かしてみようと思います。
What is Dastardly?
Dastardly は、無料で利用できる CI/CD パイプライン用の Web アプリケーションセキュリティ診断ツールです。
開発元は Burp Suite でおなじみの PortSwigger で、重要な7つの脆弱性に関して10分以内で見つけることができます。
- Cross-site scripting (XSS) (reflected)
- Cross-origin resource sharing (CORS) issues
- Vulnerable JavaScript dependency
- Content type is not specified
- Multiple content types specified
- HTML does not specify charset
- Duplicate cookies set
Jenkins, GitHub Actions, TeamCity といった有名な CI/CD プラットフォームが対応しています。
また、Docker を実行できる任意のプラットフォームでも動作します。
WSL2 上で Dastardly を実行する
以降の手順は 公式ドキュメント に沿って行います。
任意のプラットフォームで Dastardly を実行するには、以下のようなコマンドを入力します。
docker run --user $(id -u) --rm -v $(pwd):/dastardly -e \
DASTARDLY_TARGET_URL=https://ginandjuice.shop -e \
DASTARDLY_OUTPUT_FILE=/dastardly/dastardly-report.xml \
public.ecr.aws/portswigger/dastardly:latest
DASTARDLY_TARGET_URL : 診断対象のURL
DASTARDLY_OUTPUT_FILE : 診断レポート(JUnit XML)の出力パス及びファイル名
実行中は以下のような画面が表示され、最後に検出した脆弱性のタイプ及び重大度が表示されます。
2022-12-20 23:35:10 INFO dastardly.StartDastardly - Using Java version 17.0.4
2022-12-20 23:35:11 INFO bsee.BurpProcess.scan.scan-1 - Dec 20, 2022 11:35:11 PM java.util.prefs.FileSystemPreferences$1 run
2022-12-20 23:35:11 INFO bsee.BurpProcess.scan.scan-1 - INFO: Created user preferences directory.
2022-12-20 23:35:15 INFO bsee.BurpProcess.scan.scan-1 - 2022-12-20 11:35:15: REST API running on http://localhost:43539/
〜〜〜 中略 〜〜〜
2022-12-20 23:42:50 INFO dastardly.EventLogPrinter - Dec 20 2022 23:42:48 INFORMATION Audit finished.
2022-12-20 23:42:50 ERROR dastardly.ScanFinishedHandler - Failing build as scanner identified issue(s) with severity higher than "INFO":
2022-12-20 23:42:50 ERROR dastardly.ScanFinishedHandler - Path: /catalog/search/2 Issue Type: Cross-site scripting (reflected) Severity: HIGH
2022-12-20 23:42:50 ERROR dastardly.ScanFinishedHandler - Path: /catalog/search/3 Issue Type: Cross-site scripting (reflected) Severity: HIGH
2022-12-20 23:42:50 ERROR dastardly.ScanFinishedHandler - Path: /catalog/search/4 Issue Type: Cross-site scripting (reflected) Severity: HIGH
2022-12-20 23:42:51 INFO bsee.BurpProcess.scan.scan-1 - Deleting temporary files - please wait ... done.
最後に出力された XML を確認すると、検出したホスト名&パス、脆弱性の詳細などより詳しい情報が分かります。
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<testsuites failures="4" name="Dastardly scan results - have a vulnerability-free day!" tests="50">
<testsuite failures="0" name="https://ginandjuice.shop:443/" tests="1">
<testcase name="No issues were identified"/>
</testsuite>
<testsuite failures="0" name="https://ginandjuice.shop:443/?search=699110" tests="1">
<testcase name="No issues were identified"/>
</testsuite>
〜〜〜 中略 〜〜〜
<testsuite failures="1" name="https://ginandjuice.shop:443/catalog/product-search-results/1" tests="1">
<testcase name="Cross-site scripting (reflected)">
<failure message="Cross-site scripting (reflected) found at https://ginandjuice.shop/catalog/product-search-results/1" type="Info"><