S2-001远程代码执行漏洞复现
发布时间
阅读量:
阅读量
一、简介
-
该安全缺陷的产生原因在于,当用户提交表单数据且验证未通过时,后端系统会将用户先前输入的参数值通过OGNL表达式(Struts框架采用OGNL作为默认的表达式语言,用于数据访问)%{value}进行解析,并将其重新填充至对应的表单字段中。例如在注册或登录页面,若提交失败,后端通常会将用户之前输入的数据原样返回。由于后端在处理过程中对提交的数据执行了%{value}的OGNL表达式解析操作,因此攻击者可以构造特定的Payload实现命令执行。
-
接下来我们对Struts2中的
验证机制进行说明。该机制依赖于validation和workflow两个拦截器共同作用。其中,validation拦截器会依据配置的XML文件生成一个特殊的错误字段列表;而workflow拦截器则根据这些错误信息进行判断,若检测到输入内容存在异常,则会将用户引导回原先提交表单的页面,并保留其输入内容。在默认设置下,如果控制器未接收到任何明确的结果反馈但存在验证错误,则系统将会向用户展示相应的错误提示信息。 -
在
webwork2.1(一种框架)与Struts2中均包含一个名为altSyntax特性的功能模块。该功能允许用户提交包含OGNL表达式的请求内容。当恶意攻击者故意构造一个能够触发验证失败的请求时,在页面被返回给用户的流程中,默认行
-
全部评论 (0)
还没有任何评论哟~
