
ブラックボックスXXEスキャナ。統計的ベースライン化、パーサーフィンガープリンティング、OOB確認により、インバンド、エラーベース、ブラインドアウトオブバンドインジェクションを検出し、SARIF出力に対応。
セキュリティプロフェッショナル向けの、スタンドアロンなブラックボックス XML External Entity (XXE) スキャナー。
XXERipper は、30 以上の攻撃手法ファミリーにわたって、インバンド、エラーベース、およびブラインドのアウトオブバンド XXE を検出します。統計的ベースライン、差分パーサーフィンガープリンティング、interactsh-client によるアウトオブバンド確認(手動または自動)、ブラウザベースのコンソール、WAF バイパスエンコーディング、エンドツーエンドのエクスプロイトチェーン検出、ペースト可能なシェルスニペットを伴う認証情報抽出、CWE マッピングされた検出結果、および CI/CD とレポーティング向けの JSON / SARIF / HTML 出力を組み合わせています。
XXERipper は、XML External Entity インジェクション向けの自己完結型 CLI およびブラウザコンソールスキャナーであり、テストが下手になりやすく、うまくテストするのが難しい脆弱性クラスを、正確かつ低い誤検知率で検出する必要があるペネトレーションテスター、バグバウンティハンター、およびセキュリティ研究者向けに設計されています。
これは意図的に最小限であり — httpx と(コンソール用の)flask のみで、他には何もありません — そしてエンドツーエンドで監査可能です。すべてのフェーズを追跡でき、すべての検出結果には証拠の軌跡が伴い、スキップされたすべての手法は理由とともに報告され、抽出されたすべてのファイルや認証情報は重複排除され、ペースト可能なエクスプロイトスニペットとともに保存されます。
XXERipper は、エンティティ解決プリミティブ自体を超えてターゲットを悪用することはありません。パーサーが外部エンティティを解決するかどうか、その結果がインバンド、パーサーエラー経由、またはアウトオブバンドで観測できるかどうかを判定し、その判定を信頼スコア、CWE マッピング、そして — 完全なチェーンが完了した場合には — エンドツーエンドの影響を明示するロールアップ検出結果とともに報告します。
ChainTracker はすべての検出結果を監視し、ID + 証拠からチェーンの段階を導出し、テンプレートが完了したときにロールアップ検出結果を発火します — XXE → IMDS → IAM credentials → AWS account takeover、XXE → SSH private key → lateral movement、XXE → Kubernetes secrets → cluster credential theft、およびさらに 10 種類。aws sts get-caller-identity、aliyun sts GetCallerIdentity、ssh -i …、gcloud auth activate-service-account、kubectl --token=…、および curl -H 'Authorization: Bearer …' — が、該当する場合はトークンの実際のクレームを用いて構築されて付属します。interactsh-client によるアウトオブバンド確認。 2 つのモード: 手動(スキャナーがすべてのサブドメインを出力し、あなたがクライアントを監視)および 自動(--oob-auto が interactsh-client を起動し、コールバックをプロセス内で相関付け)。どちらもペイロードごとに一意の 16 進 16 文字トークンを埋め込むため、コールバックが誤って帰属されることは決してありません。--oob-listen)、独自の Web サーバーで配信されるディレクトリ(--oob-dtd-dir)、または WebUI 自身の Flask ルート(ドロワーで Serve DTDs from this WebUI にチェック)。jar://、data://、phar://、glob://、compress.zlib://。XXE-OFFICE-XSLT-{DOCX,XLSX}) — Word または Excel のパーツ内の xml-stylesheet PI が、サーバー側のドキュメントプロセッサに攻撃者制御の XSLT を取得させます。jackson-dataformat-xml を持つ Spring MVC を捕捉します。これは任意の @RequestBody エンドポイントで application/xml を黙って受け入れます。--bypass-waf) — ペイロードカタログ全体を、3 つのファミリーにわたる 15 のエンコーダーを通じて再送信します。コアフェーズの 後に 実行されるため、直接的なヒットは約 1,500 のエンコードされたものの背後に埋もれることなく、約 20 リクエストで発見されます。--serve) — ライブイベントストリーミング、コマンドパレット、キーボード駆動のナビゲーション、ジョブごとの JSON / SARIF / HTML ダウンロード、およびレポートをダウンロードする代わりにインラインで開く別個の View HTML ボタンを備えたブラウザベースのワークベンチ。ゼロ依存のフロントエンド: 1 つの自己完結型 HTML ファイル、CDN なし。--pre-auth-request FILE は Burp 形式のリクエストをリプレイし、スキャン開始前にそれらの Set-Cookie をマージするため、多段階の認証フローが cookies ファイルなしで機能します。pip install xxeripper pip install "xxeripper[socks]" # plus SOCKS proxy support
ベースインストールでは `httpx[http2]`(ALPN 経由で HTTP/2 ネゴシエーションが有効)と `Flask`(`--serve` Web コンソールで使用)が取り込まれます。SOCKS プロキシサポートは唯一のオプションの追加機能です。HTTP/2 はオプションではなく必須機能であり、メインの依存関係リストに `httpx[http2]` として含まれています。`xxeripper[http2]` extra は純粋にユーザーの習慣のために提供されており、これをインストールすることはベースパッケージをインストールすることと同等です。
### ディストリビューションパッケージ```bash
sudo pacman -U xxeripper-1.0.0-1-any.pkg.tar.zst # Arch
sudo dpkg -i xxeripper_1.0.0-1_all.deb # Debian / Ubuntu
sudo dnf install xxeripper-1.0.0-1.fc44.noarch.rpm # Fedora / RHEL
git clone https://github.com/kamalx06/XXERipper.git cd XXERipper && pip install -e ".[socks]"
### 要件
- **Python 3.9 から 3.14。**
- **`httpx[http2]` ≥ 0.27, < 0.29** — HTTP クライアント。HTTP/2 サポートは
`httpx` の `[http2]` extra を介して取り込まれ、`h2` 依存関係も
一緒に導入されます。スキャナは TLS ハンドシェイク時に ALPN を介して
HTTP/2 をネゴシエートし、サーバーがサポートしていない場合は
サイレントに HTTP/1.1 にフォールバックします。
- **`Flask` ≥ 3.0, < 4.0** — `--serve` Web コンソールで使用されます。
これはメイン依存関係であり、オプションではありません。コンソールは
ファーストクラスのインターフェースであり、`xxeripper --serve` は
[Quick Start](#quick-start) と [Web Console](#web-console) に
記載されています。
- **オプション:** SOCKS プロキシ用の `PySocks` ≥ 1.7.1
(`xxeripper[socks]`)。
- **オプション:** 自動 OOB 確認 (`--oob-auto`) 用の `PATH` 内の
`interactsh-client`。手動 OOB モード (`--oob-domain`) には
外部依存関係はありません — `interactsh-client` を別のターミナルで
自分で実行します。
wheel には単一ファイル `xxeripper.py` が含まれています。パッケージ
ディレクトリも、コンパイル済み拡張も、インストール時のビルド手順も
ありません。CLI エントリポイントは `xxeripper = "xxeripper:main"` と
宣言されているため、`pip install xxeripper` で `xxeripper` 実行
ファイルが `PATH` に配置されます。
### オプションの extra
| Extra | 取り込まれるもの | インストールすべき場合 |
|---|---|---|
| `xxeripper[socks]` | `PySocks` ≥ 1.7.1 | `socks5h://` 経由の Tor を含む SOCKS5 プロキシを通してスキャンする場合 |
| `xxeripper[http2]` | *(新しいものはなし)* | 厳密には不要 — ベースインストールには既に `httpx[http2]` が含まれています。ユーザーの習慣のために提供 |
`[webui]` extra はありません — Flask はメイン依存関係であり、
コンソールは任意のベースインストールでそのまま動作します。
---
## Quick Start```bash
# 1. Basic scan (in-band and error-based, no OOB)
xxeripper https://target.com/api/xml
# 2. Terminal A: start interactsh-client and note the session domain
interactsh-client -v
# [INF] c5f2a9b4e1d8a3f72c0b.oast.pro
# 3. Terminal B: scan with OOB payloads under that domain
xxeripper https://target.com/api/xml \
--oob-domain c5f2a9b4e1d8a3f72c0b.oast.pro