
xpathは、Nimで書かれた高速かつマルチテクニック対応のXPathインジェクションスキャナです。実用的な検出、レスポンス比較、可視抽出、ブラインド抽出に焦点を当てています。
認可されたセキュリティテストのための高度なXPathインジェクションスキャナー。
作成: Chokri Hammedi (blue0x1) · MITライセンス
xpath は、Nimで書かれた高速かつマルチテクニック対応のXPathインジェクションスキャナーです。実用的な検出、レスポンス比較、可視抽出、ブラインド抽出、および実世界のXMLバックエンドアプリケーション向けのペイロードカバレッジに焦点を当てています。
Nim標準ライブラリ以外の外部ランタイム依存関係はありません。
| 領域 | 対応 |
|---|---|
| 検出 | エラーベース、ブールベースのブラインド、タイムベースのブラインド、認証バイパス、ユニオン/ノード選択 |
| 抽出 | 可視HTMLパース、セレクタユニオン抽出、ブラインドXPathデータ抽出 |
| ペイロード | クラシック、述語、関数ベース、パス抜け出し、エンコード、エンティティ、大文字小文字混在バリアント |
| 発見 | URLパラメータ検出とHTMLフォームクローリング |
| 回避 | WAF/IDS の指標、URLエンコードおよびエンティティベースのバイパスペイロード |
| 出力 | 人間が読みやすいターミナルレポートとJSONレポートエクスポート |
| トランスポート | クッキー、ヘッダー、プロキシ、リトライ、タイムアウト、User-Agent、リダイレクト制御 |
nimble install xpath
これにより、公式Nimパッケージリストから最新パッケージがインストールされます。
git clone https://github.com/blue0x1/xpath.git
cd xpath
make linux
make test
Linuxバイナリは次の場所に出力されます:
dist/xpath-linux-amd64
sudo make install
デフォルトでは、以下にインストールされます:
/usr/local/bin/xpath
インストールプレフィックスを変更するには:
sudo make install PREFIX=/usr
make deb
sudo dpkg -i dist/xpath_1.0.0_amd64.deb
make windows
Windowsバイナリは次の場所に出力されます:
dist/xpath-windows-amd64.exe
Linuxでは、WindowsビルドにMinGWが必要です:
sudo apt install mingw-w64
GETパラメータをスキャン:
xpath -u "http://target.local/search?q=test" -p q
検出されたすべてのクエリパラメータをスキャン:
xpath -u "http://target.local/search?q=test&id=1"
POSTボディをスキャン:
xpath -u "http://target.local/login" -m POST -d "user=*&pass=test"
すべてのテクニックを実行し、可能な場合は可視データまたはブラインドデータを抽出:
xpath -u "http://target.local/search?q=test" -p q -t A -x
プロキシを使用:
xpath -u "http://target.local/search?q=test" -p q --proxy http://127.0.0.1:8080
JSON出力を保存:
xpath -u "http://target.local/search?q=test" -p q -t A -o report.json -f json
USAGE
xpath [OPTIONS] -u <URL>
TARGET
-u, --url <URL> Target URL
-m, --method <METHOD> HTTP method: GET or POST
-d, --data <DATA> POST body, use * to mark injection point
-p, --param <PARAM> Parameter(s) to test, comma-separated
-c, --cookie <COOKIE> Cookie string
-H, --header <HEADER> Extra header, repeatable
DETECTION
-t, --technique <FLAGS> E, B, T, U, P, or A
-l, --level <1-5> Payload thoroughness level
-x, --extract Extract data after confirming injection
--xpath <EXPR> XPath expression for extraction
OUTPUT
-o, --output <FILE> Save report
-f, --format <FMT> text or json
-v, --verbose Verbose output
不正なXPathペイロードを送信し、Java、.NET、PHP、libxml2、Saxon、Xalan、W3C XQueryのエラーコードからフレームワーク固有のエラーシグネチャを検出します。
xpath -u "http://target.local/item?id=1" -p id -t E
ボディ類似度とサイズ差分を使用して、TRUE/FALSEペイロードのペアレスポンスを比較します。これは、結果が直接出力されないが、アプリケーションの動作が変化する場合に役立ちます。
xpath -u "http://target.local/search?q=test" -p q -t B
コンテンツベースのシグナルが利用できない場合に、計算コストの高いXPath式を使用して測定可能なレスポンス時間の差を生み出します。
xpath -u "http://target.local/search?q=test" -p q -t T --time-sec 3
セレクタのようなパラメータが、//text()、../../..//text()、//@*、インデックス付きパスなどの絶対パスまたは相対パスとユニオンできるかどうかをテストします。
xpath -u "http://target.local/search?q=INVALID&field=name" -p field -t U -x
述語破壊ペイロード、位置ベースペイロード、ロール部分文字列ペイロード、ブール関数、およびコンテキスト認識型バイパス形式をチェックします。
xpath -u "http://target.local/login" -m POST -d "username=*&password=test" -t P
-x が有効な場合、xpath は利用可能な最良の抽出モードを選択します:
| モード | 説明 |
|---|---|
| 可視認証レスポンス | 成功したバイパスレスポンスから新しい行、リンク、リダイレクト、レンダリングされた値を解析します |
| 可視ユニオンパス | ユニオン/ノード選択ペイロードから新しくレンダリングされたテキストを抽出します |
例:
xpath -u "http://target.local/query?q=test" -p q -t A -x
カスタム式:
xpath -u "http://target.local/query?q=test" -p q -x --xpath "name(/*[1])"
src/
xpath.nim
core/
analyzer.nim
crawler.nim
extractor.nim
http.nim
payloads.nim
reporter.nim
scanner.nim
utils/
cli.nim
config.nim
logger.nim
MITライセンス。LICENSE を参照してください。
このツールは、認可されたセキュリティテスト専用です。自分が所有しているシステム、またはテストするための明示的な書面による許可があるシステムでのみ使用してください。
| ブラインド抽出 |
string-length()、substring()、name()、count() を使用してXMLデータを推測します |
| レベル | 重点 |
|---|
1 | 高速なクラシックペイロード |
2 | 一般的な実世界の述語破壊 |
3 | デフォルトのバランススキャン |
4 | エンコード、エンティティ、パス抜け出しペイロード |
5 | 最大カバレッジとエキゾチックなバリアント |
| ターゲット | 出力 |
|---|
make linux | dist/xpath-linux-amd64 |
make windows | dist/xpath-windows-amd64.exe |
make test | Nimテストスイートを実行します |
make install | $(PREFIX)/bin/xpath にインストールします |
make deb | dist/xpath_1.0.0_amd64.deb |
make clean | build/ と dist/ を削除します |