صفقة XSSـات أورجانيك

صفقة XSSـات أورجانيك




السلام على من إتبع الهدى، و أشهد أن لا إله إلا الله و أن محمداً عبده ورسوله.
انا محمد حماد (سويلم)، مكتشف ثغرات نوب, فلاح كبير قد الدنيا, بحاول نوعا ما اكون سبب ف إستقلال المجتمع العربي في مجال أمن المعلومات.






الحمدلله قدرت إني أكتشف أكتر من 20 ثغرة XSS دفعه واحده بإستخدام أسلوب بسيط و جميل هوضحه في المقالة إن شاء الرحيم
أهم النقط اللي هتكلم عنها هتكون :




1. جمع المعلومات

عامل script بسيط قريب إن شاء الله هنزله GitHub ممكن يفيد حد



كل مهمته انه بيجمع الـ Subdomains من أهم 8 مصادر بتُستخدم في عملية الـ Subdomain Enumeration مقسومين لـ3 أدوات و 5 مواقع.

  • Subfinder
  • Assetfinder
  • Findomain
  • WayBack Archive
  • crt.sh
  • Anubis
  • Urlscan
  • OTX
وبعدين بيفلتر النطاقات اللي بترجع:

200: بيكون عليهم 90% من الأختبار
403: لزوم التخطي
404: عشان اغلب النطاقات اللي ممكن تعمل عليها Takeover بترجع 404
3xx: عشان بحب ادور علي ثغرات الـ Open redirect نظرا لأن أول باونتي كانت منها ف ليا قصة حب معاها

وبعدين بفلترهم بـ httpx من غير اي flags عشان لو هشغل اوتوميشن او حاجه.

و الـ script بعد كدا بيجمع الـ Urls & Endpoints من كل النطاقات اللي اتجمعت دي بإستخدام waybackurls, gau.

دي ال 3 مراحل الأساسيه في الـ script.

بعد كدا ببدأ أختبر النطاقات اللي بترجع 200 و بتبدأ رحلة البحث عن الـ Functions اللي ممكن نطلع منها بثغرات.



2. إكتشاف نقطة الضعف و إختبارها

في أحد النطاقات لاحظت إن لما أكتب اي حاجه في جزء الـ location.pathname بتنعكس في الصفحه في كود javascript بالشكل دا:



ملحوظة: جزء الـ location.path اللي بيكون بعد الـ / زي مثلا https://example.com/swilam اهو /swilam دا هو الـ location.path

بدأ اعمل break لكود الـ JS دا بأني أعمل concatinate للنص اللي اللي فيه swilam ودا بأني اخلي النص دا مقسوم لـ3 أجزاء و هخلي جزء منهم هو الـ payload بتاعي اللي هيكون swi'+confirm(1)+'lam , ف النتيجة هتكون:



وهنا تظهر أهمية البرمجه!!!

بس الرحلة دي لم تنتهي بعد!!!



3. أسلوب الأوتوميشن

لقيت نفس الـ XSS في كمان اتنين Subdomains مختلفين بنفس التكنيك و نفس الأنعكاس اللي بيحصل في الكود

ف هنا توقعت ان أكيد هلاقي نفس الثغره ف نطاقات تانيه

بس أكيد مش هجرب كل النطاقات دي يدوي!! طب و العمل؟

هنا قررت أعمل سكريبت اباصيله كل الـ Subdomains اللي جمعتها و هو يشوف شغله و ها قد كان.

بس عندي مشكلة في أداة nuclei ف مش هعرف أشتغل بيها بس ولا بيهمنا, الـ bash script هتقضى الغرض و زياده إن شاء الله.



دا الـ script الظريف كل فكرته اني هديله الـ link وليكن https://example.com و هيضيف له الـ payload دا /swilam'-confirm(1)-' عشان تكون النتيجة https://example.com/swilam'-confirm(1)-' ومن ثم اخزنها في target_url

و بعد كدا هستخدم curl -s -w "%{http_code}" -o response_body.txt "$target_url" عشان اتشيك علي الـ responde code هل هو 404 ولا لا و احفظ الـ repsonse body عشان ادور فيه علي الـ payload بتاعي هل إنعكس ولا لأ ولو الشرطين اتحققوا يبقا بنسبه كبيره النطاق دا مصاب بنفس السيناريو. و الـ -s عشان ميطلعش نتايج ع الشاشه و بعدين يمسح الفايل اللي حفظ النتايج لزوم البيرفيكشانيزم هههه.

وهنا تظهر أهمية البرمجه كلاكيت تاني مره!!!

أكيد سألت نفسك ازاي هيباصي ملف فيه نطاقات كتيره لسكريبت بيستقبل نطاق واحد بس!

هقولك بسيطه while read -r url; do ./myScript.sh $url >> potinxss.txt; done < Subdomains.txt و نسيبه يعيش مع نفسه, مسألة وقت....



وتارارارا...24 نطاق مصاب بنفس السيناريو و الحمدلله أنتهينا كدا من المقالة دي و إن شاء الله تكون أفادت ولو بشكل بسيط.

اللهم علمنا ما ينفعنا و أنفعنا بما علمتنا, والسلام عليكم ورحمة الله وبركاته.