这是关于OGNL评估中的安全漏洞是struts的。
有人能举例说明这是如何被利用的吗?
假设我有一个请求参数,服务器将其返回给客户端:http://test/xyz=test
我有一个名为xyz
的变量,在action类中有getter和setter,在JSP中有:
<s:property value="%{xyz}" />
如果有人使用URL http://test/xyz=@System@exit(0)
会发生什么?
首先,您链接到的票在2007年是固定的。我不知道当时到底是什么问题,但它似乎已经无关紧要了。
如果有人使用URL http://test/xyz=@System@exit(0)会发生什么?
JSP页面将输出字符串字面值@System@exit(0)
。
OGNL表达式在Struts2标记内部处理。在本例中,字符串字面值%{xyz}
被传递给PropertyTag
的setValue(String)
方法。在该标记内部,该字符串根据值堆栈进行计算,以产生@System@exit(0)
的结果值。然后输出该值。