zoukankan      html  css  js  c++  java
  • XML外部实体(XXE)

    A4-XML外部实体(XXE)

    • 如果攻击者可以上传XML文档或者在XML文档中添加恶意内容,通过易受攻击的代码、依赖项或集成,他们就能够攻击含有缺陷的XML处理器。
    • XXE影响-XXE缺陷可用于提取数据、执行远程服务器请求、扫描内部系统、执行拒绝服务攻击和其他攻击。

    XML

    • 可扩展标记语言(Extensible Markup Language,XML),用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。
    • XML是标准通用标记语言(SGML)的子集,非常适合Web传输。XML提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。
    • 在解析XML的过程中如果未过滤用户的输入则可能引起注入问题。

    XML文档格式

     XML实体定义

    1.内部实体声明

     2.外部实体声明

    XXE外部实体注入:通过system引入外部定义,可以泄露敏感信息或探测内网等

     

    XML外部实体(XXE)案例

    如何防御xxe攻击:

    • 方案一、使用开发语言提供的禁用外部实体的方法

    PHP
    libxml_disable_entity_loader(true);

    JAVA:
    DocumentBuilderFactory dbf =DocumentBuilderFactory.newInstance();
    dbf.setExpandEntityReferences(false);

    Python
    from lxml import etree
    xmlData = etree.parse(xmlSource,etree.XMLParser(resolve_entities=False))

     

    • 方案二、过滤用户提交的XML数据

    关键词:<!DOCTYPE和<!ENTITY,或者,SYSTEM和PUBLIC。

  • 相关阅读:
    SQL Server数据库损坏、检测以及简单的修复办法
    迭代法
    求两个数组的交集
    jQuery的动画处理总结
    ASP.NET MVC企业开发的基本环境
    ASP.NET WebForm 的路由
    CMStepCounter Class Refernce
    C++输入一个字符串,把其中的字符按照逆序输出的两种方法
    5.2 列出表的列
    Mac Outlook数据文件的位置
  • 原文地址:https://www.cnblogs.com/52kj/p/12465041.html
Copyright © 2011-2022 走看看