
CVE-2020-3580用の自動化されたXSS検証パイプライン。Shodanベースのディスカバリ、スコープマッチング、承認ゲート付きカナリアテストをCisco ASA/FTD WebVPN SAMLエンドポイントに対して行う。
Cisco ASA / FTD の WebVPN SAML SP ACS エンドポイントにおける反射型 XSS
(/+CSCOE+/saml/sp/acs)。
cisco-sa-asaftd-xss-multiple-FCB3vPZe でパッチ適用済み。
このリポジトリには以下が含まれます:
xss.html — 許可されたターゲット向けの、人間が検証可能な PoC。src/ — 発見とスコープ認識型バリデーションのパイプライン。docs/ — 方法論と倫理。┌──────────┐ ┌──────────────┐ ┌────────────────────┐ ┌────────────────┐ ┌──────────────┐
│ Shodan │ → │ scope match │ → │ manual approval │ → │ canary check │ → │ MD report │
│ (3 dorks)│ │ (H1, BC, +) │ │ deny-by-default │ │ no JS exec │ │ drafts │
└──────────┘ └──────────────┘ └────────────────────┘ └────────────────┘ └──────────────┘
各ステージは検査可能な JSON アーティファクトを書き出し、独立して実行されます。
バリデータは alert() を実行しません。生の <>"' を含む一意のカナリア文字列を
POST し、レスポンスボディをグレード判定します。確認されたヒットには、プログラムの
レビュアーが自分のブラウザで検証できるよう、元の xss.html を含む Markdown
ドラフトが生成されます。
バリデーションは承認ゲート付きです。スコープ一致は単なる出発点であり、
現在のプログラムブリーフが契約です。アクティブなバリデーションの前に、
プログラムポリシーを確認し、data/validation_approvals.json でターゲットの
承認フラグを設定してください。
git clone https://github.com/cruxN3T/CVE-2020-3580
cd CVE-2020-3580
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
cp creds.env.example creds.env
$EDITOR creds.env # add your Shodan key, optionally H1/BC tokens
creds.env は gitignore されています。.gitignore は *.env に一致する
すべてのファイル(*.env.example を除く)に加えて data/ と reports/ をブロックし、
ターゲットリストとバリデーションの抜粋が公開リポジトリに含まれないようにします。
デフォルトのエンドツーエンドコマンドは、意図的にバリデーションの前で停止します:
python -m src.pipeline run
これにより、すべての承認フラグが false に設定された data/validation_approvals.json が
書き出されます。各プログラムの現在のブリーフを確認し、ターゲットが依然として
スコープ内にあり、この種のバリデーションが許可されている場合にのみ、3つの
フィールドすべてを true に設定してください:
{
"manual_policy_reviewed": true,
"automated_testing_allowed": true,
"cve_testing_allowed": true
}
次にバリデーションを実行し、レポートドラフトを生成します:
python -m src.pipeline validate
python -m src.pipeline report
またはステージごとに:
python -m src.pipeline discover # Shodan → data/shodan_hits.json
python -m src.pipeline scope # match → data/in_scope.json
python -m src.pipeline approve-template # → data/validation_approvals.json
python -m src.pipeline validate # approved canary checks only
python -m src.pipeline report # → reports/<host>__CVE-2020-3580.md
プライベートラボのターゲットに限り、validate --allow-unapproved は承認ファイルを
バイパスします。証明書検証が不可能なレガシーアプライアンスの場合、
validate --allow-insecure-tls はその実行に限り TLS 検証を無効にします。
scope ステージは API キーなしで動作します — arkadiyt/bounty-targets-data
から取得します。creds.env に H1_USERNAME と H1_API_TOKEN を追加すると、
H1_LIVE=true が設定されている場合に HackerOne Hacker API からの新しいデータで
補完できます。
すべては creds.env に格納されています。完全なリストは creds.env.example を参照してください。
知っておく価値のある設定項目:
SCOPE_PLATFORMS — カンマ区切り。デフォルトは hackerone,bugcrowd。より広い
カバレッジが必要な場合は intigriti と yeswehack を追加してください。TARGET_RPM — ホストあたり毎分のリクエスト数。デフォルトは 10。理由もなく
この値を上げないでください。TLS_VERIFY — デフォルトは true。REQUIRE_VALIDATION_APPROVAL — デフォルトは true。docs/ETHICS.md — スコープ一致が何を許可し、何を許可しないか、
そしてバリデータが意図的に行わないこと。docs/METHODOLOGY.md — リフレクションのグレード判定が
どのように機能するか、そして各ステージが存在する理由。大量搾取ツールではありません。0day ではありません。提出前にプラットフォーム上の プログラムブリーフを読むことの代わりにはなりません。スコープマッチャーは 出発点であり、ポリシーテキストが契約です。
MIT。LICENSE を参照してください。