
CLI en Rust que sondea métodos HTTP (incluidos los verbos WebDAV y DeltaV) contra una URL objetivo para revelar manipulación de verbos, omisiones de control de acceso y exposición no intencionada de métodos.
Herramienta para hacer HTTP Verb Tampering. Sondea métodos HTTP contra una URL objetivo para descubrir configuraciones incorrectas, omisiones y exposición no intencionada de métodos.
Si hvt no se adapta a tus necesidades, revisa estos:
Algunos servidores web y proxies tratan los métodos HTTP de forma inconsistente. Una ruta que devuelve 403 en GET podría devolver 200 en POST, PUT o un método WebDAV poco conocido. hvt lanza cada método que elijas contra un objetivo y expone cualquier cosa que merezca ser investigada.
Requiere la cadena de herramientas de Rust y un enlazador de 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
Para los usuarios de Nix o NixOS hay un paquete disponible. Ten en cuenta que las versiones más recientes podrían solo estar presentes en el canal unstable.
$ nix-env -iA nixos.hvt
Ejecute las pruebas unitarias dentro del shell de desarrollo de Nix (proporciona gcc, requerido por la dependencia ring):
nix develop
cargo test
O ejecútalos completamente a través de Nix sin entrar en un shell:
nix flake check
nix flake check compila el proyecto con gcc disponible y ejecuta cargo test en un entorno de compilación aislado.
hvt -u <URL> [OPTIONS]
| Flag | Predeterminado | Descripción |
|---|---|---|
-u, --url | (obligatorio) | URL de destino incluyendo el esquema |
-t, --threads | 5 | Hilos de solicitudes concurrentes |
--all | - | Probar los 53 métodos conocidos (WebDAV, DeltaV, etc.) |
--safe | - | Probar solo métodos seguros: GET, HEAD, OPTIONS |
-m, --methods | - | Lista personalizada de métodos separados por comas |
-w, --wordlist | - | Archivo con un método por línea (# para comentarios) |
-s, --show | - | Mostrar solo estos códigos de estado (separados por comas) |
-x, --hide | - | Ocultar estos códigos de estado (separados por comas) |
-H, --header | - | Encabezado personalizado, repetible ("Name: Value") |
-c, --cookie | - | Cadena de cookie ("name=value; name2=value2") |
--proxy | - | URL del proxy (http://... o socks5://...) |
-k, --insecure | - | Aceptar certificados TLS inválidos/autofirmados |
-L, --follow-redirects | - | Seguir redirecciones (desactivado por defecto para mostrar 3xx) |
-T, --timeout | 10 | Tiempo de espera por solicitud en segundos |
-o, --output | - | Guardar resultados en un archivo de texto |
-j, --json | - | Exportar resultados a un archivo JSON |
-q, --quiet | - | Suprimir el banner y las líneas de información |
| Flag | Métodos |
|---|---|
| (predeterminado) | GET HEAD POST PUT DELETE CONNECT OPTIONS TRACE PATCH |
--safe | GET HEAD OPTIONS |
--all | 53 métodos - comunes + WebDAV (PROPFIND, MKCOL, COPY, MOVE, LOCK...), DeltaV (CHECKOUT, CHECKIN, MERGE...), y otros (PURGE, SEARCH, SUBSCRIBE, REBIND...) |
Escaneo básico con los 9 métodos predeterminados:
hvt -u https://example.com/admin
Escaneo completo, 20 hilos, ocultar 405:
hvt -u https://example.com --all -t 20 -x 405
Métodos personalizados con encabezado de autenticación, guardar JSON:
hvt -u https://api.example.com/v1/users \
-m GET,POST,PUT,DELETE,PATCH \
-H "Authorization: Bearer <token>" \
-j results.json
A través de Burp Suite, ignore los errores TLS:
hvt -u https://target.local/api -k --proxy http://127.0.0.1:8080
Modo lista de palabras, mostrar solo 2xx y 3xx:
hvt -u https://example.com -w methods.txt -s 200,201,301,302
Modo silencioso para tuberías:
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]
Los métodos que no son GET/HEAD y que devuelven 2xx o 3xx se marcan en el resumen como potencialmente interesantes.
MIT