web安全101之如何理解XXE?

本文介绍了XXE(XML外部实体攻击)的概念,起源于XML在Web应用中的使用,特别是XML实体和外部实体。XXE允许攻击者通过控制XML实体的值来获取敏感信息或进行DoS攻击。防御措施包括禁用DTD处理和外部实体,以及限制解析器的行为。此外,文章还探讨了XXE的测试方法,如经典测试和盲XXE测试,并提供了不同文件类型中插入XXE payload的策略。
摘要由CSDN通过智能技术生成

前置知识

XXE如何理解?

它是可扩展标记语言 ( XML) 用于存储和传输数据。

通常始于异步JavaScript和XML技术(ajax技术):网页应用能够快速地将增量更新呈现在用户界面上,而不需要重载(刷新)整个页面。

目前JSON的使用比XML更加普遍。JSON和XML都被用于在Ajax模型中的XML技术。

这种标记语言允许开发人员定义和表示任意数据结构的HTML。

以下为定义属性和值的Security Assertion Markup Language(SAML)语言

<saml:AttributeStatement>
  <saml:Attribute Name="username">         # 定义属性
    <saml:AttributeValue>                  # 定义值
      vickieli
    </saml:AttributeValue>
  </saml:Attribute>
</saml:AttributeStatement>

XML 格式广泛用于 Web 应用程序的各种功能,包括身份验证、文件传输和图像上传,或者只是将 HTTP 数据从客户端传输到服务器并返回。

XML 文档可以包含 文档类型定义 ( DTD) ,它定义了 XML 文档的结构及其包含的数据。

注意:&file; 是实体,而不是外部实体。

这些DTD可以从外部加载或在文件本身的DOCTYPE标签中声明

以下是一个DTD,它定义了一个名为file的XML实体

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE example [
  <!ENTITY file "Hello!">
]>
<example>&file;</example>       # &file; = Hello!

我们可以将XML的实体,理解于类似编程语言中的变量:即,&file; = Hello!

XML 文档还可以使用外部实体通过 URL 访问本地或远程内容。

当语法中使用SYSTEM 关键字时,则该实体是外部实体,其值将从URL加载

URL可以从本地文件系统中加载,也可以从互联网中加载

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE example [
  <!ENTITY file SYSTEM "file:///example.txt">
]>
<example>&file;</example>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE example [
  <!ENTITY file SYSTEM "http://example.com/index.html">
]
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值