1.XXE漏洞原理:
XXE漏洞发生在应用程序解析XML输入时,没有禁止外部实体的加载,导致可加载恶意外部文件和代码,造成任意文件读取、命令执行、内网端口扫描、攻击内网网站、发起Dos攻击等危害。
XXE漏洞触发的点往往是可以上传xml文件的位置,没有对上传的xml文件进行过滤,导致可上传恶意xml文件。
2.本题无法注入,查看源码发现application/xml,所以先尝试抓包,发现存在外部实体:
3. 尝试构造恶意实体,读取任意文件:
<!DOCTYPE note [<!ENTITY admin SYSTEM "file:///flag">]>
<user><username>&admin;</username><password>1</password></user>
4.payload解读:
一般实体的声明:<!ENTITY 实体名称 "实体内容">,引用一般实体的方法:&+实体名称
外部实体,用来引入外部资源。
有SYSTEM和PUBLIC两个关键字,表示实体来自本地计算机还是公共计算机。
PHP引用外部实体,常见的利用协议:file://文件绝对路径 如:file:///etc/passwd
因为将file:///flag的实体名称为admin,所以引用下面一般实体时使用&admin