
対象URLに対してHTTPメソッド(WebDAVやDeltaVのverbを含む)をプローブし、verb改ざん、アクセス制御のバイパス、意図しないメソッドの露出を明らかにするRust製CLI。
HTTP Verb Tampering を行うためのツールです。対象 URL に対して HTTP メソッドをプローブし、設定の不備、バイパス、意図しないメソッドの露出を明らかにします。
hvt がニーズに合わない場合は、以下を確認してください:
一部の Web サーバーやプロキシは、HTTP メソッドを一貫性なく扱います。GET で 403 を返すパスが、POST、PUT、あるいはマイナーな WebDAV メソッドでは 200 を返すことがあります。hvt は選択したすべてのメソッドを対象に送信し、調査する価値のあるものを浮かび上がらせます。
Rust ツールチェーンと C リンカー (gcc) が必要です。
git clone <repo>
cd hmt
cargo build --release
./target/release/hvt --help
nix-shell # drops into a shell with cargo + gcc
cargo build --release
nix build # produces result/bin/hvt
nix run . -- -u https://example.com
nix develop # dev shell
Nix または NixOS ユーザー向けにパッケージが利用可能です。最新のリリースは unstable チャンネルにのみ存在する場合があることにご注意ください。
$ nix-env -iA nixos.hvt
Nix 開発シェル内でユニットテストを実行します(ring 依存関係に必要な gcc を提供します):
nix develop
cargo test
または、シェルに入らずに Nix 経由で完全に実行します:
nix flake check
nix flake check は gcc が利用可能な状態でプロジェクトをコンパイルし、サンドボックス化されたビルド環境で cargo test を実行します。
hvt -u <URL> [OPTIONS]
| フラグ | デフォルト | 説明 |
|---|---|---|
-u, --url | (必須) | スキームを含むターゲットURL |
-t, --threads | 5 | 同時リクエストスレッド数 |
--all | - | 既知の53メソッドすべてをテスト(WebDAV、DeltaVなど) |
--safe | - | 安全なメソッドのみをテスト: GET、HEAD、OPTIONS |
-m, --methods | - | カンマ区切りのカスタムメソッドリスト |
-w, --wordlist | - | 1行に1メソッドを記述したファイル(# はコメント) |
-s, --show | - | 指定したステータスコードのみを表示(カンマ区切り) |
-x, --hide | - | 指定したステータスコードを非表示(カンマ区切り) |
-H, --header | - | カスタムヘッダー、繰り返し指定可能("Name: Value") |
-c, --cookie | - | Cookie文字列("name=value; name2=value2") |
--proxy | - | プロキシURL(http://... または socks5://...) |
-k, --insecure | - | 無効または自己署名のTLS証明書を許可 |
-L, --follow-redirects | - | リダイレクトを追跡(3xxを表面化させるためデフォルトはオフ) |
-T, --timeout | 10 | リクエストごとのタイムアウト(秒) |
-o, --output | - | 結果をテキストファイルに保存 |
-j, --json | - | 結果をJSONファイルにエクスポート |
-q, --quiet | - | バナーと情報行を抑制 |
| フラグ | メソッド |
|---|---|
| (デフォルト) | GET HEAD POST PUT DELETE CONNECT OPTIONS TRACE PATCH |
--safe | GET HEAD OPTIONS |
--all | 53メソッド - 一般的なもの + WebDAV(PROPFIND、MKCOL、COPY、MOVE、LOCK...)、DeltaV(CHECKOUT、CHECKIN、MERGE...)、その他(PURGE、SEARCH、SUBSCRIBE、REBIND...) |
デフォルトの9メソッドによる基本スキャン:
hvt -u https://example.com/admin
フルスキャン、20スレッド、405を非表示:
hvt -u https://example.com --all -t 20 -x 405
カスタムメソッドと認証ヘッダー、JSON の保存:
hvt -u https://api.example.com/v1/users \
-m GET,POST,PUT,DELETE,PATCH \
-H "Authorization: Bearer <token>" \
-j results.json
Burp Suite 経由で、TLS エラーを無視します:
hvt -u https://target.local/api -k --proxy http://127.0.0.1:8080
ワードリストモード、2xx と 3xx のみ表示:
hvt -u https://example.com -w methods.txt -s 200,201,301,302
パイプ処理用のサイレントモード:
hvt -u https://example.com -q -j - | jq '.results[] | select(.status < 300)'
Target : https://example.com
Methods : 9 (common)
Threads : 5
METHOD STATUS SIZE TIME INFO
──────────────────────────────────────────────────────────
GET 200 1256 B 42ms OK
HEAD 200 0 B 38ms OK
POST 405 312 B 41ms Method Not Allowed
PUT 405 312 B 40ms Method Not Allowed
DELETE 405 312 B 39ms Method Not Allowed
CONNECT 400 0 B 38ms Bad Request
OPTIONS 200 0 B 38ms OK Allow: GET, HEAD, OPTIONS
PATCH 405 312 B 39ms Method Not Allowed
Summary
Target : https://example.com
Tested : 9
Errors : 0
2xx : GET [200], HEAD [200], OPTIONS [200]
GET/HEAD 以外のメソッドで 2xx または 3xx を返すものは、サマリー内で潜在的に興味深いものとしてフラグが立てられます。
MIT