struts2是一个apache的框架,存在反序列化漏洞,在struts2中存在OGNL表达式,OGNL表达式的二次解析导致这一漏洞。用户提交表单数据并且验证失败时,后端会将用户之前提交的参数值使用OGNL表达式%{value}进行解析,然后重新填充到对应的表单数据中。如注册或登录页面,提交失败后一般会默认返回之前提交的数据,由于后端使用%{value]对提交的数据执行了一次OGNL表达式解析,所以可以直接构造 Payload进行命令执行。
底层原因:OGNL(对象导航图语言)表达式%{value}的二次解析
流量特征:请求体里有URL编码、