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
配置完成可即可发现,服务器的内容可以自己进行填写,
然后利用rogue_mysql_server.py进行文件的读取。 修改脚本中的
filelist = ( # r'c:\boot.ini', r'/etc/passwd', #此处改为需要读取的文件 # r'c:\windows\system32\drivers\etc\hosts', # '/etc/passwd', # '/etc/shadow', )
脚本跑起来之后进行连接,账号密码随便填写即可
结果会保存在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 ~]#
本文作者为Mr.Wu,转载请注明,尊守博主劳动成果!
由于经常折腾代码,可能会导致个别文章内容显示错位或者别的 BUG 影响阅读; 如发现请在该文章下留言告知于我,thank you !