[ww-2160 struts]是<s:property value =“%{'xyz'}”> </s:property>

时间:2011-08-01 06:59:41

标签: java-ee struts2 code-injection

这是关于OGNL评估的安全缺陷是struts 有人可以举例说明这是如何被利用的吗?

想象一下,我有一个请求参数,服务器将其返回给客户端:
http://test/xyz=test

我有一个名为xyz的变量,其中getter和setter在action类中,在JSP中我有:

<s:property value="%{xyz}" />

如果有人使用网址http://test/xyz=@System@exit(0)会发生什么?

1 个答案:

答案 0 :(得分:1)

首先,你链接到的票证是在2007年修复的。我当时不知道究竟是什么问题,但它似乎不再相关了。

  

如果有人使用网址http://test/xyz=@System@exit(0)会发生什么?

您的JSP页面将输出字符串文字@System@exit(0)

OGNL表达式在Struts2标记内处理。在这种情况下,字符串文字%{xyz}将传递给setValue(String)的{​​{1}}方法。在该标记内,针对值堆栈计算该字符串以生成结果值PropertyTag。然后输出该值。