
OWASPtop10——XXE笔记
本文最后更新于 2024-07-26,文章内容可能已经过时。
免责声明
⚠特别说明:此教程为纯技术教学!严禁利用本教程所提到的漏洞和技术进行非法攻击,本教程的目的仅仅作为学习,
决不是为那些怀有不良动机的人提供技术支持!也不承担因为技术被滥用所产生的连带责任!⚠
一、概述
XXE(XML External Entity Injection)xml外部实体注入
二、前提
Web应用的脚本代码没有限制XML引入外部实体,从而导致测试者可以创建一个包含外部实体的XML,使得其中的内容会被服务器端执行
注意:这个漏洞必须是在libxml2.9.1这个版本以及更低的版本才能利用。
三、危害
当允许引用外部实体时,通过构造恶意内容,就可能导致任意文件读取、系统命令执行、内网端口探测、攻击内网网站等危害
四、XML基础
1、语法规则:
五、实体
1、DTD(document type definition)
文档类型声明:DTD的作用是定义XML文档的合法构造模块,可以在内部声明,也可以外部引用
所有的XML文档都由五种简单的构建模块(元素,属性,实体,PCDATA CDATA)构成
内部声明:
外部声明:
user.dtd
xml内容
user.xml
2、实体:
在DTD中声明的变量就是实体,通过在标签中使用&实体名;
引用
(1)内部实体:
(2)外部实体:<!ENTITY 实体名 SYSTEM 文件名>
test.dtd
区别:内部实体变量值是固定的,而外部实体是给定外部文件中获取。
六、外部实体漏洞:
当外部实体引用的文件变为用户可控输入时,用户就可以使用任意地址来getshell
php代码:
payload:
DNS带外探测:
dnslog.cn申请临时域名
payload:
在临时域名前增加test.
访问后发现有dns日志,说明存在这个xxe的漏洞
- 感谢你赐予我前进的力量