S2-001漏洞分析
S2-001漏洞分析 1.漏洞描述 该漏洞因用户提交表单数据并且验证失败时,后端会将用户之前提交的参数值使用OGNL表达式%{value}进行解析,然后重新填充到对应的表单数据中。如注册或登录页面,提交失败后一般会默认返回之前提交的数据,由于后端使用%{value}对提交的数据执行了一次OGNL 表达式解析,所以可以直接构造 Payload进行命令执行。 2.影响版本 Struts 2.0.0 - Struts 2.0.8 3.漏洞详情 首先写一个漏洞利用环境,代码结构如下: LoginAction.java源码: package com.cy.demo.action; import com.opensymphony.xwork2.ActionSupport; public class LoginAction extends ActionSupport{ private static final long serialVersionUID = 1L; private String username ; private String password ; public String getUsername(){ return this.username; } public String getPassword(){ return this.password; } public