xml注入

admin 2024年10月7日15:16:46评论14 views字数 1060阅读3分32秒阅读模式

xml注入类漏洞产生原因是xml解析没有正确配置,没有禁止解析外部实体,所以这个漏洞以及代码部分都比较简单,也很好分析。

只做代码分析,和简单的poc验证,仅供学习,一切均来自互联网


还是某oa网上流传的漏洞。

漏洞位置:  ReceiveCCRequestByXml。代码如下

首先直接看service函数。定义一个参数v3获取互联网传来的http请求然后把请求内容通过ServletUtil.getServletInputStreamContent转换成string类型。

xml注入

ServletUtil.getServletInputStreamContent这个函数就是读取请求内容进行转换成String并且每一行加上换行符。然后返回转换后的String

xml注入

如果转换以后的String不为空,就获取请求来源的Ip.然后去使用receiveCCRequestByXml函数解析之前传来的请求并且对请求做处理。

xml注入

分析一下 receiveCCRequestByXml函数

xml注入

它第一步调用了xmlToMap函数。

xml注入

分析xmlToMap函数,xmlToMap函数首先通过SecurityMethodUtil.clearEntity对传入的xml做了简单过滤比如如果出现"entity"就使用* 替换如果没有出现entity字符串就直接返回之前输入内容。如下,但是这个过滤只有70%的用吧,哈哈哈哈哈哈哈,

xml注入

然后它使用 Document var3 = DocumentHelper.parseText(var1)进行xml解析。


其实到这里就可以不继续分析了。

因为DocumentHelper.parseText就是在进行XML解析了。使用这一行代码就可以造成xml注入了。

下面是poc验证 可以以dnslog或者资源访问为例。

xml注入

xml注入

关于如何修复,可正确设置参数禁止外部实体注入。详情看参考文章

参考:

https://blog.spoock.com/2018/10/23/java-xxe/

https://zhuanlan.zhihu.com/p/265402618

https://cloud.tencent.com/developer/article/1674208

关于这个漏洞,我算是第一次自己去代码审计复现xxe方面的漏洞,我对这方面代码了解的很多,一步一步分析实践是很少的。还需要继续多看代码。

你们可以自己写一个非常非常简单的demo关于xml解析注入。自己导入一下dom4j包到Pom.xml里

xml注入

然后写一个main如

xml注入

 

原文始发于微信公众号(天才少女Alpha):xml注入

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

发表评论

匿名网友 填写信息