如何测试EL有struts2 OGNL的安全问题

时间:2013-08-02 08:28:15

标签: security struts2

我还有一个与JSP EL和安全问题有关的问题如何测试这个问题(Struts 2 Tag Libs中不允许使用JSP表达式,因为安全性问题允许黑客使用JSP EL将OGNL注入标记中去做糟糕的事情)我做了很多搜索,不能创建这样的测试用例。如果您有任何样品测试或想法,请建议

1 个答案:

答案 0 :(得分:2)

  

从Struts版本2.0.9开始,对于评估OGNL的Struts标记属性,已禁用JSTL / JSP表达式语言(EL)。这是针对安全漏洞的预防措施,这些漏洞可能是由于首次将属性作为JSTL / JSP EL表达式处理然后将结果作为OGNL表达式处理时发生的双重评估所导致的。解决方案是直接使用OGNL表达式表示Struts标记中的所有动态属性值。

http://struts.apache.org/release/2.2.x/docs/why-cant-i-use-jstl-style-el-expressions-in-struts-tags.html

此类注射不再起作用。如果你想看看它是如何工作的,那么为Struts2标签创建一个.tld文件的新副本,并为各种标签的属性启用EL评估。

如上所述,这是一个漏洞,它利用了JSP表达式由JSP / EL引擎处理的事实,并且在标记类内部对OGNL表达式进行了评估。

例如,如果Struts2标签允许使用EL表达式,则可以使用以下内容:

<s:text name="${someVar}"/>

其中someVar是来自传入请求的参数集,它可以评估为任意OGNL表达式。一旦调用了text标签,它就会评估OGNL表达式,这可能会产生意想不到的后果。

此问题在JIRA故障单中有一个更深入的示例: https://issues.apache.org/jira/browse/WW-2107