这是关于OGNL评估的安全缺陷是struts 有人可以举例说明这是如何被利用的吗?
想象一下,我有一个请求参数,服务器将其返回给客户端:
http://test/xyz=test
我有一个名为xyz
的变量,其中getter和setter在action类中,在JSP中我有:
<s:property value="%{xyz}" />
如果有人使用网址http://test/xyz=@System@exit(0)
会发生什么?
答案 0 :(得分:1)
首先,你链接到的票证是在2007年修复的。我当时不知道究竟是什么问题,但它似乎不再相关了。
如果有人使用网址http://test/xyz=@System@exit(0)会发生什么?
您的JSP页面将输出字符串文字@System@exit(0)
。
OGNL表达式在Struts2标记内处理。在这种情况下,字符串文字%{xyz}
将传递给setValue(String)
的{{1}}方法。在该标记内,针对值堆栈计算该字符串以生成结果值PropertyTag
。然后输出该值。