TryHackMe|Ha Joker WriteUp\Walkthrough (Arabic)
بسم الله
رابط الغرفة: https://tryhackme.com/room/jokerctf
----------------------------------------------------------------------
كلمة IP في كل
الكوماندز اللي أكتبها تُستبدل بالـIP للمشين حقتكم على TryHackMe
أول حاجة نشغل الـmachine ونتأكد إننا اتصلنا بشبكة TryHackMe والاتصال مضبوط، بعدين نبدأ بأول خطوة للحل
وهي إننا نسوي scan للشبكة
باستخدام nmap
sudo nmap IP -vv
sudo nmap IP -p 22,80,8080 -vv -A
من المعلومات اللي طلعت معانا من هذا المسح
هي:
زي مو واضح بالصورة، بورت 80 يشتغل عليها أباتشي نسخة 2.4.29 وهذه إجابة السؤال الثاني، وبورت 8080 برضو نفس الشيء، لكن الفرق إن هنا طلع لي خطأ غير مصرح به، معناته إني أحتاج أدخل اسم مستخدم وكلمة سر للدخول على هذه الصفحة، بكذا عرفنا إن البورت اللي ما تحتاج authentication هي 80 وهذا جواب السؤال الثالث واللي تحتاج هي 8080 وهذا جواب السؤال السابع.
إذن الآن بنركز على بورت 80
نسوي directory enumeration عليها
gobuster dir -w /usr/share/dirb/wordlists/common.txt -u htttp://IP/ -t
64
طلع معانا أول ملف يبغاه وهو phpinfo.php وهذا جواب السؤال الخامس، ولسى في ملف آخر، عشان نوسع البحث ممكن نستخدم الإختيار x اللي يضيف أي امتداد نبغاه لجميع الكلمات اللي موجودة في الـwordlist، وهذه الطريقة مفيدة جدا إذا كنا نبحث على ملفات جوا السيرفير. إذن نستخدم نفس الكوماند مع إضافة الامتدادات في الأخير
gobuster dir -w /usr/share/dirb/wordlists/common.txt -u htttp://IP/ -t
64 -x txt,xml
هنا طلع معانا الملف الثاني وهو secret.txt وهذا جواب السؤال الرابع
نشوف هذا الملف بالمتصفح، في عندي محادثة بين
شخصين Batman وJoker
في الأسئلة طالب اسم واحد فقط ويتكون من 5 أحرف إذن هو Joker
-----------------------------------------------------------------
الحين خلصنا من هذه البورت، ننتقل لـ 8080.
هنا لو رحنا لها يحتاج مننا كلمة سر، احنا الآن عندنا اسم مستخدم لكن مافي كلمة سر، إذن بنستخدم Hydra عشان نحصل على كلمة السر، الـbrute force attack بتكون على بروتوكول HTTP الميثود GET وطريقة كتابة الكوماند مفصلة تلقونها على المقطع في يوتيوب من 5:29 إلى 8:34 ، على العموم الكوماند بتكون كالتالي:
hydra -l joker -P /usr/share/wordlists/rockyou.txt IP -s 8080 http-get /
أول شيء وضحنا اسم المستخدم ثم القائمة اللي بنبحث داخلها عن كلمة السر، ثم العنوان والبورت، ثم حددنا الـ HTTP Method اللي هي get وبعدها حددنا المسار اللي فيه صفحة الدخول اللي تطلب كلمة السر واسم المستخدم وهو “/” نضغط Enter ونعطيه وقت يشتغل.
حصلنا على الـcredentials، كلمة السر هي ****** ناخذها ونجاوب السؤال الثامن. الحين نروح لبورت 8080 ونسجل دخول، فتحت معانا مثل المدونة. الحين بما إن عندنا كلمة سر واسم مستخدم، إذن بإمكاننا نسوي سكان باستخدام gobuster ونحدد كلمة السر واسم المستخدم بالاختيار U و P فتصير الكوماند كذا:
gobuster dir -w /usr/share/dirb/wordlists/common.txt -u htttp://IP:8080/ -t 64 -U joker -P ******
طلع معانا نتائج كثيرة بنركز على /administrator وهو جواب السؤال التاسع، و /robots.txt
Robots.txt* هو ملف يحتوي على المسارات اللي الموقع ما يبغى
المتصفحات توصل لها، وأيضا يحتوي على المتصفحات اللي ممنوعة توصل للموقع. أحيان
هذا الملف يحتوي معلومات مهمة.
على /administrator فيه صفحة تسجيل دخول على مدونة Joomla، وبما إن ما عندنا كلمة السر واسم المستخدم
فبنأجل هالصفحة شوي.
الحين في الأسئلة يقولي إن فيه ملف مضغوط،
لما جربت أبحث باستخدام gobuster وأضفت الامتداد zip ما طلع معاي حاجة، فرجعت استخدمت nikto
وطلع معانا الملف لكن اصبروا شوي ممكن يتأخر كم دقيقة لين يطلع معاكم، اسم الملف هو جواب السؤال العاشر.
الحين نروح للمتصفح وندخل على هالرابط http://IP:8080/backup.zip مجرد ما ندخل بيحمل الملف، نختار مكان مناسب على الجهاز ونحمله ثم نفك الضغط عن الملف.
هنا طالب منا كلمة سر، ماهي عندنا لذلك بنسوي crack للملف عن طريق استخدام الأداة fcrackzip
طلعت معانا الباسوورد ****** وهي جواب السؤال 11، الحين نقدر نفك الضغط عن الملف بـunzip
لما يفتح الملف بنلقى عندنا مجلدين جديدة وهي
site و db، نروح لـdb لأن من اسمه يبدو إنه متعلق بقاعدة بيانات
وممكن نلقى داخله معلومات تساعدنا بتسجيل الدخول على Joomla.
داخل db عندي ملف joomladb.sql نستعرض هذا الملف في محرر نصوص أسهل لأنه طويل جدا
الحين لسهولة الحصول على كلمة السر، هو بالأسئلة أعطانا تلميح قوي، وقال “super duper user” فبكل سهولة نبحث داخل الملف عن نفس هذه الجملة وبيطلع لنا اسم المستخدم والهاش لكلمة السر
ننسخ الـhash ونحفظها داخل ملف ونسميه مثلا hash، بعدين نستخدم john عشان نسوي لها crack
إذن كلمة السر هي ******** وهي جواب السؤال 12 واسم المستخدم هو admin وهو جواب السؤال 13، ناخذ هذه المعلومات ونروح على /administrator ونسجل دخول.
الطريقة اللي بتضبط معاكم إن شاء الله وتعطيكم shell هي إنكم تختارون Extensions من أعلى الصفحة، ثم sTemplates >> Template ثم اختاروا beez3
بعد كذا اختاروا صفحة index.php من القائمة اللي على اليسار. بتفتح معاكم الصفحة، الحين نحذف الكود اللي فيها ونجيب مكانه الـshell حقتنا، أنا استخدمت الـpentestmonkey php shell أخذتها من الموقع revshells
نجهز الـListener على جهازنا nc -nlvp 4444
ثم نرجع للمتصفح ونحفظ التغييرات من Save أعلى الصفحة ثم نضغط على Template
Overview الحين
المفروض إن الاتصال يجينا على جهازنا.
تمام الحين حصلنا على وصول للجهاز الحمد لله. احنا دخلنا بحساب المستخدم www-data وهذا جواب السؤال 14، ولو عرضنا القروبات اللي ينضم لها بنلاحظ وجود قروب اسمه lxd وهو جواب السؤال 15.
**lxd هو نوع من أنواع الـContainers وشرحته بالتفصيل على قناتي في فيديو الشرح الموجود بالأعلى من الدقيقة 18:40 إلى 26:10 إذا حابين ارجعوا لها.
إذا بحثنا في قوقل وكتبنا lxd privilege escalation بنلقى طريقة تخلينا نرفع الصلاحيات على Explit-db على هذا الرابط. نبتع الطريقة المكتوبة خطوة خطوة.
أول شيء على جهازي أشغل هذه الـcommand
wget https://raw.githubusercontent.com/saghul/lxd-alpine-builder/master/build-alpine
وبينزل عندي ملف جديد اسمه build-alpine
بعد كذا أشغل هذه
sudo bash build-alpine
بينزل ملف مضغوط
باقي نحمل نفس الـexploit على جهازنا، والطريقة سهلة، ناخذ رقمها أول شيء من نفس الصفحة على Exploit-db
ثم نشغل هذه الكوماند وبينسخ لنا الاكسبلويت على المجلد الحالي
searchsploit -m 46978
mv 46978.sh exploit.sh
هنا حملتها ثم غيرت اسمها للسهولة فقط.
الحين كل الملفات اللي أحتاجها تحملت، بأشغل بايثون سيرفير على جهازي عشان أقدر أنزل الملفات اللي أحتاجها على جهاز الضحية.
الحين نروح لجهاز الضحية مجلد /tmp وننقل الملفات اللي نحتاجها بـwget واللي هي ملف الاكسبوليت والملف المضغوط، مثل اللي واضح بالصورة.
بعدين نشغل السكريبت والطريقة كالتالي:
نغير صلاحيات exploit.sh عشان يمدينا نشغله باستخدام
chmod +x exploit.sh
بعدين نشغل الاكسبوليت كذا
نستنى شوي وبيطلع لنا root shell زي مو واضح لما شغلت الكوماند id طلع لي إني root، نروح لـ/root وناخذ الفلاق، ولأن الحين احنا جوا الـcontainer عشان نوصل لملفات النظام أول شيء بنروح لـ/mnt/root ثم من هناك لـroot فيصير المسار /mnt/root/root وهنا بنلاقي الملف اللي يبغاه واسمه *****.*** واسم الملف هو إجابة السؤال 20.
بكذا يكون انهيت معاكم الحل، كل التوفيق لي ولكم.





























Comments
Post a Comment