
واجهة سطر أوامر Rust تختبر أساليب HTTP (بما في ذلك أفعال WebDAV وDeltaV) مقابل عنوان URL هدف لكشف التلاعب بالأفعال وتجاوزات التحكم في الوصول والتعرض غير المقصود للأساليب.
أداة للقيام بـ HTTP Verb Tampering. تفحص طرق HTTP ضد عنوان URL مستهدف لكشف سوء التكوين والتجاوزات والتعرّض غير المقصود للطرق.
إذا لم تكن hvt مناسبة لاحتياجاتك، تحقق من هذه:
تتعامل بعض خوادم الويب والوسطاء مع طرق HTTP بشكل غير متسق. قد يُرجع مسار ما 403 عند GET بينما يُرجع 200 عند POST أو PUT أو طريقة WebDAV غامضة. تُطلق 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 التطويرية (توفّر gcc المطلوب من قِبل اعتمادية ring):
nix develop
cargo test
أو شغّلها بالكامل عبر Nix دون الدخول إلى shell:
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
وضع قائمة الكلمات، إظهار 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