
Script Python3 pour scanner les machines vulnérables à CVE-2021-44228 (Log4shell).

Ce script Python3 cherche à identifier les serveurs vulnérables à la CVE-2021-44228, également connue sous le nom de Log4Shell, une vulnérabilité très critique découverte dans la bibliothèque de journalisation Java Log4j2.
Il ne repose pas sur des serveurs de journalisation DNS externes pour vérifier et valider les cibles vulnérables : au démarrage, un nouveau thread écoutant sur toutes les interfaces et le port 55555 (modifiable via le fichier .env ou des variables d'environnement) est créé. Il attend les connexions de rappel des machines vulnérables et notifie le thread principal via une file d'attente Python. Gardez à l'esprit que vous devrez peut-être ajouter des règles de pare-feu (et/ou des règles de redirection de port) pour autoriser les connexions entrantes vers la paire IP:port d'écoute.
Afin d'augmenter les chances de déclencher la vulnérabilité, l'outil prend une URL en argument (ou une liste d'URL) et recherche tout formulaire inclus dans la ou les URL fournies. Il tente ensuite d'exploiter la vulnérabilité en utilisant chaque paramètre pour chaque formulaire trouvé (requêtes GET et POST). C'est le comportement par défaut, mais il peut être désactivé à l'aide de l'option --skip-forms (dans ce cas, une seule requête sera effectuée et la charge utile sera placée dans quelques champs d'en-tête).
De plus, les en-têtes prédéfinis suivants sont utilisés pour tester si les cibles sont vulnérables :
Des en-têtes personnalisés peuvent être ajoutés via une option de ligne de commande.
Pour une description complète de l'utilisation, voir la section ci-dessous.
python3 log4j_checker.py -h
usage: log4j_checker.py [-h] [--url URL] [--headers HEADERS [HEADERS ...]] [--urls URLS] [--skip-forms]
optional arguments:
-h, --help show this help message and exit
--url URL Single url you want to test (valid url is http(s)://host:[port]/[path])
--headers HEADERS [HEADERS ...]
Custom headers you want to try (space separated)
--urls URLS A file containing 1 url per line
--skip-forms Skip forms check (only perform 1 request)
Cet outil est destiné à être utilisé pour tester vos propres systèmes.
NOTE IMPORTANTE : Cet outil ne garantit pas que votre serveur n'est PAS vulnérable même si le résultat est négatif. Cela vient du fait que votre application pourrait journaliser la charge utile malveillante ailleurs et qu'il n'est pas possible de couvrir tous les cas. La meilleure façon de vérifier si vous êtes vulnérable est donc de rechercher les paquets vulnérables (c'est-à-dire log4j-core*.jar et log4j-api*.jar) dans tout le système de fichiers.