
Outil qui exécute un test pour vérifier si l'une de vos applications est affectée par les récentes vulnérabilités dans log4j : CVE-2021-44228 et CVE-2021-45046
log4shell.tools est un outil qui vous permet d'exécuter un test pour vérifier si l'une de vos applications est affectée par les récentes vulnérabilités de log4j : CVE-2021-44228 et CVE-2021-45046.
Il s'agit du code qui alimente https://log4shell.alexbakker.me. Si vous souhaitez inspecter le code ou exécuter une instance dans votre propre environnement, vous êtes au bon endroit.
L'outil génère un identifiant unique pour vous permettre de tester. Après avoir cliqué sur Démarrer, il génère un texte qui ressemble à ceci : ${jndi:ldap://*.dns.log4shell.tools:12345/*}. Copiez-le et collez-le partout où vous pensez qu'il pourrait finir par être passé via log4j. Par exemple : des champs de recherche, des champs de formulaire ou des en-têtes HTTP.
Lorsqu'une version obsolète de log4j voit cette chaîne, elle effectue une requête DNS pour obtenir l'adresse IP de *.dns.log4shell.tools. Si cela se produit, cela est considéré comme le premier signe de vulnérabilité à une fuite d'informations. Ensuite, elle tente une requête de recherche LDAP vers log4shell.tools:12345. L'outil répond avec une description de classe Java, ainsi qu'une URL pour l'obtenir. Log4j peut même tenter de récupérer le fichier de classe. L'outil renvoie une erreur 404 et conclut le test.

L'outil a été testé avec Go 1.16. Assurez-vous que Go (ou une version plus récente) est installé et exécutez la commande suivante :
go install github.com/alexbakker/log4shell-tools/cmd/log4shell-tools-server
Le binaire sera disponible dans $GOPATH/bin
Comme cet outil se compile en un seul binaire, il vous suffit de l'exécuter pour commencer à héberger vous-même une instance de log4shell.tools. Pour le rendre accessible depuis d'autres machines de votre réseau, vous devrez passer quelques indicateurs pour que l'outil n'écoute pas seulement sur l'interface de bouclage. Si vous exposez cela sur Internet, vous voudrez probablement aussi placer un proxy inverse devant le serveur HTTP. Ignorez les options DNS pour l'instant, elles ne sont pas nécessaires pour des déploiements internes simples.
Pour la liste complète des indicateurs disponibles, exécutez log4shell-tools-server -h :
Usage de ./log4shell-tools-server :
Cet outil écoute uniquement sur 127.0.0.1 par défaut. Passez les indicateurs ci-dessous pour personnaliser votre environnement.
-dns-a string
l'adresse IPv4 à renvoyer pour toute requête d'enregistrement A pour 'dns-zone' (par défaut "127.0.0.1")
-dns-aaaa string
l'adresse IPv6 à renvoyer pour toute requête d'enregistrement AAAA pour 'dns-zone' (par défaut "::1")
-dns-addr string
adresse d'écoute du serveur DNS (par défaut "127.0.0.1:12346")
-dns-enable
activer le serveur DNS
-dns-zone string
zone DNS qui est redirigée vers le serveur DNS de l'outil (exemple : "dns.log4shell.tools")
-http-addr string
adresse d'écoute du serveur HTTP (par défaut "127.0.0.1:8001")
-http-addr-external string
adresse à laquelle le serveur HTTP peut être joint depuis l'extérieur (par défaut "127.0.0.1:8001")
-ldap-addr string
adresse d'écoute du serveur LDAP (par défaut "127.0.0.1:12345")
-ldap-addr-external string
adresse à laquelle le serveur LDAP peut être joint depuis l'extérieur (par défaut "127.0.0.1:12345")
-ldap-http-proto string
le protocole HTTP à utiliser dans l'URL de la charge utile que le serveur LDAP renvoie (par défaut "http")
-storage string
URI de connexion au stockage (soit memory:// soit une URI postgres:// (par défaut "memory://")
-test-timeout int
délai d'attente du test en minutes (par défaut 30)
L'outil utilise par défaut son backend de stockage en mémoire. Si vous avez besoin que les résultats des tests persistent entre les redémarrages, vous pouvez utiliser le backend Postgres à la place.
Le serveur DNS est désactivé par défaut, car ses options de configuration sont actuellement très spécifiques à la configuration sur https://log4shell.alexbakker.me. Faites-moi savoir si vous souhaitez aider à les rendre plus génériques.