Search 🔎🖥️

TryHackMe|Startup WriteUp\Walkthrough (Arabic)

بسم الله



رابط الغرفة: https://tryhackme.com/room/startup

----------------------------------------------------------------------

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

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

sudo nmap IP -vv


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

بورت 21 شغال عليها FTP ويسمح بتسجيل الدخول كـAnonumous، باقي البورتات، 22 SSH و 80 HTTP.

هنا على FTP عندي ملف وصورة ومجلد اسمه FTP، وهذا المجلد writable يعني يمدينا نعدل عليه. الحين بنسويdirectory enumeration  على بورت 80 باستخدام gobuster

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

هنا طلع معانا مسارات معتادة، المميز بينها هو files. نستعرضه على المتصفح

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

   

هذا مجلد FTP فارغ، وهو اللي بنرفعه عليه الـshell. أنا استخدمت الـpentestmonkey php shell أخذتها من الموقع revshells، ثم حفظتها داخل ملف سميته shell.php.


نجهز الـListener  على جهازنا nc -nlvp 4444، وتأكدو إن رقم البورت مطابق للي حطيتوه بالـshell، الحين نروح على FTP ونسجل دخول كـAnonymous والطريقة سهلة، أول شيء نتصل باستخدام

ftp IP

لما يطلب اسم المستخدم ندخل anonymous ولما يطلب كلمة السر فقط نضغط Enter

بعدين نروح للمجلد ftp باستخدام cd ftp ثم نرفع ملفنا باستخدام put shell.php

الحين الملف جاهز عندنا وكل شيء تمام، باقي بس نشغل الـshell بإننا نروح على المتصفح ونحدث الصفحة حقت مجلد ftp ثم نضغط على ملفنا اللي رفعناه، كذا بتشتغل معانا تمام.  

أول ما نحصل على الـshell  نشغل هذه الكوماند

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

عشان تصير الـshell حقتنا أفضل

هنا دخلنا على الـ/  مباشرة، يعني المجلد اللي في رأس النظام، إذا طالعنا للملفات اللي فيه، في مجلدين اللي هم vagrant وincidents وملف recipe.txt مثيرة للاهتمام، ليه؟ لأنه بالعادة ما يكون في ملفات أو مجلدات بهذا الإسم هنا. إذا رحنا على vagrant المجلد فاضي وما فيه شيء. أما recipe.txt فهو يحتوي على إجابة أول سؤال وهي Love.

بعد كذا نشيك على incidents

فيه عندي ملف اسمه suspicious.pcapng من الامتداد نعرف إنه ملف wireshark بننقله لجهازنا ونفتحه بـwireshark. فيه طرق كثيرة لنقل الملفات، أنا هنا استخدمت nc. بالبداية على جهازكم في المكان اللي تبون تحفظون فيه الملف تشغلون الكوماند اللي بالصورة تحت. 

ثم على الـvictim تشغلون الكوماند زي بالصورة أسفل. وبكذا رح يوصل الملف على جهازكم. 

نفتح الملف بواسطة wireshark ثم نضغط على أي TCP Packet وبزر الماوس الأيمن نختار Follow>>TCP Stream  

 بعدين نضغط على السهم لفوق إلى ما نوصل إلى 7

 

هنا بنلاقي رصد لنشاط المستخدم www-data على الجهاز، وفي آخر الصورة بتلاحظون وجود كلمة سر جرب www-data يستخدمها لكن ما ضبطت، بدون تفكير واجد أكيد إنها موجودة لسبب، فبنشوف وش عندي مستخدمين آخرين على الجهاز ونجربها معاهم.  

 عشان نعرف وش فيه مستخدمين آخرين على النظام، نروح لـ/home ونعرض المجلدات، هناك بنلاقي lennie، وإذا جربنا الباسوورد مع lennie بيدخلنا حسابها، زي مو واضح تحت.

 الحين نروح للـhome directory لـlennie وهناك بنلاقي اليوزر فلاق. باقي نحصل على الـroot فلاق

لاحظوا هنا لما عرضنا الملفات مع صلاحياتها، طلع مجلد scripts الموجود هنا يملكه root وبداخله عندي ملفين، ملف نصي وسكريبت.

إذا استعرضنا السكريبت planner.sh بنلاحظ إنه يسوي شيئين:

  1. يطبع قيمة المتغير LIST في الملف اللي اسمه startup_list.txt، اللي موجود بنفس المكان
  2. ينفذ سكريبت آخر اسمه print.sh موجود على /etc/

إذا استعرضنا صلاحيات print.sh بنلقى إن احنا اللي مالكينه وإنه يسوي حاجه وحده بس، يطبع Done!. طيب الحين كيف نستفيد من هذا كله؟ مو print.sh جزء من السكريبت planner.sh اللي ينفذه root، معناته إن أي شيء بنحطه في print.sh بينفذه لنا root وبكذا يمدينا ننفذ أي كوماند نبغاه بصلاحيات root. 

اللي نبيه احنا هو إننا نحصل على root.txt  من المجلد /root فبكل بساطة بنضيف سطر لـprint.sh يخليه ينسخ الملف root.txt ويحفظه في المجلد الرئيسي لـlennie بنفس الاسم. فالكوماند تكون مثل مو واضح تحت:

وبعد طباعة هذه الكوماند في print.sh يصير السكريبت كذا:

واضح لنا إن planner.sh يتم تنفيذه بواسطة cronjob، وعلى الغالب إنه يشتغل كل دقيقة، فنستنى رأس دقيقة جديدة ونروح على الـhomedirectory لـlennie ونعرض الملفات وبنلقى root.txt  موجود عندنا.  

 وبكذا يكون حصلنا على الـroot flag  

 

كذا خلصنا التحدي، أسأل الله التوفيق لي ولكم. 

Comments

Popular posts from this blog

TryHackMe|Blog WriteUp\Walkthrough (Arabic)

eJPTv2 Exam Review (Arabic)

TryHackMe|Blueprint WriteUp\Walkthrough (Arabic)