
اكتشاف سريع لمعاملات HTTP لاختبارات الأمان المصرّح بها

اكتشاف سريع لمعاملات HTTP لصيد الثغرات واختبار الاختراق المصرّح به. يرسل ParamTrace مدخلات قائمة الكلمات كمعاملات ويحدد تلك التي تغيّر الاستجابة مقارنةً بخط الأساس.
إشعار قانوني: استخدم ParamTrace فقط على الأنظمة التي تملكها أو لديك إذن كتابي صريح باختبارها (على سبيل المثال، أهداف صيد الثغرات ضمن النطاق). أنت مسؤول عن كيفية استخدامه.
أدوات اكتشاف المعاملات موجودة بالفعل (Arjun وx8 وParam Miner لـ Burp). ParamTrace بديل صغير ومركّز:
--tolerance مع الصفحات التي تتغير مع كل طلب.متى تستخدم شيئًا آخر: إذا كنت تعمل بالفعل داخل Burp، فإن Param Miner أنسب. لتجميع العديد من المعاملات في طلب واحد، فإن الأدوات الناضجة مثل Arjun أو x8 أسرع اليوم. التجميع مدرج في خارطة طريق ParamTrace.
الملفات التنفيذية الجاهزة (Linux x86_64 وaarch64، وmacOS Apple Silicon، وWindows) موجودة على صفحة الإصدارات، كل منها مع ملف تحقق .sha256. على سبيل المثال، على Linux (استخدم ملف aarch64 لـ Kali NetHunter على الهاتف):
tar -xzf paramtrace-*-linux-x86_64.tar.gz
sudo cp paramtrace-*-linux-x86_64/paramtrace /usr/local/bin/
يستخدم Termux مكتبة C الخاصة بـ Android، لذا لن تعمل ثنائيات Linux هناك. ثبّت من المصدر بدلاً من ذلك: cargo install --git https://github.com/CurioTrace/paramtrace
حالة الاختبار: تم اختبار ثنائي Linux aarch64 (Kali NetHunter) وبناء Termux من المصدر من قبل المؤلف. يتم بناء ثنائيات Linux x86_64 وmacOS وWindows تلقائيًا في كل إصدار ولكن لم يتم تشغيلها من قبل المؤلف بعد، لذا يُرجى فتح issue إذا لم يعمل أحدها. الثنائيات غير موقّعة، لذا قد يعرض Windows أو macOS تحذيرًا عند التشغيل الأول؛ يمكنك التحقق من التنزيل باستخدام ملف .sha256 الخاص به.
أو ابنِ من المصدر:
git clone https://github.com/CurioTrace/paramtrace
cd paramtrace
cargo build --release
# binary: target/release/paramtrace
# optional: install it so you can just type `paramtrace`
cargo install --path .
تم اختباره على Termux (Android) وKali NetHunter. يجب أن يُبنى في أي بيئة يدعمها Rust (يستخدم rustls، ولا يحتاج إلى OpenSSL).

تفترض الأمثلة أدناه أن
paramtraceموجود في PATH الخاص بك (انظرcargo install --path .أعلاه). إذا كنت قد شغّلتcargo build --releaseفقط، فاستخدم./target/release/paramtraceبدلاً من ذلك. إذا لم يتم العثور على الأمر بعد التثبيت، فأضف مجلد bin الخاص بـ Cargo إلى PATH الخاص بك:export PATH="$HOME/.cargo/bin:$PATH"
paramtrace -u https://example.com/search -w wordlists/common.txt
paramtrace -u https://example.com/api -w words.txt -m post -t 20
paramtrace -u https://example.com/ -w words.txt -H "Cookie: session=abc" --proxy http://127.0.0.1:8080
paramtrace -u https://example.com/ -w words.txt -o out.json -f json
| العَلَم | الوصف |
|---|---|
-u, --url | عنوان URL الهدف |
-w, --wordlist | قائمة كلمات المعاملات |
-m, --method | get (افتراضي) أو post |
-t, --threads | الطلبات المتزامنة (افتراضي 10) |
-H, --header | ترويسة إضافية، قابلة للتكرار |
--timeout | مهلة الطلب بالثواني (افتراضي 10) |
--delay | التأخير لكل طلب بالمللي ثانية |
--tolerance | تجاهل فروق الحجم حتى N بايت (مفيد في الصفحات الديناميكية) |
--value | القيمة المُرسَلة لكل معامل (القيم الأقل من 4 أحرف تعطّل فحص الانعكاس) |
--proxy | عنوان URL للوكيل (Caido، Burp) |
-k, --insecure | تخطي التحقق من TLS |
-q, --quiet | إخفاء لافتة بدء التشغيل |
-o, --output / -f, --format | حفظ النتائج بصيغة text أو json |
اختُبِر على نسختي الخاصة من مختبر PortSwigger Web Security Academy: مع قائمة كلمات من 6,454 مدخلاً (6,453 اسمًا خاطئًا بالإضافة إلى المعامل الحقيقي productId)، لم تُشِر ParamTrace إلا إلى productId، دون أي نتائج إيجابية كاذبة، في نحو 3 دقائق عند 10 خيوط. أجاب الخادم بـ 400 سواء مع المعامل أو بدونه، لذا كان فحص رمز الحالة وحده سيفوّته. التقطته ParamTrace بمقارنة أحجام الاستجابات.
تعتمد السرعة بشكل كبير على الشبكة، وأسماء المعاملات حساسة لحالة الأحرف، لذا يجب أن تحتوي قائمة الكلمات على الاسم الدقيق الذي يتوقعه الخادم.
--tolerance 0 للمقارنة بدقة.توجد قائمة بداية صغيرة في wordlists/common.txt. للحصول على قوائم أكبر، راجع
SecLists.
للأهداف الحقيقية، نزّل قائمة أكبر (نحو 6,000 اسم) وامسح بلطف:
curl -L -o wordlists/burp-params.txt https://raw.githubusercontent.com/danielmiessler/SecLists/master/Discovery/Web-Content/burp-parameter-names.txt
paramtrace -u https://example.com/page -w wordlists/burp-params.txt -t 5 --delay 100
أسماء المعاملات حساسة لحالة الأحرف. الخادم الذي يتوقع productId لن يتفاعل مع productid، لذا يمكن لـ ParamTrace العثور فقط على الأسماء الموجودة في قائمة كلماتك بالإملاء الدقيق الذي يستخدمه الهدف. كثير من القوائم مكتوبة بأحرف صغيرة بالكامل، لذا تحقق من قائمتك أولاً، على سبيل المثال: grep -c -x productId yourlist.txt.
-t, --threads يحدد عدد الطلبات الجارية في وقت واحد (الافتراضي 10).--delay N ينتظر N مللي ثانية قبل كل طلب. ينطبق على كل طلب متزامن، لذا المزيد من الخيوط يعني مع ذلك المزيد من الطلبات في الثانية إجمالاً.--timeout يمنع الطلب البطيء من تعليق الفحص.429 Too Many Requests، فإن ParamTrace لا يبلّغ عن تلك الاستجابات كاكتشافات. بل يحصيها ويطبع تحذيراً في النهاية، لأن النتائج قد تكون غير مكتملة. خفّض --threads، وأضف --delay، وتحقق من قواعد الهدف بشأن معدلات الطلبات.لا يقوم بالتراجع أو إعادة المحاولة تلقائياً بعد. في إحدى اختبارات مختبري الخاصة، شغّل -t 3 --delay 150 بمعدل نحو 6 طلبات في الثانية و-t 10 --delay 0 بنحو 30، لذا تعتمد السرعة اعتماداً كبيراً على الهدف واتصالك.
نعم، إنها الميزة الرئيسية المخطط لها: إرسال أسماء كثيرة في طلب واحد وتضييق النطاق عندما تتغير الاستجابة، مما ينبغي أن يتطلب طلبات أقل بكثير. ParamTrace مشروع هواية، لذا لا يوجد موعد محدد.
إذا ساعدك ParamTrace في تقييم أو bug bounty، فيرجى التفكير في ترك ⭐ (زر Star في أعلى صفحة المستودع) لمساعدة الآخرين على اكتشافه.
نرحب بتقارير الأخطاء والأفكار في Issues.
MIT