首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >spring boot (whitelabel error page SpEL RCE) 漏洞复现

spring boot (whitelabel error page SpEL RCE) 漏洞复现

原创
作者头像
雨笋教育
修改2021-09-15 17:48:21
3.4K1
修改2021-09-15 17:48:21
举报
文章被收录于专栏:雨笋教育雨笋教育

雨笋教育小编来分享干货了,近期审核关系,大家先看为尽,少一篇是一篇了。

利用条件:

  • spring boot 1.1.0-1.1.12、1.2.0-1.2.7、1.3.0
  • 至少知道一个触发 springboot 默认错误页面的接口及参数名

利用方法:

步骤一:找到一个正常传参处比如发现访问 /article?id=xxx ,页面会报状态码为 500 的错误:Whitelabel Error Page,则后续 payload 都将会在参数 id 处尝试。

步骤二:执行 SpEL 表达式输入 /article?id=${7*7},如果发现报错页面将 7*7 的值 49 计算出来显示在报错页面上,那么基本可以确定目标存在 SpEL 表达式注入漏洞。

由字符串格式转换成 0x** java 字节形式,方便执行任意代码:

# coding: utf-8

result = ""

target = 'calc' # 该处写上要执行的命令,例如calc 弹出计算器

for x in target:

result += hex(ord(x)) + ","

print(result.rstrip(','))

以上 python3 脚本运行后的结果如下:

0x63,0x61,0x6c,0x63

漏洞原理:

  1. spring boot 处理参数值出错,流程进入 org.springframework.util.PropertyPlaceholderHelper 类中
  2. 此时 URL 中的参数值会用 parseStringValue 方法进行递归解析
  3. 其中 ${} 包围的内容都会被 org.springframework.boot.autoconfigure.web.ErrorMvcAutoConfiguration 类的 resolvePlaceholder 方法当作 SpEL 表达式被解析执行,造成 RCE 漏洞

漏洞环境:

https://github.com/LandGrey/SpringBootVulExploit/tree/master/repository/springboot-spel-rce

环境搭建:

下载上述漏洞环境项目地址,在本地使用IDEA打开该项目,maven下载好相应依赖后,运行项目

访问本地的9091端口

环境搭建成功

漏洞复现:

访问url //127.0.0.1:9091/article?id=66

修改id 参数为 ${7*7}

页面报错,回显出7*7的结果,修改为8*8

利用脚本一:

使用脚本生成运行 calc 的byte数组 (hex表示)

# coding: utf-8

result = ""

target = 'calc' # 该处写上要执行的命令,例如calc 弹出计算器

for x in target:

result += hex(ord(x)) + ","

print(result.rstrip(','))

使用payload,系统弹出计算器

利用脚本二:

使用脚本生成运行 calc 的byte数组 (十进制表示)

# coding: utf-8

result = ""

target = 'calc' # 该处写上要执行的命令,例如calc 弹出计算器

for x in target:

result += str(ord(x)) + ","

print(result.rstrip(','))

使用payload,系统弹出计算器

参考文章:

https://github.com/LandGrey/SpringBootVulExploit#0x01whitelabel-error-page-spel-rce

https://www.cnblogs.com/litlife/p/10183137.html

*本文章仅供技术交流分享,请勿做未授权违法攻击,雨笋教育不负任何责任。具体请参考《网络安全法》。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
漏洞扫描服务
漏洞扫描服务(Vulnerability Scan Service,VSS) 是一款自动探测企业网络资产并识别其风险的产品。依托腾讯二十年累积的安全能力,漏洞扫描服务能够对企业的网络设备及应用服务的可用性、安全性与合规性等进行定期的安全扫描、持续性风险预警和漏洞检测,并且为企业提供专业的修复建议,降低企业安全风险。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档