Advertisement

S2-001远程代码执行漏洞复现

阅读量:

一、简介

  • 该安全缺陷的产生原因在于,当用户提交表单数据且验证未通过时,后端系统会将用户先前输入的参数值通过OGNL表达式(Struts框架采用OGNL作为默认的表达式语言,用于数据访问)%{value}进行解析,并将其重新填充至对应的表单字段中。例如在注册或登录页面,若提交失败,后端通常会将用户之前输入的数据原样返回。由于后端在处理过程中对提交的数据执行了%{value}的OGNL表达式解析操作,因此攻击者可以构造特定的Payload实现命令执行。

    • 接下来我们对Struts2中的验证机制进行说明。该机制依赖于validationworkflow两个拦截器共同作用。其中,validation拦截器会依据配置的XML文件生成一个特殊的错误字段列表;而workflow拦截器则根据这些错误信息进行判断,若检测到输入内容存在异常,则会将用户引导回原先提交表单的页面,并保留其输入内容。在默认设置下,如果控制器未接收到任何明确的结果反馈但存在验证错误,则系统将会向用户展示相应的错误提示信息。

    • webwork2.1(一种框架)与Struts2中均包含一个名为altSyntax特性的功能模块。该功能允许用户提交包含OGNL表达式的请求内容。当恶意攻击者故意构造一个能够触发验证失败的请求时,在页面被返回给用户的流程中,默认行

全部评论 (0)

还没有任何评论哟~