博客
关于我
【XXE技巧拓展】————2、未知攻焉知防之XXE漏洞攻防
阅读量:162 次
发布时间:2019-02-28

本文共 1175 字,大约阅读时间需要 3 分钟。

XML基础知识

XML(Extensible Markup Language,可扩展标记语言)是一种用于定义和结构化电子文件的标记语言。它不仅可以用于标记数据和数据类型,还允许开发者定义自己的标记语言。XML文档的基本结构包括XML声明、DTD(文档类型定义)以及文档元素。通过XML,开发者可以定义数据的结构和约束,确保数据的可靠性和一致性。

DTD与实体

DTD是XML文档的核心部分,用于定义XML文档的合法构建方式。DTD可以在XML文档内部声明,也可以通过外部引用。DTD中的实体则是用于定义XML文档中常见字符或片段的快捷方式。实体可以内部定义,也可以外部引用。

XML外部实体注入(XXE攻击)

当允许XML文档引用外部实体时,攻击者可能会利用这一特性构造恶意内容,导致严重的安全风险。通过注入外部实体,攻击者可以读取任意文件、执行系统命令、探测内网端口等危害。以下是XXE攻击的几种常见方式:

  • 恶意引入外部实体

    通过在XML文档中引用恶意DTD文件或实体,攻击者可以绕过安全机制,执行恶意操作。例如,攻击者可以在DTD文件中定义一个实体,指向一个远程恶意文件。

  • 数据不回显

    在某些情况下,攻击者可以通过XXE漏洞将数据发送到远程服务器,而没有用户感知。

  • 执行系统命令

    如果XML解析库支持特定的协议(如PHP的expect扩展),攻击者可以在恶意DTD中定义一个实体,执行系统命令。

  • 探测内网端口

    通过XXE漏洞,攻击者可以探测内网端口,例如检查是否存在开放的80或81端口。

  • 攻击内网网站

    XXE漏洞还可能被用来攻击内网网站,例如通过远程执行系统命令或注入恶意代码。

  • XXE攻击案例

    客户端XXE案例

    某些办公软件(如文档转换软件)被发现存在XXE漏洞。攻击者可以通过上传恶意文档,利用软件处理XML文件时的外部实体注入功能,触发XXE攻击。例如,攻击者可以在文档中注入一个引用外部实体的XML片段,导致恶意代码执行。

    防御XXE攻击

    为了防御XXE攻击,可以采取以下措施:

  • 禁用外部实体加载

    使用开发语言提供的功能禁用外部实体加载。例如,在PHP中,可以通过libxml_disable_entity_loader(true);禁用外部实体加载。

  • 过滤用户提交的XML数据

    在处理用户提交的XML数据时,过滤掉SYSTEM和PUBLIC实体。这些实体通常用于引用外部文件,可能包含恶意代码。

  • 使用安全库解析XML

    使用经过验证的、安全性高的XML解析库,可以减少因解析异常导致的安全风险。

  • 验证外部实体的安全性

    在引用外部实体时,验证实体的URI来源,确保其安全可靠。

  • 数据验证与清洗

    对用户提交的XML数据进行实时验证和清洗,确保其符合预期格式和安全要求。

  • 通过以上措施,可以有效防止XXE攻击,保护系统免受恶意代码注入的威胁。

    转载地址:http://xggc.baihongyu.com/

    你可能感兴趣的文章
    Python块键盘/鼠标输入
    查看>>
    python在使用HTMLTestRunner时,报告为空,错误提示<_io.TextIOWrapper name='<stderr>' mode='w' encoding='utf_8'>...
    查看>>
    python在gpu上运行_【python】python开启GPU加速
    查看>>
    Python在def函数中使用for循环
    查看>>
    Python在def函数中使用for循环
    查看>>
    Python在Conda环境中,但在Windows虚拟环境中没有激活
    查看>>
    python系列【仅供参考】:python pip 错误 ModuleNotFoundError: No module named pip._internal 解决办法
    查看>>
    python图像条状状噪声,使用PYTHON PIL从验证码图像中删除背景嘈杂的线条
    查看>>
    Python图像处理:从内存加载jpeg
    查看>>
    python固定后缀(名物化词汇)词频统计:抽取+统计+可视化
    查看>>
    python商品评论数据采集与分析可视化系统 Flask框架 requests爬虫 NLP情感分析 毕业设计 源码
    查看>>
    python商品数据分析可视化系统(带爬虫)京东销售数据分析 计算机毕业设计 源码下载
    查看>>
    python商品库存管理系统 django框架 商品网站 MySQL数据库 源码下载 计算机毕业设计
    查看>>
    Python哪个版本最稳定好用2023.10.19
    查看>>
    Python和黑客技术的渊源
    查看>>
    Python和RF编写接口自动化
    查看>>
    python和js哪个难_【Python】记一次学习,Python 与 js 在实现闭包时的差异
    查看>>
    python和java哪个更值得学——来自知乎高赞回答
    查看>>
    python命名空间更改_Python模块xml.etree.ElementTree自动修改xml命名空间键
    查看>>
    Python命名中尾随下划线有什么好处?
    查看>>