当前位置: 首页 > news >正文

零基础在实践中学习网络安全-皮卡丘靶场(第十四期-XXE模块)

本期内容涉及到很多前面的内容,因此复习后可以更好的了解本期内容

介绍

XXE -"xml external entity injection"即"xml外部实体注入漏洞"。
概括一下就是"攻击者通过向服务器注入指定的xml实体内容,从而让服务器按照指定的配置进行执行,导致问题"
也就是说服务端接收和解析了来自用户端的xml数据,而又没有做严格的安全控制,从而导致xml外部实体注入。

具体的关于xml实体的介绍,网络上有很多,自己动手先查一下。
现在很多语言里面对应的解析xml的函数默认是禁止解析外部实体内容的,从而也就直接避免了这个漏洞。
以PHP为例,在PHP里面解析xml用的是libxml,其在≥2.9.0的版本中,默认是禁止解析xml外部实体内容的。

本章提供的案例中,为了模拟漏洞,通过手动指定LIBXML_NOENT选项开启了xml外部实体解析。 

个人评价:需要有一定的网站开发的知识储备

适用场景:适用于任何涉及XML数据解析的应用程序或服务

实际反馈:可以用来攻击内网和读取服务器文件

原理

XXE漏洞(XML外部实体注入)是一种常见的安全漏洞,它允许攻击者利用XML解析器处理外部实体时的安全缺陷,通过注入恶意外部实体,实现敏感数据读取、服务器端请求伪造(也就是SSRF后面会学到)或远程代码执行(RCE)

也就是XML外部实体(XXE)漏洞是指在处理XML输入时,没有正确禁用外部实体引用而导致的安全漏洞。

XXE漏洞就像是一个不设防的快递收发站。

假设你是一个快递收发站的管理员(相当于服务器),正常情况下,你会按照寄件人(外部用户)的要求,接收并转发包裹(数据请求)。但是,这个 XXE 漏洞就好比这个收发站没有对快递包裹进行严格的安检(没有正确配置 XML 解析器)。

攻击者就好比是心怀恶意的寄件人,他们寄来的包裹里面会附带一个特殊的纸条(恶意构造的外部实体引用),比如要求你去隔壁公司的保险柜(系统中的敏感文件,像配置文件、密码文件等)取一份机密文件,然后再把这份文件当作普通包裹寄回给他(把敏感信息泄露出去)。

由于收发站没有安检(服务器存在 XXE 漏洞),它就会按照包裹里的纸条要求去做,导致本该保密的信息被泄露,这就如同服务器执行了攻击者构造的恶意 XML 请求,读取了本地文件等敏感信息并反馈给了攻击者。

很像之前学过的SQL注入,但是是完全不同的,大家一定要仔细理解

因此,我们首先要了解一些新知识

XML声明

假设你正在写一封信,信的开头会写上收信人的地址和邮编等基本信息。XML声明就像是这封信的开头部分,它告诉阅读者(比如浏览器或其他程序)这封信(XML文档)的基本信息。

DTD文档类型定义(Document Type Definition)

假设你写信时,有一套固定的格式要求,比如信必须有开头、正文和结尾,而且开头必须写日期,结尾必须写祝福语。这套格式要求就像是DTD文档类型定义。

文档元素

你写信时,信的内容被分成了几个部分,比如开头是问候语,中间是正文,结尾是祝福语。这些部分就像是文档元素。

实践

首先,什么是api

API(应用程序编程接口)可以比喻为一家饭店的菜单,你想吃什么需要通过菜单来和厨师(应用程序)联系

而本期内容没有标准答案,有很多方法,在此列举一些,和之前讲过的目录遍历方式一样,指定你本地电脑的文件即可

1,

<?xml version="1.0"?>
<!DOCTYPE ANY [<!ENTITY xxe SYSTEM "file:///c:/windows/win.ini"> ]>
<a>&xxe;</a>
  • <?xml version="1.0"?> :声明了 XML 文档的版本,这里是 1.0 版本,这是标准的 XML 开头声明,用于定义文档的 XML 版本。

  • <!DOCTYPE ANY [ :这是文档类型定义(DTD)的开始标记。ANY 表示文档的根元素可以是任意名称,在这里是为后续定义外部实体做准备。

  • <!ENTITY xxe SYSTEM "file:///c:/windows/win.ini"> ]> :这一行定义了一个名为 xxe 的外部实体,SYSTEM 关键字指定了实体的类型为系统外部实体,其值 file:///c:/windows/win.ini 表示从本地文件系统中读取 C 盘 windows 目录下的 win.ini 文件作为该实体的值。通过这种方式,攻击者可以将本地文件的内容包含到 XML 文档中,如果服务器端在解析 XML 时没有正确处理外部实体引用,就会导致 XXE 漏洞被利用。

  • <a>&xxe;</a> :在 XML 元素 <a> 中引用了之前定义的 xxe 外部实体,当服务器端解析这个 XML 时,会将 &xxe; 替换为从 file:///c:/windows/win.ini 文件中读取的内容,从而实现了读取本地文件的目的,这是 XXE 漏洞的一种典型利用方式。

2,

<?xml version="1.0"?>
<!DOCTYPE test [<!ENTITY xxe SYSTEM "http://example.com/test.txt">]>
<content>&xxe;</content>

介绍:通过将外部实体指向一个远程 HTTP URL,从远程服务器上读取文件内容。如果服务器端在解析 XML 时允许外部实体引用,并且网络配置允许访问外部网络,攻击者可以通过这种方式获取远程服务器上的敏感信息,或者进行其他恶意操作,如访问内部网络资源等。

3,


<?xml version="1.0"?>
<!DOCTYPE cmd [<!ENTITY xxe SYSTEM "expect://id">]>
<data>&xxe;</data>

介绍:有些 XML 解析器会将外部实体的值作为系统命令来执行,在这个例子中,expect://id 会尝试在服务器上执行 id 命令,从而获取服务器上当前用户的权限信息等。不过,这种方式对解析器的要求较高,并非所有解析器都会支持。

至此,xxe模块完成

本期内容同样需要一定的网站开发基础,但是通过详细的解释,希望大家可以更好了解

相关文章:

  • TDengine 支持的平台汇总
  • CSS3 的特性
  • ios苹果系统,js 滑动屏幕、锚定无效
  • 【JVM】Java虚拟机(二)——垃圾回收
  • jvm 垃圾收集算法 详解
  • WebRTC通话原理与入门难度实战指南
  • 探索C++标准模板库(STL):String接口的底层实现(下篇)
  • LinkedList、Vector、Set
  • Parameter ‘XXX‘ not found. Available parameters are [list, param1]
  • 【选配电脑】CPU核显工作机控制预算5000
  • 复制与图片文件同名的标签文件到目标路径
  • 广东餐饮服务中高级证备考指南:高效学习与应试技巧
  • 光学字符识别(OCR)理论概述与实践教程
  • 移除元素-JavaScript【算法学习day.04】
  • Redis 持久化机制深度解析
  • 第9篇:数据库中间件的容错机制与高可用架构设计
  • UOS无法安装deb软件包
  • ​​Android 如何查看CPU架构?2025年主流架构有哪些?​
  • 本地主机部署开源企业云盘Seafile并实现外部访问
  • 开源之夏·西安电子科技大学站精彩回顾:OpenTiny开源技术下沉校园,点燃高校开发者技术热情
  • 游戏网站排行/av手机在线精品
  • 手机wap网站模板下载/营销型网站制作建设
  • 威海环翠疫情最新消息/seo一般包括哪些内容
  • 网页游戏排行榜斗地主/seo外链发布平台
  • 做转运网站/浙江网络科技有限公司
  • 哪里能找到免费网站/百度小说排行榜前十名