lبسم الله الرحمن الرحيم
في هذه التدوينه راح اشرح طريقه حل تحدي Brainfuck من موقع Hack The Box
هذا التحدي يعتبر مشابه لاختبار oscp حسب قائمه TJ Null
اول خطوه نعمل سكان باستخدام NMAP
nmap -sC -sV 10.10.10.17
من خلال نتائج السكان نلاحظ وجود معلومات مهمه في منفذ 443
brainfuck.htb :DNS
sup3rs3cr3t.brainfuck.htb :DNS
orestis@brainfuck.htb :Email
/etc/host
نعدل ملف
ونكتب في نهايته هذا السطر.
10.10.10.17 brainfuck.htb sup3rs3cr3t.brainfuck.htb
الان نقدر نتصفح الموقع من خلال هذا الرابط
https://brainfuck.htb/
استخدمنا اضافه wappalyzer لمعرفه نوع CMS المستخدمه في الموقع
نلاحظ من الصوره السابقه ان الموقع يعمل على وردبريس , نقدر نستخدم اداه تسمى wpscan لفحص مدونات wordpress
wpscan --url https://brainfuck.htb --disable-tls-checks --enumerate u
نلاحظ ان اضافه wp support plus غير محدثه واحتمال اصابتها بثغره.
وايضا نلاحظ اكتشاف اسماء مستخدمين ( admin , administrator )
بحث سريع في موقع https://www.exploit-db.com عن استثمار لهذه الثغره لقيت هذا الرابط في اول نتيجه بحث 😀 رابط الاستغلال
من الرابط السابق نحتاج كود HTML الموجود في المربع الاحمر
ويحتاج نعدل على ثلاث قيم
العنوان
اسم المستخدم ( اكتشفناه من خلال wpscan )
البريد الالكتروني ( اكتشفناه من خلال nmap )
راح يكون بهذا الشكل
الان تم انشاء ملف html بأسم exp.html وتعديل الكود وحفظه
متبقي ننشيء سيرفر ويب في نفس المجلد الي انشئنا فيه الملف باستخدام هذا الامر
python2 -m SimpleHTTPServer 8000
نفتح المتصفح من خلال هذا الرابط
http://localhost:8000/exp.html
ونضغط login
الان لو رجعنا للموقع راح نلاحظ حصولنا على صلاحيات الادمن
الان نقدر ندخل لوحه التحكم من خلال
بعد تفحص لوحه التحكم قدرت احصل باسورد البريد الالكتروني الي كان موجود في نتيجه سكان nmap
ندخل setting ثم Easy WP SMTP Settings
لاحظ الباسورد هنا
كيف نقدر نعرف الباسورد!؟
ببساطه اضغط F12
ثم اضغط الايقونه بجانب كلمه inspector والان مجرد ماتضغط على الباسورد راح تقدر تشوفه بدون اخفاء
الان نحتاج نستخدم برنامج اداره البريد الالكتروني بحيث نقدر نشوف الرسائل المخزنه في هذا البريد
في parrot يوجد برنامج اسمه claws
نشغل البرنامج ونستخدم البريد والباسورد السابق في عمليه الاعداد
username:
orestis
email
orestis@braninfuck.htb
servername:
brainfuck.htb
server type:
IMAP
SMTP server :
brainfuck.htb
بعد مادخلنا على البريد الالكتروني وجدنا معلومات جديده 😎
لكن لنفرض انك ماقدرت تستخدم الطريقه السابقه ؟
في طريقه اخرى من خلال netcat نقدر نتصفح البريد الالكتروني من خلال سطر الاوامر
باستخدام هذا الامر
nc -nv 10.10.10.17 110
حيث 110 رقم منفذ POP3 ( تقدر تتاكد بالرجوع للمنافذ المكتشفه من خلال NMAP
)
راح اوضح الاوامر المستخدمه باختصار
USER = اسم المستخدم
PASS = الرقم السري
STAT= عدد الرسائل والحجم
LIST = رقم كل رساله وحجمها
نلاحظ ان صندوق الوارد يحتوي على رسالتين
باستخدام أمر RETE متبوع برقم الرساله نقدر نشوف محتواها
قدرنا نقراء الرساله من خلال سطر الاوامر بدون اي برنامج,
“مهم انك تجرب تتعامل مع البروتوكولات بهذه الطريقه من وقت لاخر“
الان نرجع للرابط الثاني الي اكتشفناه في عمليه السكان ( كل خطواتنا معتمده على المعلومات الي اكتشفناها في اول خطوه )
sup3rs3cr3t.brainfuck.htb
الان نقدر نتصفح المواضيع الموجوده والروابط
لو دخلنا الموضوع key
راح نلاحظ ان الكلام مشفر وغير مفهوم
ولو دخلنا على عنوان SSH Access راح نلاحظ ان اغلب الرسائل من المستخدم orestis تحتوي على توقيع موحد
مما يعني ان السطر الاخير من الرسائل المشفره هو نفس التوقيع لكن تم تشفيره.
الان راح نحاول نفك التشفير.
لو رجعنا للصفحه الي فيها الرسائل المشفره راح نلاحظ هذه الرساله
mnvze://10.10.10.17/8zb5ra10m915218697q1h658wfoq0zc8/frmfycu/sp_ptr
الرساله مشفره لكن ://
و عنوان IP 10.10.10.17
لم يتم تشفيرهم
يعني ان التشفير يعتمد على الحروف فقط لاغير.
ننسخ احد الرسائل ونستخدم موقع ( boxentriq ) لمحاوله معرفه نوع التشفير
الان عرفنا نوع التشغير ( Vigenere Autokey Cipher )
الان لنسترجع المعلومات الي حصلنا عليها.
- التوقيع للمستخدم orestis قبل التشفير ” Orestis – Hacking for fun and profit “
- التوقيع للمستخدم orestis بعد التشفير يتغير كل مره لكن سوف نستخدم واحد فقط ” Wejmvse – Fbtkqal zqb rso rnl cwihsf”
- نوع التشفير Vigenere Autokey Cipher ويتم تشفير فقط الحروف
- هذا النوع من التشفير يحتاج مفتاح لفك الرسائل المشفره
الان من خلال هذا الرابط
راح نستخدم التوقيع قبل وبعد التشفير لمعرفه المفتاح لكن راح نمسح المسافات وجميع الرموز
التوقيع المشفر
التوقيع قبل التشفير
المفتاح الي راح نستخدمه في فك بقيه الرسائل ” fuckmybrainfuckmybrainfuckmybrain “
ملاحظه مهمه ” نلاحظ ان المفتاح عباره عن جمله مكرره, عند فك الرسائل راح نستخدم فقط ” fuckmybrain”
نجحنا في الحصول على مفتاح SSH
هذا المفتاح يسمح لنا بالدخول على السيرفر باستخدام SSH
لكن يحتاج نعدل صلاحيات الملف ” id_rsa ”
chmod 600 id_rsa
ثم نجرب الدخول بهذا الامر
ssh -i id_rsa orestis@brainfuck.htb
للاسف المفتاح يطلب رقم سري ” passphrase ”
الحل هو محاوله كسر الرقم السري
راح نستخدم John the Ripper
لكن قبل استخدامه نحتاج تحويل ملف ” id_rsa ” لصيغه متوافقه معه.
راح نستخدم الاداه المشهوره ” ssh2john.py
”
للتحميل:
wget https://raw.githubusercontent.com/koboi137/john/bionic/ssh2john.py
الان نملك ملفين في نفس المجلد
id_rsa
ssh2john.py
ننفذ هذا الامر لتحويل الملف
python2 ssh2john.py id_rsa > ssh.txt
الان عندنا ملف باسم ssh.txt جاهز لفك التشفير
لفك التشفير نستخدم هذا الامر ” تاكد ان الملفات السابقه موجوده في نفس المجلد قبل تنفيذ الامر “
/usr/sbin/john --wordlist=/usr/share/wordlists/rockyou.txt ssh.txt
شرح الامر السابق
/usr/sbin/john = تشغيل البرنامج
–wordlist=/usr/share/wordlists/rockyou.txt = مسار مجلد كلمات المرور وغالبا متوفر في نسخه كالي ولكن قد يحتاج لفك ضغط الملف قبل استخدامه
ssh.txt = المفتاح بعد تحويله بالاداه السابقه
قدرنا نحصل على الباسورد
لو استخدمنا الامر السابق وادخلنا الرقم السري راح نقدر ندخل على السيرفر
ssh -i id_rsa orestis@brainfuck.htb
الان عندنا صلاحيه الوصول للسيرفر من خلال SSH متبقي اخر نقطه وهي تصعيد الصلاحيات او الحصول على flag حساب الروت.
بعد تسجيل الدخول اكتشفت وجود اربع ملفات في مجلد المستخدم الحالي
يحتوى على ثلاث اسطر من الارقام = debug.txt
يحتوى على الرقم السري مشفر لاحظ ” Encrypted Password: ” بدايه الملف = output.txt
يحتوى على علم اليوزر = user.txt
يحتوى على كود = encrypt.sage
لو فتحنا ملف encrypt.sage راح نشوف الكود التالي
نلاحظ من الكود انه يقراء ملف /root/root.txt
افضل حل في اعتقادي نسأل قوقل 😐 ,, ننسخ جزء من الكود ونبحث في قوقل
بعد البحث في قوقل اول نتيجه بحث هي الكود الاساسي في موقع ctftime.org
بما اني غير خبير في التشفير راح نرجع لقوقل عشان نجد الحل.
جربت ابحث عن RSA بما انه مذكور في الصفحه السابقه ( اضغط هنا لو تحب تقراء اكثر عن هذا الموضوع)
وجدت كود مناسب في هذه الصفحه ” اضغط هنا “
لاحظ المربع الاحمر, راح نستبدل القيم بالموجود عندنا في ملف debug.txt
الملف يحتوى على ثلاث اسطر راح نستبدلهم بالقيم الموجود في الكود السابق ( p , q , e )
اما القيمه الاخيره ( ct ) راح نعوضها بالباسورد المشفر في ملف output.txt
نعوض القيم مثل الصوره التاليه ثم نحفظ الملف بامتداد py
vim dec.py
نشغل الملف الان ونستخرج flag
python dec.py
اتمنى ان اكون وفقت في شرح جميع الخطوات بوضوح.
اذا عجبتك التدوينه لاتنسى مشاركتها مع اصدقائك من خلال الضغط على رابط تويتر بالاسفل , دعمكم هو وقودنا للاستمرار
حسابي في منصه تويتر @buhaimedi