近日,安全研究人员发现著名J2EE框架——Struts2存在远程代码执行的漏洞,Struts2官方已经确认该漏洞(S2-045),并定级为高危漏洞。
Struts2 的使用范围及其广泛,国内外均有大量厂商使用该框架。cve-2017-5638漏洞
Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。(来源:百度百科)
漏洞描述使用Jakarta插件处理文件上传操作时可能导致远程代码执行漏洞。cve-2017-5638漏洞
漏洞影响攻击者可以通过构造HTTP请求头中的Content-Type值可能造成远程代码执行。
修复建议
1。 严格过滤 Content-Type 里的内容,严禁ognl表达式相关字段。
2。 如果您使用基于Jakarta插件,请升级到Apache Struts 2。3。32或2。5。10。1版本。
验环境
操作机:Windows XP
目标机:Centos 6。5
Struts版本:2。3。31
实验目的:
了解S2-045 Struts2远程命令执行漏洞危害
掌握检测修复S2-045 Struts2远程命令执行漏洞技术
实验文件:
poc。exe:本次实验漏洞验证的POC源码
SecurityFilter。class:本次实验漏洞修复脚本
实验内容
Struts
Struts是Apache基金会的一个开源项目,Struts通过采用Java Servlet/JSP技术,实现了基于Java EE Web应用的Model-View-Controller(MVC)设计模式的应用框架,是MVC经典设计模式中的一个经典产品。
目前,Struts框架广泛应用于政府、公安、交通、金融行业和运营商的网站建设,作为网站开发的底层模板使用,是应用最广泛的Web应用框架之一。
cve-2017-5638漏洞介绍
Apache Struts 2被曝存在远程命令执行漏洞,漏洞编号S2-045,CVE编号CVE-2017-5638,在使用基于Jakarta插件的文件上传功能时,有可能存在远程命令执行,导致系统被黑客入侵。
恶意用户可在上传文件时通过修改HTTP请求头中的Content-Type值来触发该漏洞,进而执行系统命令。
影响范围
Struts 2。3。5 – Struts 2。3。31 Struts 2。5 – Struts 2。5。10
不受影响的版本
Struts 2。3。32 Struts 2。5。10。1
快速检测方式
使用知道创宇SeeBug照妖镜可以直接检测站点是否存在本漏洞
漏洞危害
在default。properties文件中,struts。multipart。parser的值有两个选择,分别是jakarta和pell。其中的jakarta解析器是Struts 2框架的标准组成部分。默认情况下jakarta是启用的,所以该漏洞的严重性需要得到正视。
恶意访问者可通过远程命令注入执行,令系统执行恶意命令,导致被黑客入侵,从而威胁服务器安全,影响极大。
实验步骤
快速查找实验工具
打开桌面 Everything 搜索工具,输入实验工具名称,右击选择“打开路径”,跳转实验工具所在位置。
以查找Burp为例为大家演示。
Alt text
小i提示:
在本次实验中,请注意实验工具、实验文件存放路径,不同的文件路径可能会出现不一样的实验结果。
在实验环境中无法连接互联网,请使用您本地的网络环境。
在本次实验中所使用的ssh连接工具和文件传输工具不唯一,请根据自身情况选则工具。