九、【漏洞复现】Struts 2 远程代码执行漏洞s2-046(CVE-2017-5638)
9.1、漏洞原理
Struts 2是一个基于MVC设计模式的Web应用框架,本质上相当于一个Servlet,在MVC设计模式中,Struts2作为控制器来建立模型与视图进行数据交互。 攻击者通过发送恶意构造的HTTP数据包利用该漏洞(通过构造HTTP请求头中的Content-type)在服务器上执行系统命令,进一步完全控制该服务器,造成拒绝服务,数据泄露,网站篡改等后果。 该漏洞无需任何前置条件(如开启dmi,debug等功能),以及启用任何插件,危害较为严重。
9.2、影响范围
Struts 2.3.5 – Struts 2.3.31 Struts 2.5 – Struts 2.5.10
不受影响的版本 Struts 2.3.32 Struts 2.5.10.1
9.3、框架识别
主要使用定向漏洞检测工具或使用Goby、AWVS、指纹识别类平台识别
快速检测方式
使用知道创宇SeeBug照妖镜可以直接检测站点是否存在本漏洞
9.4、漏洞复现
直接上工具
9.5、修复建议
- 更新Apache Struts2框架至最新版本,该版本已修复了该漏洞。
- 如果无法立即更新,可以将以下代码添加到struts.xml文件中的<constant>标签中,以禁用OGNL表达式:
<constant name="struts.ognl.allowStaticMethodAccess" value="false" />
- 配置Web应用程序的防火墙以阻止所有非必要的流量。
- 监控Web应用程序的日志文件和网络流量,以检测任何异常活动。
- 在应用程序中使用安全编码实践,例如输入验证和输出编码,以减轻其他漏洞的风险。
- 定期进行漏洞扫描和安全审计,以确保应用程序的安全性。