某不知名博客 某不知名博客
首页
  • 《vulcat文档》
  • Web安全

    • 《BurpSuite及官方实验室》
    • 《OSWE学习历程》
  • 云原生安全

    • 《Docker命令大全》
    • 《CKS考试学习指南》
    • 《旧-Kubernetes教程》
漏洞库
  • 《渗透工具大全》
  • 《云安全》
事件库
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Carsaid

安全界的小学生
首页
  • 《vulcat文档》
  • Web安全

    • 《BurpSuite及官方实验室》
    • 《OSWE学习历程》
  • 云原生安全

    • 《Docker命令大全》
    • 《CKS考试学习指南》
    • 《旧-Kubernetes教程》
漏洞库
  • 《渗透工具大全》
  • 《云安全》
事件库
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 前言

  • 服务器端主题(翻译)

    • 服务器端主题
    • SQL注入

    • 身份验证

    • 目录遍历

    • OS命令注入

    • 业务逻辑漏洞

    • 信息泄露

    • 访问控制

    • 文件上传漏洞

    • 条件竞争

    • 服务端请求伪造(SSRF)

    • XML外部实体(XXE)注入

      • XML外部实体(XXE)注入
      • XML实体
        • 什么是XML?
        • 什么是XML实体?
        • 什么是文档类型定义?
        • 什么是XML自定义实体?
        • 什么是XML外部实体?
      • 盲XXE漏洞
    • NoSQL注入

    • API测试

  • 客户端主题(翻译)

  • 高级主题(翻译)

  • 扩展阅读(翻译)

  • 个人学习笔记

  • 实验室做题记录

  • BurpSuite及官方实验室
  • 服务器端主题(翻译)
  • XML外部实体(XXE)注入
clincat
2023-07-17
目录

XML实体

翻译

原文:https://portswigger.net/web-security/xxe/xml-entities

- name: 翻译
  desc: 原文:https://portswigger.net/web-security/xxe/xml-entities
  bgColor: '#F0DFB1'
  textColor: 'green'
1
2
3
4

# XML实体

在本节中,我们将介绍 XML 的一些关键特性,这些特性对于理解 XXE 漏洞有很大的帮助。

# 1什么是XML?

XML 表示 “可扩展标记语言(Extensible Markup Language)” 。XML 是一种专门设计并用于存储和传输数据的语言。

  • 与 HTML 的共同点,XML 使用标签和数据的树状结构。
  • 与 HTML 的不同点,XML 不使用预定义的标签,因此,可以随意地为标签指定描述数据的名称。(XML标签的 数据和名称 都可以自定义)

在 Web 历史的早期,XML 作为一种数据传输格式 使其非常流行(“AJAX” 中的 “X” 代表 “XML”)。但它的流行程度现在已经下降,取而代之的是 JSON 格式。

# 2什么是XML实体?

XML 实体是在 XML 文档中表示数据项的一种方式,而不是数据本身。XML 语言的规范中内置了各种实体。例如,实体&lt;和&gt;表示字符<和>。这两个字符是用于表示 XML 标记的元字符,因此当它们出现在数据中时,通常必须使用它们的实体形式来表示。

# 3什么是文档类型定义?

XML文档类型定义(DTD)具有各种声明规则,它可以定义 XML 文档结构、文档内包含的数据值类型 等其他选项。DTD 在 XML 文档开头的DOCTYPE元素中声明,该元素是可选的。

  • DTD 可以完全包含在文档本身当中(称为 “内部DTD”);
  • 也可以从其他位置加载(称为 “外部DTD”);
  • 也可以是两者的混合。

# 4什么是XML自定义实体?

XML 允许你在 DTD 中创建自己的实体。例如:

<!DOCTYPE foo [ <!ENTITY myentity "my entity value" > ]>
1

此定义意味着,在 XML 文档中对&myentity;实体的任何引用,都将替换为定义的值:"my entity value"。

(译者加:“实体” 可以理解为编程语言中的 “变量” 。例如,你在 XML 文档中定义了一个myentity "abc123",则你在文档的其他位置可以通过&myentity;来获取它的值)

# 5什么是XML外部实体?

(译者加:从文档外部加载自定义的 XML 实体,有点像 PHP 中的远程文件包含)

XML 外部实体是一种自定义的实体,它的具体定义 位于声明它们的 DTD 外部。

外部实体的声明使用SYSTEM关键字,并且必须指定一个 URL,文档会从该 URL 加载实体的值。例如:

<!DOCTYPE foo [ <!ENTITY ext SYSTEM "http://normal-website.com" > ]>
1

URL 可以使用file://协议,因此可以从文件中加载外部实体。例如:

<!DOCTYPE foo [ <!ENTITY ext SYSTEM "file:///path/to/file" > ]>
1

XML 外部实体成为了XML 外部实体攻击 (opens new window)的主要手段。

编辑 (opens new window)
XML外部实体(XXE)注入
盲XXE漏洞

← XML外部实体(XXE)注入 盲XXE漏洞→

最近更新
01
API测试笔记
04-30
02
msfvenom
03-29
03
Metasploit
03-29
更多文章>
Theme by Vdoing | Copyright © 2023-2024 Carsaid | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式