
إضافة متصفح Chrome/Firefox تُظهر تنبيهات لمعاملات الاستعلام المنعكسة (reflected query params)، وتعرض روابط أرشيف Wayback للمسار الحالي، وتُظهر العناصر المخفية وتُفعّل العناصر المعطّلة.
هذه إضافة لمتصفح كروم/فايرفوكس يمكنها القيام بالتالي:
'," و < تنعكس دون ترميز.Xnl Reveal في أدوات المطوّر DevTools بالمتصفح.Xnl Reveal بأدوات المطوّر DevTools بالمتصفح).استُوحيت ميزة عرض تنبيه للمعاملات المنعكسة من تعليق @renniepak على الحلقة 42 من بودكاست Critical Thinking - Bug Bounty حيث ذكر أنه يمتلك إضافة متصفح خاصة به تُعلمه بأي انعكاسات.
يُعرض عدد المعاملات المنعكسة التي تم العثور عليها عبر شارة خضراء على أيقونة الإضافة. ومع ذلك، إذا كان أي من أسماء المعاملات المنعكسة ضمن الفئات الموضحة في بحث معاملات "sus" بواسطة @Jhaddix و @G0LDEN_infosec فستكون الشارة حمراء. وإذا وُجدت أي معاملات "sus"، فستظهر الفئات أيضاً في مخرجات تبويب Xnl Reveal في DevTools وصندوق التنبيه والحافظة، على سبيل المثال boringParameter, query [XSS], path [LFI/RFI | SSRF | XSS] (وهو نفس تحديد معاملات "sus" في إضافة GAP Burp Extension الخاصة بي).
استُوحيت ميزة إظهار العناصر المخفية وتفعيل العناصر المعطّلة من هذه التغريدة لبودكاست Critical Thinking - Bug Bounty، وقد أنشأتها في البداية كإشارات مرجعية (bookmarks) في المتصفح.
تظهر أيقونة الإضافة عادة بخلفية سوداء
، ولكن إذا ظهرت الأيقونة بخلفية حمراء
، فهذا يشير إلى أن Wayback CDX Server API غير متاحة على الأرجح. حتى إذا كانت الميزات الرئيسية معطّلة، ستتحقق الإضافة من حالة الـ API كل 10 دقائق.
مهم: عند استخدام أدوات مثل waymore أو waybackurls أو gau للحصول على روابط من أرشيف Wayback، فإنها تستخدم CDX Server API. إذا كانت الـ API معطّلة، فلن تحصل على أي بيانات من Wayback Machine، بل من مصادر أخرى فقط. أيضاً، waymore فقط هو من سيُعلمك بوجود مشكلة.
انسخ (clone) هذا المستودع إلى جهازك ثم اتبع التعليمات أدناه، اعتماداً على ما إذا كنت تريد التثبيت على متصفح كروم أو فايرفوكس:
افتح مدير الإضافات في كروم باتباع: قائمة كباب (ثلاث نقاط عمودية) -> Extensions -> Manage Extensions
إذا لم يكن وضع المطوّر (Developer mode) مفعّلاً، فعّله بالنقر على المفتاح في الزاوية العلوية اليمنى.
انقر الآن على زر Load unpacked في أعلى اليسار.
انتقل إلى المجلد الذي يحتوي على مجلد Xnl Reveal وحدده.
تم تحميل الإضافة الآن. يمكنك النقر على أيقونة الإضافة في شريط الأدوات، ثم النقر على أيقونة الدبوس لتثبيت Xnl Reveal في شريط الأدوات.
مهم: مع إضافات فايرفوكس، ستحتاج إلى تحميلها في كل مرة تفتح فيها فايرفوكس. للأسف لا يمكنني إضافتها إلى متجر فايرفوكس لتجنب ذلك لأنه يجب أن تكون Manifest v3 للقيام بذلك. يجب أن تستخدم Xnl Reveal إصدار Manifest v2 (إلا إذا كان بإمكان شخص آخر اكتشاف طريقة لذلك، لأنني لم أستطع) الذي يتمتع بقيود أمنية أقل تسمح لها بالعمل.
انتقل إلى about:debugging في تبويب متصفح جديد.
انقر على عنوان This Firefox على يسار الصفحة.
انقر على زر Load Temporary Add-on... تحت عنوان Temporary Extensions.
انتقل إلى مجلد Firefox من المستودع الذي تم تنزيله واختر أي ملف، ثم انقر على Open.
تم تحميل الإضافة الآن. يمكنك النقر على أيقونة الإضافة في شريط الأدوات، ثم النقر على أيقونة الترس (الإعدادات)، واختيار Pin to Toolbar.
Xnl Reveal في شريط الأدوات واخترت Options، فسيتم نقلك إلى صفحة الخيارات.Xnl Reveal في شريط الأدوات واخترت Manage Extension، ثم انقر على تبويب Options لرؤية صفحة الخيارات.
لديك الخيارات التالية:
Canary token - عند إجراء طلبات لاختبار انعكاس معاملات الاستعلام، هذه هي قيمة المعامل التي يتم استخدامها والتحقق منها.Check for reflection of ' " < - عند إجراء طلبات لاختبار انعكاس معاملات الاستعلام، تُلحق السلسلة '",xnl بنهاية Canary token. إذا انعكس أي من هذه الأحرف دون ترميز، فسيتم الإبلاغ عن ذلك أيضاً. إذا تسبب تمرير تلك الأحرف في عدم انعكاس Canary token نهائياً (ربما يحجب جدار حماية تطبيقات الويب WAF حرف <)، فسيتم إجراء طلب آخر باستخدام Canary token فقط.Show alert box for reflections - إذا تم تحديد هذا الخيار، وتم تحديد Show query parameter reflections في القائمة المنبثقة (انظر أدناه)، فسيتم عرض صندوق تنبيه في المتصفح يتضمن تفاصيل أي معاملات استعلام تنعكس.Copy reflection text to clipboard - إذا تم تحديد هذا الخيار، وتم تحديد Show query parameter reflections في القائمة المنبثقة (انظر أدناه)، فعند العثور على معاملات منعكسة، تُوضع التفاصيل في حافظة المستخدم بالإضافة إلى كتابتها في تبويب في DevTools (وفي صندوق تنبيه إذا طُلب ذلك). وهذا يعني أنه بمجرد رؤية صندوق تنبيه أو تفاصيل في تبويب DevTools، يمكنك الانتقال إلى ملاحظاتك ولصق التفاصيل فوراً. إذا نقرت على شعار Xnl Reveal في شريط الأدوات، فسترى قائمة منبثقة.
لديك الإعدادات التالية:
ENABLE REVEAL - إذا لم يتم تحديد هذا الخيار، فلن تفعل الإضافة شيئاً. إذا تم تحديده، فستقوم باتخاذ إجراءات معينة على صفحات الويب التي تتم زيارتها (إذا كانت ضمن النطاق)، اعتماداً على الخيارات الأخرى المحددة.Show query parameter reflections - إذا تم تحديد هذا الخيار، فعند زيارة صفحة ويب تحتوي على أي معاملات استعلام، يتم إجراء طلب خلفي لكل معامل، مع استبدال كل معامل بدوره بـ Canary token من صفحة الخيارات. إذا تم العثور على الرمز المميز (token) لأي من المعاملات في الاستجابة، فتُكتب رسالة في تبويب Xnl Reveal في DevTools تعطيك الرابط وجميع المعاملات في تلك الصفحة التي انعكست. إذا تم تحديد الخيارات، يمكن أيضاً عرض هذه التفاصيل في صندوق تنبيه بالمتصفح ونسخها إلى حافظة المستخدم. وستعرض الإضافة أيضاً شارة بعدد الانعكاسات التي تم العثور عليها.CHARSET IS NOT SPECIFIED IN RESPONSE! إذا لم يتم تعيين charset بشكل صريح لصفحة HTML. قد يعني هذا أن XSS يمكن أن يكون أسهل باستخدام خدعة موضحة في هذه المدونة.Write Wayback endpoints to DevTools - إذا تم تحديد هذا الخيار، فسيتم استرجاع حتى 1000 نقطة نهاية من أرشيف Wayback لكل موقع/مسار تتم زيارته في المتصفح وكتابتها في تبويب Xnl Reveal في DevTools. وبمجرد إرسال موقع/مسار إلى Wayback API، لن يتم إرساله مرة أخرى، إلا إذا تم النقر على Clear Saved URLs/Params.إذا نقرت بزر الفأرة الأيمن على صفحة ويب، فستحصل على قائمة السياق في المتصفح. على سبيل المثال، إذا كنت على example.com وكان لديك Whitelist محدداً في الخيارات، فسترى هذا:
هذه الخيارات متاحة حتى لو لم يتم تحديد خيار ENABLE REVEAL في القائمة المنبثقة. هناك 3 خيارات يمكنك الاختيار من بينها:
Get wayback endpoints - إذا تم النقر على هذا الخيار، فسيتم فتح تبويب جديد يحتوي على نقاط نهاية أرشيف Wayback للنطاق الخاص بالنافذة التي تم النقر فيها. لا يتأثر هذا الخيار بأي إعدادات أخرى ويمكن تشغيله حتى لو لم تكن الإضافة مفعّلة.Show hidden elements - سيعرض هذا جميع العناصر المخفية في الصفحة الحالية، بنفس الطريقة التي يعمل بها خيار Show hidden elements، لكن دون الحاجة إلى تفعيل الإضافة.Enable disabled elements - سيفعّل هذا جميع العناصر المعطّلة في الصفحة الحالية، بنفس الطريقة التي يعمل بها خيار Enable disabled elements، لكن دون الحاجة إلى تفعيل الإضافة.Show Google cache version - إذا تم النقر على هذا الخيار، فسيتم فتح تبويب جديد يعرض نسخة كاش جوجل (Google Cache) من الصفحة الحالية. حتى إذا لم يعد موقع الويب متاحاً، سيكون لدى جوجل نسخة مخزنة في أرشيفاتها، ويمكنك الوصول إلى الصفحة المخزنة مؤقتاً.Show FOFA domain search - إذا تم النقر على هذا الخيار، فسيتم فتح تبويب جديد مع FOFA يعرض نتائج البحث لـ domain="{TARGET}"، حيث {TARGET} هو نطاق التبويب النشط.Create word list - إذا تم النقر على هذا الخيار، فسيتم إنشاء قائمة كلمات من محتويات الصفحة وعرضها في تبويب جديد.كانت الرسائل المتعلقة بانعكاسات المعاملات ونقاط نهاية Wayback تُكتب سابقاً في وحدة التحكم (console)، لكنها الآن تُكتب في تبويب منفصل ضمن أدوات المطوّر DevTools في المتصفح. من هنا يمكنك:
Filter messages... - أدخل أي نص لإجراء تصفية فورية للرسائل، مما يسهل العثور على انعكاسات محددة أو نتائج Wayback بين الرسائل المخزنة.Copy All Messages - انسخ جميع الرسائل إلى الحافظة لتتمكن من لصقها في ملاحظاتك!Copy All URLs - استخرج جميع الروابط الفريدة من الرسائل المرئية حالياً (مع مراعاة أي عامل تصفية نشط) وانسخها إلى الحافظة، رابط واحد في كل سطر. هذا مفيد لجمع جميع الروابط من الانعكاسات ونتائج Wayback بسرعة لمزيد من الاختبار.Clear Messages and Cache - امسح جميع الرسائل من التبويب ومن التخزين المحلي. سيمسح أيضاً أي نقاط نهاية Wayback التي تم البحث عنها سابقاً.
لن تكون هذه الإضافة مثالية!
أحياناً قد يؤدي تغيير الكود إلى كسر صفحة. إذا واجهت مشكلة، فإن إلغاء تحديد إعداد معين في القائمة المنبثقة سيعيد تحميل الصفحة وقد تعود للعمل بشكل طبيعي، لكنك ببساطة لن تتمكن من إجراء الفحص.
قد تظهر أيضاً بعض الأخطاء في صفحة Manage extension في حالات معينة.
إذا قمت بتشغيل خيار يدوياً من قائمة السياق ولم يحدث شيء، فقد تحتاج إلى تحديث الصفحة التي تحاول تشغيل الخيار عليها والمحاولة مرة أخرى.
Create word list إلى نسخة فايرفوكس.Error copying to clipboard (NotAllowedError: Document is not focused.)true و false و 1 وغيرها، نظراً لوجود الكثير من النتائج الإيجابية الكاذبة.إذا واجهت أي مشاكل على الإطلاق، أو كانت لديك أفكار للتحسين، فلا تتردد في فتح مشكلة (issue) على Github. إذا كانت هناك مشكلة، فسيكون من المفيد تقديم الرابط الدقيق الذي كنت عليه، بالإضافة إلى أي أخطاء في وحدة التحكم.
حظاً موفقاً وصيداً موفّقاً!
إذا كنت تحب الأداة حقاً (أو أي أدوات أخرى)، أو ساعدتك في العثور على مكافأة (bounty) رائعة، ففكّر في شراء قهوة لي! ☕ (يمكنني استخدام الكافيين!)
🤘 /XNL-h4ck3r
Xnl RevealParam blacklist - هذه قائمة بأسماء معاملات مفصولة بفواصل (مثل param1,param2) لا تريد استبدالها بـ canary token للتحقق مما إذا كانت تنعكس. يمكن استخدام هذا عندما يتسبب اختبار معاملات معينة في مشاكل، مثل تسجيل خروجك.Check delay - عند تحميل صفحة، واعتماداً على الإعدادات، ستحاول الإضافة إظهار العناصر المخفية وتفعيل العناصر المعطّلة. ومع ذلك، أحياناً تُحمَّل أجزاء من الصفحة ديناميكياً ولا تكون في الاستجابة الأصلية. ستحاول الإضافة الإظهار والتفعيل مرة أخرى بعد هذا التأخير (بالثواني) بعد أن يتم تحميل الصفحة مبدئياً.Wayback RegEx - إذا تم تحديد إعداد كتابة نقاط نهاية أرشيف Wayback، فسيتم عرض نقاط نهاية Wayback التي تطابق التعبير النمطي RegEx المُدخل فقط في تبويب DevTools. إذا تُرك الحقل فارغاً، فسيتم إرجاع حتى 1000 نقطة نهاية Wayback. مهم: أي RegEx يتم إدخاله سيُعامل كتعبير غير حساس لحالة الأحرف (case insensitive)KNOXSS API Key - أدخل مفتاح KNOXSS API الخاص بك. إذا تم حفظ مفتاح وتم تفعيل Show query parameter reflections في القائمة المنبثقة، فعند العثور على انعكاس، يُرسل الرابط تلقائياً إلى KNOXSS API. يتم تعيين ترويسة X-API-KEY بالمفتاح المحفوظ، ويتم تمرير ملفات تعريف الارتباط (cookies) الخاصة بالصفحة الحالية كترويسات مصادقة. تُكتب استجابة KNOXSS API في تبويب Xnl Reveal في DevTools. يتم إجراء استدعاء الـ API بشكل غير متزامن بحيث لا يحجب التفاعل مع الصفحة.Extension Scope:
Whitelist أو Blacklist - يحدد هذا المواقع التي ستخضع لفحوصات انعكاس المعاملات و/أو استرجاع نقاط نهاية Wayback. واعتماداً على الخيار المختار، يجب أن يحتوي المضيف على الكلمة المُدخلة أو ألا يحتويها حتى تتم معالجته.Host match word to add - أدخل كلمة موجودة في اسم المضيف (أو اسم مضيف كامل) تريد إضافتها إلى القائمة البيضاء أو السوداء، وانقر على زر Add لإضافتها إلى قائمة النطاق. على سبيل المثال، إذا كنت تريد العمل على صفحات Redbull فقط، فقط أضف redbull واجعله في القائمة البيضاء.Add - إضافة كلمة مُدخلة إلى قائمة النطاق.Remove selected - إزالة الكلمة (الكلمات) المحددة من قائمة النطاق.Clear all - إزالة جميع الكلمات من قائمة النطاق.Save - إذا تم تغيير أي خيارات، انقر على هذا الزر لحفظها للاستخدام المستقبلي.Clear Saved URLs/Params - إذا كانت الإضافة تبحث عن معاملات استعلام منعكسة، فلن ترغب في الاستمرار في تلقي تنبيهات لنفس مجموعات الرابط/المعامل، لذلك يتم تخزين تلك التي تم الإبلاغ عنها لمنع ذلك. ومع ذلك، إذا أردت مسح ذاكرة هذه العناصر، يمكنك النقر على هذا الزر لإزالتها. وبالمثل، لا نريد الاستمرار في إرسال نفس الطلبات إلى أرشيف Wayback، لذلك يتم تخزينها أيضاً، ويمكن مسحها بالضغط على هذا الزر.Show hidden elements - إذا تم تحديد هذا الخيار، فسيتم إظهار أي عناصر مخفية (باستثناء img و span و div). ستظهر بحدود حمراء وملصق أحمر يعطي بعض التفاصيل. أحياناً، إذا كانت الصفحة ديناميكية، فقد لا تظهر العناصر.Enable disabled elements - إذا تم تحديد هذا الخيار، فسيتم إظهار أي عناصر مخفية (باستثناء img و span و div). ستظهر بحدود حمراء وملصق أحمر يعطي بعض التفاصيل. أحياناً، إذا كانت الصفحة ديناميكية، فقد لا تظهر العناصر. يمكنك دائماً النقر على زر Run Now لتغيير الصفحة الحالية المحمّلة.{Add|Remove} {HOST} {from|to} {whitelist|blacklist} - اعتماداً على ما إذا كان اسم مضيف التبويب الحالي موجوداً بالفعل في قائمة النطاق، وما إذا كان خيار القائمة البيضاء أو السوداء محدداً، ستحصل على عنصر قائمة لإضافته أو إزالته. على سبيل المثال، إذا كنت على https://www.redbull.com/gb-en/ وكان لديك Blacklist محدداً في صفحة الخيارات، وredbull.com غير موجود في قائمة النطاق، فسترى عنصر قائمة السياق Add redbull.com to blacklist. مهم: إذا لم يعرض عنصر القائمة المضيف الصحيح، فقد تحتاج إلى تحديث التبويب.