一、Struts2框架介绍

------ Struts2是apache项目下的一个web 框架,普遍应用于。

------ Struts框架本身分为三个部分:核心控制器FilterDispatcher、业务控制器Action和用户实现的企业业务逻辑组件。


二、Struts2远程代码执行漏洞

------ Struts2漏洞是一个经典的漏洞系列,是在2019年被报出来的,根源在于Struts2引入了OGNL表达式使得框架具有灵活的动态性。随着整体框架的补丁完善,现在想挖掘新的Struts2漏洞会比以前困难很多,从实际了解的情况来看,大部分用户早就修复了历史的高危漏洞。目前在做渗透测试时,Struts2漏洞主要也是碰碰运气,或者是打到内网之后用来攻击没打补丁的系统会比较有效。


三、Struts2执行代码的原理

------ Struts2的动态性在于 OGNL表达式可以获取到运行变量的值,并且有机会执行函数调用。如果可以把恶意的请求参数送到 OGNL的执行流程中,就会导致任意代码执行漏洞。

------ Struts2的rce本质都是一样的(除了S2-052以外),都是Struts2框架执行了恶意用户传进来的 OGNL表达式,造成远程代码执行。可以造成“命令执行、服务器文件操作、打印回显、获取系统属性、危险代码执行”等,只不过需要精心构造不同的 OGNL代码而已。


四、Struts2框架特征

  1. 查看被测应用系统的源码,URL接口地址以 “.action” “.do”结尾或者地址中包含“!”符号

  2. 在被测应用的服务器上查看应用所在目录/WEB-INF/lib/下的jar文件,若存在struts2-core2.*.**.jar 或 xwork-core-2.*.**.jar格式的jar文件,则需检测是否存在Struts2远程代码执行漏洞。


五、漏洞手工POC

poc:

注意:有些情况利用的时候要记得url编码

其他struts2版本的POC可以参考:
https://vulhub.org/#/environments/struts2/


六、漏洞工具复现

网络安全深入学习第三课——热门框架漏洞(RCE—Struts2远程代码执行)-LMLPHP


09-20 17:40