DastardlyとTeamCityの連携

DastardlyとTeamCityを連携できます。これにより、既存のCI/CDパイプラインのステージとして、DastardlyのWeb脆弱性スキャンを実行できます。

このページでは、簡単な(サンプルの)TeamCity CI/CDパイプラインとDastardlyを連携する方法を説明します。この手順は、TeamCity 2022.04.4でテストされています。

TeamCityエージェントの要件

TeamCityエージェントは、Dockerコンテナを実行するように設定されている必要があります。

DastardlyをTeamCityのCI/CDパイプラインで実行するために、TeamCityのデフォルト以外のプラグインは必要ありません。

Dastardlyスキャンを実行するために必要なマシンスペックは、Dastardlyのシステム要件を参照してください。

設定ファイルの作成

  1. settings.ktsファイルが格納されているリポジトリに、TeamCityからアクセスする設定を行います。

  2. settings.ktsファイルに次の内容を追加します:

    import jetbrains.buildServer.configs.kotlin.* import jetbrains.buildServer.configs.kotlin.buildSteps.ScriptBuildStep import jetbrains.buildServer.configs.kotlin.buildSteps.script version = "2022.04" project { description = "Contains all other projects" buildType(DastardlyScan) } object DastardlyScan : BuildType({ name = "Dastardly from Burp Suite Scan" vcs { cleanCheckout = true } features { feature { type = "xml-report-plugin" param("xmlReportParsing.reportType", "junit") param("xmlReportParsing.reportDirs", "+:**/reports/**.xml") } } steps { script { name = "Dastardly from Burp Suite Scan" dockerImage = "public.ecr.aws/portswigger/dastardly:latest" dockerPull = true dockerImagePlatform = ScriptBuildStep.ImagePlatform.Linux dockerRunParameters = """ -e DASTARDLY_TARGET_URL=https://ginandjuice.shop/ -e DASTARDLY_OUTPUT_FILE=%teamcity.build.checkoutDir%/reports/dastardly-report.xml """.trimIndent() scriptContent = """ mkdir -p %system.teamcity.build.workingDir%/reports docker-entrypoint.sh dastardly """.trimIndent() } } artifactRules = """ reports/** => reports """.trimIndent() })

DASTARDLY_TARGET_URLには、スキャンするアプリケーションの開始URLを指定します。

この例では、DASTARDLY_TARGET_URLhttps://ginandjuice.shop/が設定されています - これはWeb脆弱性スキャナをテストするために設計された、意図的に脆弱性を作り込んだWebアプリケーションです。

次にパイプラインが実行されるとき、DastardlyはDASTARDLY_TARGET_URLで設定したアプリケーションをスキャンします。

TeamCityパイプラインの設定

  1. TeamCityのメインインタフェースで、New project...クリックし、プロジェクト階層内の適切な場所を選択します。

  2. 手動が選択されているか確認します。

  3. プロジェクトに名前を付けます。説明も追加できます。

  4. 作成をクリックします。

    TeamCityプロジェクトの新規作成。
  5. バージョン対応設定をクリックします。

  6. 同期を有効を選択します。

  7. プロジェクト設定VCSルートで、VCSルート作成をクリックするか、プロジェクト設定VCSルートドロップダウンから既存のオプションを選択します。

  8. 設定フォーマットKotlinに設定されているか確認します。

  9. 適用をクリックします。

  10. 既存のプロジェクト設定を検知ポップアップで、VCSから設定をインポートをクリックします。

    TeamCityでVCSから設定をインポート。

TeamCityでDastardlyのスキャン結果を表示

  1. Dastardlyを含むTeamCityプロジェクトを実行し、スキャンが完了するのを待ちます。スキャンは最大で10分間実行されます。

  2. TeamCityのメインインタフェースから、Dastardlyを含むプロジェクトをクリックします。

  3. Dastardly from Burp Suite Scanで、スキャンを含むビルドをクリックします。

  4. テストをクリックします。ここで、失敗したテストを確認できます。失敗したテストをクリックすると、その詳細が表示されます。

改善アドバイス

Dastardlyが発見したセキュリティ問題に対する改善アドバイスは、Stacktraceで確認できます。ここには、無償のWebセキュリティアカデミーリソースの、関連セクションへのリンクもあります。こちらでWebセキュリティの脆弱性についてさらに詳しく説明しています。

TeamCityで示されるDastardlyのセキュリティ問題改善アドバイス。
Dastardlyが発見したセキュリティ問題に対する改善アドバイス。

証拠

Dastardlyが発見したセキュリティ問題の証拠は、Stacktraceで見られます。この証拠には、問題を見つけるためにDastardlyが送信したリクエストと、アプリケーションから送信されたレスポンスが含まれます。

TeamCityで表示される、Dastardlyのセキュリティ問題の証拠
Dastardlyが発見したセキュリティ問題の証拠。