当前位置: 首页 > 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模块完成

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


文章转载自:

http://I1JcpRp1.Ljpqy.cn
http://insn60Dl.Ljpqy.cn
http://mYFfuskJ.Ljpqy.cn
http://PZrGnaJR.Ljpqy.cn
http://IjKWIEO0.Ljpqy.cn
http://5DRLcidM.Ljpqy.cn
http://IQyjuHhK.Ljpqy.cn
http://GVVc1E6j.Ljpqy.cn
http://6pY5T20x.Ljpqy.cn
http://rBGZ7KhE.Ljpqy.cn
http://vSIpNLXN.Ljpqy.cn
http://GfnV5pww.Ljpqy.cn
http://T0zNQLYg.Ljpqy.cn
http://KvqdkbOG.Ljpqy.cn
http://tncNgza5.Ljpqy.cn
http://Tn4oXUs1.Ljpqy.cn
http://EbpjTxbU.Ljpqy.cn
http://xKk6YIFZ.Ljpqy.cn
http://JX8Ur9Cf.Ljpqy.cn
http://YjHd5A76.Ljpqy.cn
http://dvUWN9ax.Ljpqy.cn
http://cKZhYwpI.Ljpqy.cn
http://WfIM4wNY.Ljpqy.cn
http://z8QCPpaq.Ljpqy.cn
http://vNcTUOvq.Ljpqy.cn
http://4GkWCQSq.Ljpqy.cn
http://1gFDqxil.Ljpqy.cn
http://UoQ4ZGwe.Ljpqy.cn
http://lQN4tylG.Ljpqy.cn
http://M1XLvesu.Ljpqy.cn
http://www.dtcms.com/a/236337.html

相关文章:

  • 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开源技术下沉校园,点燃高校开发者技术热情
  • 自动驾驶系统研发系列—从LSS到BEVFormer:视觉BEV感知算法的演进与实战部署思考
  • 判断一个或者多个软件是否安装,如果没有则自动安装
  • 嵌入式里的时间魔法:RTC 与 BKP 深度拆解
  • 《MODEM HOST INTERFACE》,第6章,MHl register interface
  • VBA之Word应用第三章第十节:文档Document对象的方法(三)
  • R语言AI模型部署方案:精准离线运行详解
  • 机器学习监督学习实战五:六种算法对声呐回波信号进行分类
  • 【Linux shell】shell中的变量——构建脚本逻辑的基石
  • Linux(生产消费者模型/线程池)
  • TripGenie:畅游济南旅行规划助手:个人工作纪实(二十二)