hack the box Brainfuck

lبسم الله الرحمن الرحيم
في هذه التدوينه راح اشرح طريقه حل تحدي Brainfuck من موقع Hack The Box
هذا التحدي يعتبر مشابه لاختبار oscp حسب قائمه TJ Null

اول خطوه نعمل سكان باستخدام NMAP
nmap -sC -sV 10.10.10.17

من خلال نتائج السكان نلاحظ وجود معلومات مهمه  في منفذ 443

نتيجه سكان nmap
نتيجه سكان nmap

brainfuck.htb       :DNS
sup3rs3cr3t.brainfuck.htb       :DNS
orestis@brainfuck.htb      :Email

 /etc/host نعدل ملف
ونكتب في نهايته هذا السطر.
10.10.10.17       brainfuck.htb     sup3rs3cr3t.brainfuck.htb

ملف hosts

الان نقدر نتصفح الموقع من خلال هذا الرابط
https://brainfuck.htb/

استخدمنا اضافه wappalyzer لمعرفه نوع CMS المستخدمه في الموقع

wappalyzer

نلاحظ من الصوره السابقه ان الموقع يعمل على وردبريس , نقدر نستخدم اداه تسمى wpscan لفحص مدونات  wordpress
wpscan --url https://brainfuck.htb --disable-tls-checks --enumerate u

اضافه لم يتم تحديثها
نتيجه الفحص باستخدام wpscan
نتيجه الفحص باستخدام wpscan
نتيجه الفحص باستخدام wpscan

نلاحظ ان اضافه 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

Easy WP SMTP Settings
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 = رقم كل رساله وحجمها

اوامر POP3 باستخدام سطر الاوار
اوامر POP3 باستخدام سطر الاوار command line li

نلاحظ ان صندوق الوارد يحتوي على رسالتين
باستخدام أمر 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 )
الان لنسترجع المعلومات الي حصلنا عليها.

  1. التوقيع للمستخدم  orestis قبل التشفير ” Orestis – Hacking for fun and profit “
  2. التوقيع للمستخدم  orestis بعد التشفير يتغير كل مره لكن سوف نستخدم واحد فقط ” Wejmvse – Fbtkqal zqb rso rnl cwihsf”
  3. نوع التشفير Vigenere Autokey Cipher ويتم تشفير فقط الحروف
  4. هذا النوع من التشفير يحتاج مفتاح لفك الرسائل المشفره

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

فك التشفير واستخراج المفتاح
فك التشفير واستخراج المفتاح

التوقيع المشفر
التوقيع قبل التشفير
المفتاح الي راح نستخدمه في فك بقيه الرسائل ” fuckmybrainfuckmybrainfuckmybrain “
ملاحظه مهمه ” نلاحظ ان المفتاح عباره عن جمله مكرره, عند فك الرسائل راح نستخدم فقط ” fuckmybrain”

فك تشفير الرسائل والحصول على مفتاح SSH
فك تشفير الرسائل والحصول على مفتاح SSH

نجحنا في الحصول على مفتاح 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 جاهز لفك التشفير

تحويل صيغه ملف id_rsa
تحويل صيغه ملف id_rsa

لفك التشفير نستخدم هذا الامر ” تاكد ان الملفات السابقه موجوده في نفس المجلد قبل تنفيذ الامر “

/usr/sbin/john --wordlist=/usr/share/wordlists/rockyou.txt ssh.txt
شرح الامر السابق
 /usr/sbin/john  = تشغيل البرنامج
–wordlist=/usr/share/wordlists/rockyou.txt  = مسار مجلد كلمات المرور وغالبا متوفر في نسخه كالي ولكن قد يحتاج لفك ضغط الملف قبل استخدامه
ssh.txt = المفتاح بعد تحويله بالاداه السابقه

قدرنا نحصل على الباسورد

نتيجه فك تشغير ملف id_rsa
نتيجه فك تشغير ملف id_rsa

لو استخدمنا الامر السابق وادخلنا الرقم السري راح نقدر ندخل على السيرفر
ssh -i id_rsa orestis@brainfuck.htb


الان عندنا صلاحيه الوصول للسيرفر من خلال SSH متبقي اخر نقطه وهي تصعيد الصلاحيات او الحصول على flag حساب الروت.

بعد تسجيل الدخول اكتشفت وجود اربع ملفات في مجلد المستخدم الحالي
 يحتوى على ثلاث اسطر من الارقام = debug.txt
يحتوى على الرقم السري مشفر لاحظ ” Encrypted Password: ” بدايه الملف = output.txt
يحتوى على علم اليوزر = user.txt
يحتوى على كود = encrypt.sage

لو فتحنا ملف encrypt.sage راح نشوف الكود التالي

محتوى ملف encrypt.sage
محتوى ملف encrypt.sage

نلاحظ من الكود انه يقراء ملف /root/root.txt
 افضل حل  في اعتقادي نسأل قوقل 😐 ,, ننسخ جزء من الكود ونبحث في قوقل
بعد البحث في قوقل اول نتيجه بحث هي الكود الاساسي في موقع ctftime.org
بما اني غير خبير في التشفير راح نرجع لقوقل عشان نجد الحل.
جربت ابحث عن RSA بما انه مذكور في الصفحه السابقه ( اضغط هنا لو تحب تقراء اكثر عن هذا الموضوع)

وجدت كود مناسب في هذه الصفحه  ” اضغط هنا

RSA decrypt code
RSA decrypt code

 

لاحظ المربع الاحمر, راح نستبدل القيم بالموجود عندنا في ملف debug.txt

متحويات ملف debug.txt
متحويات ملف debug.tx

الملف يحتوى على ثلاث اسطر راح نستبدلهم بالقيم الموجود في الكود السابق ( p , q , e )
اما القيمه الاخيره ( ct ) راح نعوضها بالباسورد المشفر في ملف output.txt

محتويات output.txt
محتويات output.txt

نعوض القيم مثل الصوره التاليه ثم نحفظ الملف بامتداد py
vim dec.py

بعد تعديل الكود
بعد تعديل الكود

نشغل الملف الان ونستخرج flag
python dec.py

قدرنا نستخرج الفلاق
قدرنا نستخرج flag

اتمنى ان اكون وفقت في شرح جميع الخطوات بوضوح.
اذا عجبتك التدوينه لاتنسى مشاركتها مع اصدقائك من خلال الضغط على رابط تويتر بالاسفل , دعمكم هو وقودنا للاستمرار
حسابي في منصه تويتر @buhaimedi