XXE

XXE(Xml external entity -injection) xml外部实体注入
XML 指可扩展标记语言(eXtensible Markup Language)。
XML 被设计用来传输和存储数据。


xml格式

xml格式中第二部分是文档类型定义

DTD: Document Type Definition即文档类型定义,用来为XML文档定义语义约束。
1.DTD内部声明
<! DOCTYPE根元素[元素声明
2.DTD外部引用
< DOCTYPE根元素名称 SYSTEM "外部DTD的URI">
3.引用公共DTD
<! DOCTYPE根元素名称 PUBLIC “DTD标识名” “公用DTD的URi”>

可参考XML约束——DTD约束

测试payload

<?xml version="1.0"?>
<?DOCTYPE ANY [
    <?ENTITY f SYSTEM "file:///etc/passwd">
]>
<x>&f;</x>

外部引用可以支持http,file,ftp等协议。
如果一个接口支持接收xm数据,且没有对xml数据做任何安全上的措施,就可能导致XXE漏洞

simplexml_load_string函数转换形式良好的XML字符串为 SimpleXMLElement对象
在PHP里面解析xm用的是 libxml,其在≥29.0的版本中,默认是禁止解析xm!外部实体内容的。
XCE漏洞发生在应用程序解析XML输入时,没有禁止外部实体的加载,导致攻击者可以构造一个恶意的XML。

后台代码

后台代码如上图所示,如果前端提交了参数为上面的test payload的话,就会将系统文件/etc/passwd 返回,造成敏感信息的泄漏

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

推荐阅读更多精彩内容