structs高危漏洞在低版本修复(可选的高危漏洞补丁)

网友投稿 278 2022-10-05


structs高危漏洞在低版本修复(可选的高危漏洞补丁)

Apache Struts2框架是一个用于开发Java EE网络应用程序的Web框架。Apache Struts于2020年12月08日披露 S2-061 Struts 远程代码执行漏洞(CVE-2020-17530),在使用某些tag等情况下可能存在OGNL表达式注入漏洞,从而造成远程代码执行,风险极大。

由于我们的应用structs版本低,jdk的版本也低,如果要升级到最新版本,不仅structs要升级,spring,jdk都需要升级,影响比较大,所以我们考虑直接参考最新版修复漏洞的方法,在老版本上进行修复。

漏洞基本原理

漏洞描述

Some of the tag's attributes could perform a double evaluation if a developer applied forced OGNL evaluation by using the %{...} syntax. Using forced OGNL evaluation on untrusted user input can lead to a Remote Code Execution and security degradation.

在struts的标签属性中,如果开发者使用了%{},就会evaluate里面的语句,这个执行过程是服务端struts代码执行的。

例如

构造Map

The value of key "foo1" is

不使用%:

使用%:

运行结果如下:

he value of key "foo1" is bar1 不使用%:#foobar['foo1'] 使用%:bar1

里面的值如果是用户输入的,可能还会有%{}的语句,这时候会有递归的evaluate,就有可能有一些恶意语句在服务端执行。

修复方案

官方修复方案

Avoid using forced OGNL evaluation on untrusted user input, and/or upgrade to Struts 2.5.26 which checks if expression evaluation won't lead to the double evaluation.

如果我们没有在jsp中使用%{},就不会受到影响。 如果使用了,可以升级到2.5.26,它的修改就是checks if expression evaluation won't lead to the double evaluation.

但是我们没法升级到2.5.26,只能考虑在2.3.5上修复,所以参考源码修改老版本。

我们具体看一下代码修改了什么地方,在github的2.5.25->2.2.26记录中,关于这个漏洞的修复的commit message是”Avoids recursion in tags”,就是避免tag中递归,一共改了3个文件。

第一个文件:Component.java

这个completeExpressionIfAltSyntax函数,是判断是否开启了表达式功能,如果开启了,就加上%{},接下来就会执行表达式。

比如%{#foobar['foo1']},在传入这个函数的时候,已经去掉了%{},在这个函数里,如果发现开启了表达式功能,就再添加%{},然后evaluate。

现在加了一个条件,如果里面含有%{},就跳过,不再执行,因为会造成二次evaluate。同时新增了一个判断输入的表达式是否有嵌套的函数recursion,在下面的类里使用。

这个也主要是判断了一下是不是有递归,如果有递归,则不会evaluate,同时,把一些属性从Object改成了String,这是因为下面的一个修改。

这个类是UIBean的父类,它的修改是把属性从Object改成了String,为什么要修改成String,是因为在下面的函数中,如果属性是一个表达式,并且开启了表达式功能,会先evaluate一下,而evaluate的返回值是Object。修改后,不再对动态属性做evaluate了,只能是一个String的字面值。

在2.3.5上打补丁


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:什么是SQL注入、XSS以及CSRF?【网络安全知识培训】(sql注入攻击和xss攻击的主要区别)
下一篇:解决springboot报错找不到自动注入的service问题
相关文章

 发表评论

暂时没有评论,来抢沙发吧~