TryHackMe|UltraTech WriteUp\Walkthrough (Arabic)
بسم الله
===============================================================
كلمة IP في كل الكوماندز اللي أكتبها تُستبدل بالـIP للمشين حقتكم على TryHackMe
أول حاجة نشغل الـmachine ونتأكد إننا اتصلنا بشبكة TryHackMe والاتصال مضبوط، بعدين نبدأ بأول خطوة للحل وهي إننا نسوي scan للشبكة باستخدام nmap
sudo nmap IP -vv
نرجع نسوي Aggressive سكان على نفس هذه البورتات
sudo nmap IP -vv -A -p 21,22,8081
طلع معانا على بورت 21 ftp وعلى 22 ssh وعلى 8081 Node.js framework، بما إن ما عندنا credentials نقدر ندخل بها على بورت 22 أو 21 فبنبدأ نشتغل على بورت 8081.
وكمان نسوي سكان على جميع البورتات اللي على الجهاز، عشان نشوف لو في بورتات ما طلعت معانا من السكان الأول
sudo nmap IP -vv -A -p-
هذا السكان بيطول فنخليه يشتغل في نافذة لوحده وبعدين نرجع نشيك عليه :).
نرجع لبورت 8081 ونزورها في المتصفح. في الصفحة الرئيسية وضح معانا إنها API ومافي شيء ثاني مهم. الحين بنسوي gobuster scan ونشوف ايش يطلع معانا مسارات
gobuster dir -w /usr/share/dirb/wordlists/common.txt -u http://IP:8081/
طلع معانا مسارين
مسار auth ما فيه شيء مهم، ومسار ping إذا رحنا له يطلع لنا error. ولكن المسار اسمه غريب ومو بالعادة نقابل مسار اسمه ping وممكن إنه فعلا ينفذ ping command وعشان نختبر إذا هالكلام صحيح، بنروح للصفحة على المتصفح ونغير الرابط بهالطريقة
http://IP:8081/ping?ip=IP
بحيث يسوي ping لنفسه، وبيطلع معانا هالنتيحة:
واللي تدل إنه فعلا يسوي ping، طيب يعني نقدر ننفذ كوماندز باستخدام هذا المسار، وعشان نسوي كذا بعد الـIP بنحط
%0A
ونضيف أي كوماند نبغاها مثل ls
http://IP:8081/ping?ip=IP%0Als
وفعلا بيطبع لنا الملفات الموجودة في المجلد
*ملاحظة: لو تبغون تعرضون نتيجة الكوماند بشكل أرتب افتحوا الـsource code للصفحة
في عندي أكثر من ملف، لكن في ملف DB وممكن يكون فيه معلومات مفيدة، مثل كلمات سر أو أسماء مستخدمين وعشان نعرضه نستخدم هذه الكوماند:
http://IP:8081/ping?ip=IP%0Acat+utech.db.sqlite
وهنا استخدمنا + بدل المسافة لأن ما يمدينا نحطها بالكوماند، وفعلا لما شغلناه طلع معانا أسماء مستخدمين وكلمات سرهم ولكنها مشفرة.
عندي اليوزر r00t واليوزر admin وفي أكثر من موقع ممكن نستخدمه عشان نفك الهاش، أنا استخدمت md5hashing وبيطلع لكم الكلمتين كلها.
الحين صار عندي كلمتين سر وبرضو اسمين لمستخدمين، بنحاول ندخل للجهاز باستخدام SSH واللي بيضبط معاكم هو المستخدم r00t
ssh r00t@IP
وبكذا دخلنا على النظام :).
قبل ما نكمل تذكرون السكان اللي سويناه على جميع البورتات ؟ إذا رجعنا له بيطلع لنا بورت رقم 31331 وإذا سوينا لها سكان باستخدام -A بيطلع لنا إنو موجود عليها Apache Server، هذي الصفحة إذا زرناها وجربنا نبحث فيها ما فيه شيء مهم، فبنسوي عليها gobuster ونشوف ايش يطلع معانا مسارات.
gobuster dir -w /usr/share/dirb/wordlists/common.txt -u http://IP:8081/
طلع معانا أكثر من مسار، اللي مهم فيها وبنشوفه هو robots.txt بداخله بنلقى مسار واحد فقط
ملاحظة:robots.txt هو ملف يحتوي على المسارات اللي الموقع ما يبغى المتصفحات توصل لها، وأيضا يحتوي على المتصفحات اللي ممنوعة توصل للموقع. أحيان هذا الملف يحتوي معلومات مهمة.
وإذا رحنا لهذا المسار بنلاقي صفحة فيها 3 مسارات
مسار what.html ما فيه شيء مهم، أما مسار partners.html بنلقى فيه صفحة دخول
ولو استخدمنا الـadmin credentials اللي حصلنا عليها بالأعلى بيدخلنا وبنلقى رسالة من lp1 إلى r00t
وهذا مثل التلميح إنو فيه مستخدم اسمه lp1 على فرض إننا ما عرفنا إنه المسار ping ممكن ينفذ كوماندز واشتغلنا مباشرة على بورت 31331 فممكن كنا أخذنا أسماء هذول اليوزرين وحاولنا نسوي brute force وبكذا حصلنا على وصول للجهاز، لكن احنا الحين أصلا قدرنا ندخل على الجهاز وانتهينا من هذه الخطوة، لذلك نتجاهل هذه البورت معاد نحتاجها في الحل :).
نرجع على الجهاز.
بما إننا دخلنا كـr00t، فالحين اللي نبيه هو أول 9 أحرف من الـprivate key للـroot، وهذا المفتاح يكون مخزن دائما في الـhome directory للمستخدم داخل مجلد مخفي اسمه ssh والمفتاح يكون في ملف اسمه id_rsa، لكن عشان نوصل له لازم أول نرفع صلاحياتنا لرووت. بأستخدم linpeas.sh عشان يساعدني ويجمع معلومات عن التارقيت، فأحتاج أنقله له باستخدام أي طريقة، أنا استخدمت nc
أول شيء نجهز المُستقبِل على التارقيت
وهذا على جهازي في المجلد اللي موجود فيه linpea.sh
ثم نغير صلاحيات linpeas.sh إلى ملف تنفيذي عشان نقدر نشغله chmod +x linpeas.sh ثم نشغله
./linpeas.sh
ما بنطول وبيطلع لنا docker مكتوب بالأحمر والخلفية صفراء وهذا يعني إن هنا 95% احتمالية لـرفع الصلاحيات. باختصار هنا يقولي إن r00t هو من ضمن قروب docker على الجهاز، وفي طريقة جدا سهلة للحصول على root shell
عشان نعرف وشهي بنروح لـ GTFOBins ونبحث عن docker ثم تحت shell ننسخ الكوماند الموجودة
لما ننفذها أول شيء بيطلع لنا error لأن ما عندنا alpine image فعشان نحل هالمشكلة، بنبحث ونشوف وش عندنا صور على الجهاز ونستخدمها عشان نرفع صلاحياتنا.
docker image list
docker run -v /:/mnt --rm -it 495d6437fc1e chroot /mnt sh
وبكذا بنحصل على root shell
cd /root/.ssh
cat id_rsa
وناخذ أول 9 أحرف من المفتاح وبكذا نجاوب آخر سؤال ونخلص من التحدي ✨✨
وهذه إجابات الأسئلة الموجودة في TryHackMe باستثناء كلمة السر وآخر سؤال :)
اسأل الله التوفيق لي ولكم..















Comments
Post a Comment