AWS Security Agent のペネトレーションテストを OWASP Juice Shop に実行したら CTF のチャレンジを解き始めた

AWS Security Agent のペネトレーションテストを OWASP Juice Shop に実行したら CTF のチャレンジを解き始めた

2026.05.19

いわさです。

2026年3月に AWS Security Agent のオンデマンドペネトレーションテスト機能が GA になりました。

https://dev.classmethod.jp/articles/aws-security-agent-ondemand-penetration/

GA した際に簡単な Web アプリで試してみたのですが、途中でエラーになってしまいうまく完了しませんでした。
今回はもう少ししっかりした Web アプリケーションを対象にペネトレーションテストを実行してみたいと思い、OWASP Juice Shop を対象に試してみました。

https://dev.classmethod.jp/articles/owasp-juice-shop-2/

OWASP Juice Shop は OWASP が提供する意図的に脆弱性を含んだ Web アプリケーションで、Node.js + Angular で構築された EC サイト風のアプリです。

今回こちらを確認してみたので紹介します。

実行してみる

EC2 に Docker で Juice Shop をデプロイし、Route 53 でドメインを設定済みです。
Security Agent 側も Agent Space の作成とドメイン検証を済ませて、ペネトレーションテストを作成しています。

0FFD8123-C965-4F54-8172-96FF47B57C05_1_105_c.jpeg

0E01981B-824D-4FE2-8794-9FB8A4A403C1.png

今回は認証情報なし(未ログイン状態)でテストを実行しました。
「Start run」を押すとペネトレーションテストが開始されます。

285E8CD7-8ECB-4129-ABF2-ED194FDCD257.png

早速、ペネトレーションテスト実行の様子を観察してみましょう。

実行中の様子

画面上部に Preflight → Static analysis → Pentest → Finalizing の4フェーズで進行状況が表示されます。
Static analysys フェーズでは、まず Network scanner フェーズでエンドポイントのスキャンとクローリングが行われます。

62368A3C-99BF-434D-B3E4-9718E9641056_1_105_c.jpeg

Pentest フェーズでは様々なタスクが並列で動き始めました。
Crawler タスクのログを見ると、エージェントが Python コードを書いて実際にリクエストを送信しているのが見えます。

5E598790-285A-4254-9D5F-9940FF620834_1_105_c.jpeg

Static analysis が完了すると Pentest フェーズに入り、タスクがどんどん増えていきます。

DB2B3794-5DAC-47FD-8DE0-75B12B4832F1.png

クロスサイトスクリプティング、IDOR(安全でない直接オブジェクト参照)、パストラバーサル、権限昇格、コードインジェクションなど、様々な攻撃カテゴリのタスクが実行されています。

B858DEDC-565A-4159-B2BC-9E642EA4ED60_1_105_c.jpeg

タスクが増えていくにつれて実行時間も伸びていきます。
料金ページを見ると $50/task-hour なので、これ結構いくんじゃないか...?と心配になってきました。
お面がちらつきはじめました。

CTF 解き始めてた

テスト実行中にふと Juice Shop の画面を開いてみたら、こうなっていました。

F8A9B9F3-7622-4332-A31A-71BEC9BE7149.png

緑のバナーが大量に表示されている。左下と右下からクラッカーみたいなエフェクトも出ている。
「You successfully solved a challenge」...CTF のチャレンジが解かれている。

Juice Shop は脆弱性を突くとチャレンジクリアになる CTF(Capture The Flag)形式になっていたんですね。
Security Agent が自律的に攻撃を成功させているので、結果として CTF のチャレンジがどんどん解かれていったわけです。
これは完全に想定外だったので笑ってしまった。

スコアボードを確認してみると、173問中21問(19%)がクリアされていました。

78711C4A-3A20-4AFA-A87C-DFFAAACE9196_1_105_c.jpeg

解かれたチャレンジには以下のようなものがありました:

  • Confidential Document(機密ドキュメントへのアクセス)
  • Error Handling(エラーハンドリングの不備)
  • Exposed Metrics(メトリクスエンドポイントの発見)
  • Password Strength(管理者パスワードでのログイン)
  • Login Admin(管理者アカウントへのログイン)
  • XXE Data Access(/etc/passwd の取得)
  • Forged Review(他ユーザーのレビュー改ざん)
  • Deprecated Interface(適切にシャットダウンされていない非推奨の B2B インターフェースの利用)
  • Security Policy(セキュリティポリシーの発見)

このままどこまで解いてくれるのか観察したかったのですが、19% ということはあと5倍くらい時間がかかる可能性がある。
実行時間の積み上がり具合を見て、これ以上は料金が怖いので約55分経過した時点で中断しました。

E675A757-3D85-4C39-90C9-7CAB6681318C_1_105_c.jpeg

検出結果

中断時点で 5 件の脆弱性が検出されていました。

91CAA5F1-4EB2-42ED-82EF-7F156EB7A486_1_105_c.jpeg

Severity 件数
Critical 1
High 1
Medium 3

Risk Types としては Insecure Direct Object Reference(2件)、Privilege Escalation(1件)、Path Traversal(1件)、Cross Site Scripting(1件)、Local File Inclusion(1件)が検出されています。

「Application overview by AWS Security Agent」には、エージェントが書いた Executive Summary が表示されます。

AE786832-06AF-4A04-9C3F-C905B1C0E87A.png

The security assessment of hogejuiceshop.tak1wa.com identified five confirmed vulnerabilities across critical, high, and medium severity levels from a total of 64 discovered endpoints.

これによると、64 エンドポイントを自動発見して、そこから5件の脆弱性を確認したとのこと。
「Discovered endpoints by AWS Security Agent」セクションでは、発見されたエンドポイントの一覧も確認できます。
中断しなければもっと検出されていた可能性がありますね。

9897F690-AC9E-4A8F-903A-64E5A6F08DB2.png

中断時点で最も深刻な Finding は「Vertical Privilege Escalation via Mass Assignment on User Registration」(Critical、CVSS 10.0)です。

ユーザー登録 API(POST /api/Users)のリクエストボディに "role":"admin" を追加するだけで管理者アカウントが作成できてしまうという脆弱性です。

各 Finding には「Resolve finding」「Remediate code」ボタンがあり、GitHub リポジトリと連携していれば修正 PR を自動作成してくれるみたいです。

PDF レポート

「Generate report」ボタンから PDF レポートをダウンロードできます。
レポート機能については以前の記事でも紹介しています。

https://dev.classmethod.jp/articles/aws-security-agent-generates-customizable/

前回はテスト自体がエラーで失敗していたのでレポートの中身が薄かったのですが、今回はしっかりとした EC サイトに対してテストできたのでレポートも充実しています。

BCCBEC4B-1A2D-4FE9-958C-D7F77812490C.png

レポートは以下の構成になっています:

  • Executive Summary
  • Scope
  • Methodology(4フェーズの説明、テストアプローチ)
  • Tasks Executed(実行したテストタスク一覧と Completed/Aborted ステータス)
  • Detailed Findings(各脆弱性の詳細、再現手順、CVSS スコア、エビデンス)

9731154A-418D-432C-9EC5-4458BC14DC07.png

Tasks Executed を見ると、12種類のテストカテゴリが実行されていて、5つが Completed、7つが Aborted でした。
今回途中で止めたので Aborted が多いですが、最後まで実行すればもっと検出されていた可能性があります。

Detailed Findings では各脆弱性の再現手順が Baseline → 攻撃 → ログイン → 管理者 API アクセス確認、のようにステップで記述されています。

B6B40C4E-A421-48AF-88A7-5E96EB230380.png

CVSS ベクトルや Evidence の記述も含め、かなり詳細なレポートになっていますね。

料金が...

AWS Security Agent のペネトレーションテストは $50/task-hour(秒単位課金)です。

https://aws.amazon.com/security-agent/pricing/

ここで注意なのが、「task-hour」は実行時間(Duration)とは異なるという点です。
複数のタスクが並列実行されるため、実行時間よりも task-hours のほうが大きくなります。

公式の料金ページによると以下のように説明されています。

A task represents active work performed by AWS Security Agent during a penetration test. Task-hours reflect the total cumulative time across all security testing tasks combined. Because multiple tasks run concurrently during a pentest, the total billable task-hours will typically exceed the actual run time or test duration you observe.

今回の実行では Duration(実行時間)が 54分41秒、Task hours が 3.66 hours だったので、想定料金は $183 です。
複数タスクが並列で動くので、実行時間よりも task-hours のほうが大きくなる点は覚えておきたい。

公式の料金例では EC サイト規模で 24 task-hours($1,200)、エンタープライズ SaaS で 31 task-hours($1,563)という見積もりになっています。
今回は中断したので $183 で済みましたが、最後まで実行していたらもっといっていたかもしれません。

今回は中断したので Example 1 に近い規模感ですが、Juice Shop は EC サイトなので最後まで実行していたら Example 2($1,200)くらいになっていたかもしれません。
EC サイト規模のアプリケーションだと 24 task-hours くらい見ておいたほうがよさそうです。

ただし、後日確認してみたところ今回は無料枠が適用されていたみたいです。

CBE98483-BE0B-447F-8632-EF43CF1E9BE0_4_5005_c

まだ組織内で400時間を超過してなかったみたいだ。

Additionally, new AWS Security Agent customers receive a 2-month free trial starting with their first penetration test run. Each trial month includes up to 400 pentesting task-hours.

https://aws.amazon.com/security-agent/pricing/

CloudTrail ログ

想定よりもコストがかかってしまって「しまったなぁ」と思っていたところ、亮さんから次のアドバイスを頂きました。

https://x.com/suzryo/status/2055520227874766956?s=20

確かに CloudTrail の情報は見たいかもなと思いました。
例えば、一発で結構な料金が発生しちゃうので SCP で禁止したいという組織も出てくるかもしれない。ということで CloudTrail も確認してみましょう。

結論から言うと、Security Agent の各操作は CloudTrail に記録されます。なので SCP や IAM で制御が可能です。
イベントソースは securityagent.amazonaws.com です。

ペネトレーションテストの開始や中断の証跡が残るので、意図しない高額課金が発生した場合などにサポートへ提示する材料にもなりそうです。

今回の操作での主要なアクションを時系列で並べると以下のようになります。

アクション 実行者 内容
CreateAgentSpace hoge-user Agent Space 作成
CreateTargetDomain hoge-user ドメイン登録
VerifyTargetDomain hoge-user ドメイン検証
CreatePentest securityagent-user-* テスト作成
StartPentestJob securityagent-user-* テスト実行開始
ListFindings securityagent-user-* 結果取得(ポーリング)
BatchGetFindings securityagent-user-* 結果詳細取得

StartPentestJob のイベント詳細を見ると、pentestIdagentSpaceIdstatus: IN_PROGRESS などが記録されています。

{
  "eventName": "StartPentestJob",
  "eventSource": "securityagent.amazonaws.com",
  "requestParameters": {
    "pentestId": "pt-44e6fe5b-b34b-47f1-8859-9b663aec840c",
    "agentSpaceId": "as-43cea067-9ad5-4cf5-bb1b-611849cb5df7"
  },
  "responseElements": {
    "pentestJobId": "pj-958abf58-80a7-4877-9c20-5ca4f16ea1c9",
    "status": "IN_PROGRESS",
    "title": "hoge0516juice"
  }
}

SCP で securityagent:StartPentestJobsecurityagent:CreatePentest を Deny すれば、特定のアカウントやユーザーでのペネトレーションテストの実行を制限できそうです。

さいごに

本日は AWS Security Agent のペネトレーションテスト機能を OWASP Juice Shop に対して実行してみました。

放置していると CTF のチャレンジが勝手にどんどん解かれて、クラッターのエフェクトが発生し続けているのはおもしろかった。
コストを気にしなくて良ければ、Security Agent がどこまでチャレンジをクリアしてくれるか見たかったですね。

料金面については、今回は中断時点で 3.66 task-hours(約$183)でした。
全体の実行時間は1時間弱で中断したのですが、タスクが並列実行されてそのエージェント稼働時間合計がタスク時間になるのでこんな感じでした。
思ってたよりも料金ページ例くらいのコスト感になりそうだなという所感でした。

この記事をシェアする

AWSのお困り事はクラスメソッドへ

関連記事