
CLI Rust che verifica i metodi HTTP (inclusi i verbi WebDAV e DeltaV) su un URL di destinazione per far emergere il verb tampering, i bypass dei controlli di accesso e l'esposizione involontaria dei metodi.
Strumento per eseguire HTTP Verb Tampering. Sonda i metodi HTTP su un URL di destinazione per scoprire misconfigurazioni, bypass ed esposizione involontaria di metodi.
Se hvt non soddisfa le tue esigenze, dai un'occhiata a questi:
Alcuni web server e proxy trattano i metodi HTTP in modo incoerente. Un percorso che restituisce 403 su GET potrebbe restituire 200 su POST, PUT o su un metodo WebDAV oscuro. hvt invia ogni metodo che scegli contro una destinazione e mette in evidenza tutto ciò che vale la pena investigare.
Richiede il toolchain Rust e un linker 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
Per gli utenti Nix o NixOS è disponibile un pacchetto. Tieni presente che le versioni più recenti potrebbero essere presenti solo nel canale unstable.
$ nix-env -iA nixos.hvt
Esegui gli unit test all'interno della dev shell di Nix (fornisce gcc richiesto dalla dipendenza ring):
nix develop
cargo test
Oppure eseguili interamente tramite Nix senza entrare in una shell:
nix flake check
nix flake check compila il progetto con gcc disponibile ed esegue cargo test in un ambiente di build isolato.
hvt -u <URL> [OPTIONS]
| Flag | Predefinito | Descrizione |
|---|---|---|
-u, --url | (obbligatorio) | URL di destinazione incluso lo schema |
-t, --threads | 5 | Thread di richieste concorrenti |
--all | - | Testa tutti i 53 metodi noti (WebDAV, DeltaV, ecc.) |
--safe | - | Testa solo i metodi sicuri: GET, HEAD, OPTIONS |
-m, --methods | - | Elenco personalizzato di metodi separati da virgola |
-w, --wordlist | - | File con un metodo per riga (# per i commenti) |
-s, --show | - | Mostra solo questi codici di stato (separati da virgola) |
-x, --hide | - | Nasconde questi codici di stato (separati da virgola) |
-H, --header | - | Header personalizzato, ripetibile ("Name: Value") |
-c, --cookie | - | Stringa cookie ("name=value; name2=value2") |
--proxy | - | URL del proxy (http://... o socks5://...) |
-k, --insecure | - | Accetta certificati TLS non validi/autofirmati |
-L, --follow-redirects | - | Segue i redirect (disattivato per impostazione predefinita per mostrare i 3xx) |
-T, --timeout | 10 | Timeout per richiesta in secondi |
-o, --output | - | Salva i risultati in un file di testo |
-j, --json | - | Esporta i risultati in un file JSON |
-q, --quiet | - | Sopprime banner e righe informative |
| Flag | Metodi |
|---|---|
| (predefinito) | GET HEAD POST PUT DELETE CONNECT OPTIONS TRACE PATCH |
--safe | GET HEAD OPTIONS |
--all | 53 metodi - comuni + WebDAV (PROPFIND, MKCOL, COPY, MOVE, LOCK...), DeltaV (CHECKOUT, CHECKIN, MERGE...), e altri (PURGE, SEARCH, SUBSCRIBE, REBIND...) |
Scansione di base con i 9 metodi predefiniti:
hvt -u https://example.com/admin
Scansione completa, 20 thread, nascondi 405:
hvt -u https://example.com --all -t 20 -x 405
Metodi personalizzati con header di autenticazione, salvataggio JSON:
hvt -u https://api.example.com/v1/users \
-m GET,POST,PUT,DELETE,PATCH \
-H "Authorization: Bearer <token>" \
-j results.json
Tramite Burp Suite, ignora gli errori TLS:
hvt -u https://target.local/api -k --proxy http://127.0.0.1:8080
Modalità wordlist, mostra solo 2xx e 3xx:
hvt -u https://example.com -w methods.txt -s 200,201,301,302
Modalità silenziosa per il piping:
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]
I metodi non-GET/HEAD che restituiscono 2xx o 3xx vengono segnalati nel riepilogo come potenzialmente interessanti.
MIT