
대상 URL에 대해 HTTP 메서드(WebDAV 및 DeltaV 동사 포함)를 프로브하여 동사 변조, 접근 제어 우회, 의도하지 않은 메서드 노출을 드러내는 Rust CLI.
HTTP Verb Tampering을 수행하는 도구입니다. 대상 URL에 대해 HTTP 메서드를 탐색하여 잘못된 설정, 우회, 의도하지 않은 메서드 노출을 발견합니다.
hvt가 필요에 맞지 않는다면 다음을 확인하세요:
일부 웹 서버와 프록시는 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 | - | 한 줄에 하나의 메서드가 있는 파일 (#은 주석) |
-s, --show | - | 지정한 상태 코드만 표시 (쉼표로 구분) |
-x, --hide | - | 지정한 상태 코드 숨김 (쉼표로 구분) |
-H, --header | - | 사용자 지정 헤더, 반복 가능 ("Name: Value") |
-c, --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
Wordlist 모드, 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]
요약에서 2xx 또는 3xx를 반환하는 GET/HEAD 이외의 메서드는 잠재적으로 흥미로운 항목으로 표시됩니다.
MIT