Struts2 vuln analysis - S2-001
Struts2 vuln analysis - S2-001
S0cke3tWhy do this
关于Struts2漏洞出现到现在,网上很多大佬已经发表过分析此系列漏洞的优秀文章。这些文献足以为我们了解struts漏洞提供足够的参考。但为什么还要写这篇文章呢,以个人观点认为,一是为分析漏洞做一个留存,俗话说好记性不如烂笔头。二是作为一个web安全研究者,在对漏洞的研究时不能旦旦是拿工具来一把梭。不仅要知其然,还要知其所以然。本文是笔者第一次分析struts2相关漏洞,撰写本文时尽管参考了多位师傅[^1]的文章,但难免还是会有说明不到位的情况,如有不妥之处还请大佬们多多斧正。
漏洞描述
此漏洞源于 Struts 2 框架中的一个标签处理功能: altSyntax。在开启时,支持对标签中的 OGNL 表达式进行解析并执行[struts2标签解析主要依赖于xwork2,可以理解为xwork2的漏洞],攻击者通过使用
%{}
包裹恶意表达式的方式,将参数传递给应用程序,由于应用程序处理逻辑失误,导致了二次解析,造成了漏洞。影响版本
WebWork 2.1 (with altSyntax enabled), WebWork 2.2.0 - WebWork 2.2.5, Struts 2.0.0 - Struts 2.0.8
调试环境构建
IDEA 2021.3
Struts2.0.5-all
Tomcat7.0.70
JDK7
首先需要在IDEA中安装Struts2插件方便创建struts2应用程序
安装完成后重启IDEA,创建新项目,并设置tomcat
随后将下载的struts2包解压到自己能找到的路径
最后填写项目名称和项目路径即可,项目创建完成后。我们需要编写一个测试用例以便后面分析调试使用
在web目录下创建
index.jsp
1 | <%@ page language="java" contentType="text/html; charset=UTF-8" |