Jakarta ee [ww-2160 struts]是<;属性值=%{';xyz';}>;

Jakarta ee [ww-2160 struts]是<;属性值=%{';xyz';}>;,jakarta-ee,struts2,code-injection,Jakarta Ee,Struts2,Code Injection,这是关于OGNL评估中的安全缺陷的,即struts。 有人能举例说明这是如何被利用的吗 假设我有一个请求参数,服务器将其返回给客户端: http://test/xyz=test 我有一个名为xyz的变量,在action类中有getter和setter,在JSP中有: <s:property value="%{xyz}" /> 如果有人使用URLhttp://test/xyz=@System@exit(0)发生了什么?首先,您链接到的票证在2007年已修复。我不知道当时到底是什么

这是关于OGNL评估中的安全缺陷的,即struts。
有人能举例说明这是如何被利用的吗

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

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

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


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

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

如果有人使用URL)会发生什么

JSP页面将输出字符串literal
@System@exit(0)


OGNL表达式在Struts2标记内处理。在这种情况下,字符串literal
%{xyz}
被传递给
PropertyTag
setValue(string)
方法。在该标记内,根据值堆栈对该字符串求值,以生成
@System@exit(0)
。然后输出该值。

首先,您链接到的票证在2007年是固定的。我不知道当时到底是什么问题,但这似乎不再相关了

如果有人使用URL)会发生什么

JSP页面将输出字符串literal
@System@exit(0)

OGNL表达式在Struts2标记内处理。在这种情况下,字符串literal
%{xyz}
被传递给
PropertyTag
setValue(string)
方法。在该标记内,根据值堆栈对该字符串求值,以生成
@System@exit(0)
。然后输出该值