[i=s] 本帖最后由 zeke 于 2025-9-20 16:00 编辑 [/i]
WEB渗透测试工程师系统班250303期
第39节课作业
一、什么是XXE漏洞?
XXE(XML External Entity Injection,XML外部实体注入)是一种针对应用程序解析XML输入类型的攻击。当配置不当的XML解析器处理了含有外部实体声明的XML输入时,攻击者可以利用这个漏洞读取服务器上的任意文件、探测内网端口、执行远程代码(在特定情况下)以及实施拒绝服务(DoS)攻击。
简单来说,XXE就是利用XML解析器的“外部实体”功能,去读取本不应该被访问的数据或执行非预期的操作。
二、外部实体的xml语法是什么?
<!ENTITY 实体名称 SYSTEM "URI/URL">

三、实战pikachu中的xxe漏洞来读取系统文件

四、实战pikachu中的xxe漏洞通过kali来实现外部实体注入。运用dtd文件。
有回显:
①虚拟机kali新建dtd文件,内容如下

②物理机系统盘C盘要有1.txt文件

③运行xml代码

无回显:
带外测试1-4
数据存放文件5-8 前提:能往受害者服务器存放2.php这个文件
数据显示在日志9-11 不需要向受害者服务器存放文件
①修改pikchu的xxe文件,注释echo,隐去回显

②yakit开启dnslog服务

③带入xml代码

④有记录

⑤物理机根目录下新建2.php文件,id传什么内容,就会写入什么内容到3.txt里面
<?php file_put_contents("3.txt",$_GET["id"],FILE_APPEND);?>//把 %flie的具体数据写入了文件 3.txt 里面

⑥kali在根目录下新建1.xml文件,该代码会访问受害者服务器上的 2.php 文件,传参 id=%file 具体获得的数据

⑦xml代码打入pikachu

⑧本地生成了3.txt文件,里面是系统盘C盘1.txt的内容

⑨往kali放入demo.xml和get.php文件,IP为Kali

⑩xml代码打入pikachu

⑩+1 kali查看日志,得到系统盘C盘1.txt文件

一、笔记标题:WEB渗透系统班-XXE漏洞(上)+XXE漏洞(下)
二、文章内容:
1.课程内容概要
主要知识点1:xxe漏洞利用
主要知识点2:漏洞寻找黑盒/白盒
黑盒:
①进入存在xxe漏洞的靶场

②观察Context-Type和Accept,有application/xml,确定存在xml漏洞

③测试

白盒:
审计对应的危险函数,看传参是否可控
主要知识点3:XXE漏洞防御(修复)
- 打开php的libxml_disable_entity_loader(true),不允许加载外部实体。
- 过滤用户提交的xml数据,比如ENTITY,SYSTEM
2.重点知识与细节
概念解析
概念1:XML是什么?
XML(eXtensible Markup Language,可扩展标记语言)是一种用于存储和传输数据的标记语言。它被设计为具有自我描述性,常用于配置文件(如Spring、Struts2)、Web服务(如SOAP)和数据传输(如RSS)。
概念2:DTD是什么?
DTD(Document Type Definition,文档类型定义)是XML的约束规范,用于定义XML文档的合法构建模块。它可以在XML文档内部声明,也可以从外部引用。
概念3:实体是什么?
实体是XML的存储单元,可以理解为变量。你可以定义一个实体,然后在文档的其他地方引用它。解析时,实体的引用会被其定义的内容所替换。
内部实体:<!ENTITY 实体名 "实体的值">
外部实体:<!ENTITY 实体名 SYSTEM "URI">。这是XXE的根源!SYSTEM 关键字告诉解析器从外部来源(如文件系统、网络URL)获取实体内容。
关键步骤
步骤1:无
步骤2:
步骤3:
相关代码
3.实操练习和解析
如作业
4.个人总结
本节课最大的收获是:学习了什么是xxe漏洞,并且进行了实操
仍然存在疑问的地方:暂无
需要课后深入学习的内容:暂无