حل تحدي Micro-CMS v2 من Hacker101
في هذا التحدي من Hackerone. نبدأ ببعض التلميحات الخاصة بالعلم الاول:
- Regular users can only see public pages
- Getting admin access might require a more perfect union
- التلميح الاول يتحدث عن أن المستخدمين يمكنهم فقط رؤية المنشورات العامة
- التلميح الثاني يقول بان الحصول على صلاحيات ادمن يحتاج الى المزيد من عمليات union.
على الفور خطر الى بالي استخدام حقن قواعد البيانات من نوع UNION والتي تستطيع التعرف عليها اكثر من هذا الرابط.
بدءت ببعض عمليات الحقن باستخدام الفارزة (') و ('admin)
اضافة فارزة تسبب في ظهور رسالة خطأ Internal Server Error وهذا مؤشر جيد على وجود ثغرة sqli
فكرت في فتح برنامج burpsuit وعمل تخمين على اسماء المستخدمين و كلمات المرور. ولكن الموضوع ياخذ وقتاً طويلا.
جربت اكثر من بايلود ولكنني واجهت صعوبة في تخمين اسم الجدول وذلك لان ثغرة الحقن هي من نوع blind . في النهاية قمت ببعض الغش ☺️ وبحثت عبر الانترنيت ووجدت أن اسم الجدول هو admins
البايلود النهائي سيكون بالشكل التالي
' UNION SELECT 'pass' AS password FROM admins WHERE '1' = '1
وفي حقل كلمة المرور نكتب:
pass
بعد الضغط على زر submit ظهرت لي رسالة تقول أنه تم تسجيلي بنجاح
الضغط على زر Private Page يؤدي الى الحصول على العلم الاول
- What actions could you perform as a regular user on the last level, which you can’t now?
وترجمتها (ماهي الافعال التي يستطيع المستخدم العادي في المرحلة السابقة التي لاتستطيع فعلها الآن؟)
كذلك صفحة changelog تقول: “This version fixed the multitude of security flaws and general functionality bugs that plagued v1. Additionally, we added user authentication; we’re still not sure why we didn’t think about that the first time, but hindsight is 20/20. By default, users need to be an admin to add or edit pages now.”
استخدمت برنامج burpsuit لتعديل الريكوست ولم استطيع الحصول على نتيجة. لاحقاً تعلمت انه يمكنني استخدام ميثود مختلفة باستخدام اداة curl من سطر الاوامر فاصبح الامر النهائي:
curl -X POST https://7b44997630caaec756ff4da81538e9c9.ctf.hacker101.com/page/edit/1
على الفور حصلت على العلم الثاني
قررت استخدام وردليست من مستودع github الخاص بتحديات hacker101 والتي تحتوي على الاسم الاول فقط على امل ان يكون التحدي يعمل بالطريقة التي توقعتها . استخدمت burusuite وقمت باعتراض الريكوست ثم قمت بارسال الريكويست الى الـ intruder.
بعد ضبط الـ positions واختيار الوردليست , بدءت الهجوم ووجدت ان اسم المستخدم هو betsy . حيث ان حجم الريكوست اكبر من باقي الريكويستات
عند ادخال اسم المستخدم besty وكلمة مرور عشوائية لاحظت ظهور رسالة جديدة Invalid password . وهذا يعني اننا عرفنا اسم المستخدم الصحيح. بقي لنا تخمين كلمة المرور . بعد تخمين كلمة المرور وجدت ان كلمة المرور teresa يظهر لنا رد بحجم مختلف مما يعني انها كلمة المرور الصحيحة
باستخدام بيانات تسجيل الدخول الجديدة تمكنت من تسجيل الدخول بنجاح والحصول على العلم الثالث
الحمد لله انهينا التحدي . انتظروني في مقالات وتحديات اخرى ان شاء الله.