
حزمة اكتشاف المعاملات المخفية
تساعد الأداة في تحديد المعاملات المخفية التي قد تكون عرضة للخطر أو تكشف عن وظائف مثيرة للاهتمام التي قد يفوتها مختبرون آخرون. يتم تحقيق الدقة العالية من خلال المقارنة سطرًا بسطر للصفحات، ومقارنة رموز الاستجابة، والانعكاسات.
يمكن الوصول إلى التوثيق الذي يشرح كل ميزة على https://sh1yo.art/x8docs/. مصدر التوثيق موجود في /docs.md.
x8 -u "https://example.com/" -w <wordlist>
مع المعاملات الافتراضية:
x8 -u "https://example.com/?something=1" -w <wordlist>
/?something=1 يعادل /?something=1&%s
x8 -u "https://example.com/" -X POST -w <wordlist>
أو مع جسم مخصص:
x8 -u "https://example.com/" -X POST -b '{"x":{%s}}' -w <wordlist>
سيتم استبدال %s بمعاملات مختلفة مثل {"x":{"a":"b3a1a", "b":"ce03a", ...}}
x8 -u "https://example.com/" "https://4rt.one/" -W0
x8 -u "https://example.com/" --param-template "user[%k]=%v" -w <wordlist>
الآن سيبدو كل طلب مثل /?user[a]=hg2s4&user[b]=a34fa&...
في بعض الأحيان يجب ترميز المعاملات. هذا ممكن أيضًا:
x8 -u "https://example.com/?path=..%2faction.php%3f%s%23" --encode -w <wordlist>
GET /?path=..%2faction.php%3fWTDa8%3Da7UOS%26rTIDA%3DexMFp...%23 HTTP/1.1
Host: example.com
x8 -u "https://example.com" --headers -w <wordlist>
يمكنك أيضًا استهداف رؤوس فردية:
x8 -u "https://example.com" --headers -H "Cookie: %s" -w <wordlist>
يمكنك التحقق من الأداة ومقارنتها بأدوات أخرى على عناوين URL التالية:
https://4rt.one/level1 (GET)
https://4rt.one/level3 (GET)
USAGE:
x8 [FLAGS] [OPTIONS]
FLAGS:
--append إلحاق بملف الإخراج بدلاً من الكتابة فوقه.
-B يعادل -x http://localhost:8080
--check-binary فحص جسم الاستجابات بأنواع المحتوى الثنائي
--disable-additional-checks خاص
--disable-colors
--disable-custom-parameters عدم التحقق تلقائيًا من المعاملات مثل admin=true
--disable-progress-bar
--disable-trustdns يمكنه حل بعض المشكلات المتعلقة بـ DNS
--encode ترميز الاستعلام أو الجسم قبل إجراء الطلب، أي & -> %26، = -> %3D
قائمة الأحرف المراد ترميزها: ", `, , <, >, &, #, ;, /, =, %
-L, --follow-redirects متابعة عمليات إعادة التوجيه
--force فرض البحث عن المعاملات في الصفحات التي تزيد عن 25 ميجابايت. إزالة خطأ في حال وجود
عامل واحد مع خيار --one-worker-per-host.
-h, --help طباعة معلومات المساعدة
--headers التبديل إلى وضع اكتشاف الرأس.
ملاحظة: تتم إزالة الرؤوس Content-Length و Host تلقائيًا من القائمة
--invert افتراضيًا، يتم إرسال المعاملات داخل الجسم فقط في حالة استخدام طرق PUT أو POST.
من الممكن تجاوز هذا السلوك عن طريق تحديد الخيار
--mimic-browser إضافة الرؤوس الافتراضية التي تضعها المتصفحات عادةً.
--one-worker-per-host سيتم فحص عناوين URL متعددة بنفس المضيف واحدًا تلو الآخر،
بينما عناوين URL ذات المضيفين المختلفين - بالتوازي.
لا يزيد عدد العمال
--reflected-only تعطيل مقارنة الصفحات والبحث عن المعاملات المنعكسة فقط.
--remove-empty تخطي كتابة مخرجات أزواج url:method بدون معاملات موجودة
--replay-once إذا تم تحديد وكيل إعادة تشغيل، فإرسال جميع المعاملات الموجودة ضمن طلب واحد.
--strict الإبلاغ فقط عن المعاملات التي غيرت الأجزاء المختلفة من الصفحة
--test طباعة الطلب والاستجابة
-V, --version طباعة معلومات الإصدار
--verify التحقق من المعاملات الموجودة.
OPTIONS:
-b, --body <body> مثال: --body '{"x":{%s}}'
المتغيرات المتاحة: {{random}}
-c <concurrency> عدد الطلبات المتزامنة لكل عنوان URL [الافتراضي: 1]
--custom-parameters <custom-parameters>
التحقق من هذه المعاملات بقيم غير عشوائية مثل true/false yes/no
(الافتراضي هو "admin bot captcha debug disable encryption env show sso test waf")
--custom-values <custom-values>
قيم المعاملات المخصصة (الافتراضي هو "1 0 false off null true yes no")
-t, --data-type <data-type>
المتاح: urlencode، json
يمكن اكتشافه تلقائيًا إذا تم تحديد --body (الافتراضي هو "urlencode")
-d, --delay <التأخير بالمللي ثانية بين الطلبات> [الافتراضي: 0]
-H <headers> مثال: -H 'one:one' 'two:two'
--http <http> إصدار HTTP. الإصدارات المدعومة: --http 1.1، --http 2
-j, --joiner <joiner>
كيفية ربط قوالب المعاملات. مثال: --joiner '&'
الافتراضي: urlencoded - '&'، json - ', '، قيم الرأس - '; '
--learn-requests <learn-requests-count> تعيين عدد مخصص من طلبات التعلم. [الافتراضي: 9]
-m, --max <max>
تغيير الحد الأقصى لعدد المعاملات لكل طلب.
(الافتراضي هو <= 256 للاستعلام، 64 للرؤوس و512 للجسم)
-X, --method <methods> يتم دعم قيم متعددة: -X GET POST
-o, --output <file>
-O, --output-format <output-format> standart، json، url، request [الافتراضي: standart]
-P, --param-template <parameter-template>
%k - المفتاح، %v - القيمة. مثال: --param-template 'user[%k]=%v'
الافتراضي: urlencoded - <%k=%v>، json - <"%k":%v>، الرؤوس - <%k=%v>
-p, --port <port> المنفذ المستخدم مع ملف الطلب
--progress-bar-len <progress-bar-len> [الافتراضي: 26]
--proto <proto> البروتوكول المستخدم مع ملف الطلب (الافتراضي هو "https")
-x, --proxy <proxy>
--recursion-depth <recursion-depth>
التحقق من نفس قائمة المعاملات مع المعاملات الموجودة حتى لا توجد معاملات جديدة للعثور عليها.
يتعارض مع --verify حاليًا.
--replay-proxy <replay-proxy>
طلب الهدف مع كل معامل موجود عبر وكيل إعادة التشغيل في النهاية.
-r, --request <request> الملف الذي يحتوي على طلب HTTP الخام
--save-responses <save-responses>
حفظ الطلب والاستجابة في دليل عند العثور على معامل
--split-by <split-by>
تقسيم الطلب إلى أسطر بواسطة التسلسل المقدم. افتراضيًا يقسم بواسطة \r و \n و \r\n
--timeout <timeout> مهلة طلب HTTP بالثواني. [الافتراضي: 15]
-u, --url <url>
يمكنك إضافة نقطة حقن مخصصة باستخدام %s.
يتم دعم عناوين URL متعددة وأسماء الملفات:
-u filename.txt
-u https://url1 http://url2
-v, --verbose <verbose> مستوى التفصيل 0/1/2 [الافتراضي: 1]
-w, --wordlist <wordlist>
الملف الذي يحتوي على المعاملات (اتركه فارغًا للقراءة من stdin) [الافتراضي: ]
-W, --workers <workers>
عدد عمليات فحص عنوان URL المتزامنة.
استخدم -W0 لتشغيل كل شيء بالتوازي [الافتراضي: 1]
المعاملات:
الرؤوس:
يتم تكامل Burp Suite عبر إضافة send to.
أعط اسمًا للإدخال وأدرج السطر التالي في الأمر:
/path/to/x8 --progress-bar-len 20 -c 3 -r %R -w /path/to/wordlist --proto %T --port %P
يمكنك أيضًا إضافة وسائطك المستخدمة بشكل متكرر مثل --output-format و --replay-proxy و --recursion-depth و...
ملاحظة إذا كان شريط التقدم لا يعمل بشكل صحيح --- حاول تقليل قيمة --progress-bar-len.
قم بالتبديل من "Run in background" إلى "Run in terminal".

إذا واجهت مشكلات في عرض الخط في الطرفية، يمكنك ضبط خيارات xterm في Send to Miscellaneous Options. ببساطة استبدل المحتوى الموجود بـ xterm -rv -fa 'Monospace' -fs 10 -hold -e %C، أو استبدل xterm بمحاكي الطرفية المفضل لديك.
الآن يمكنك الانتقال إلى علامة تبويب الوكيل/المكرر وإرسال الطلب إلى الأداة:

في مربع الحوار التالي، يمكنك تعديل الأمر وتنفيذه في نافذة طرفية جديدة.

بعد تنفيذ الأمر، ستظهر نافذة طرفية جديدة تعرض الأداة قيد التشغيل.

ملاحظة: بدءًا من الإصدار v4.0.0، يستخدم التثبيت عبر cargo install فرع crate بدلاً من main. يتضمن هذا الفرع مكتبة reqwest الأصلية التي تقوم بتطبيع HTTP وتمنع إرسال الطلبات غير الصالحة. إذا كنت ترغب في استخدام نسخة reqwest المعدلة دون هذه القيود، أوصي بالتثبيت عبر صفحة Releases أو بناء المصادر.
Docker
git clone https://github.com/Sh1Yo/x8
cd x8
docker build -t x8 .
Linux
# pacman -Sy x8
git clone https://github.com/sh1yo/x8
cd x8
cargo build --release
# انقل الملف الثنائي إلى $PATH حتى تتمكن من استخدامه دون تحديد المسار الكامل
cp ./target/release/x8 /usr/local/bin
# إذا قال أن /usr/local/bin غير موجود يمكنك تجربة
# sudo cp ./target/release/x8 /usr/bin
cargo install x8
Mac
git clone https://github.com/sh1yo/x8
cd x8
cargo build --release
# انقل الملف الثنائي إلى $PATH حتى تتمكن من استخدامه دون تحديد المسار الكامل
cp ./target/release/x8 /usr/local/bin
cargo install x8
Windows