概述:MySQL 8 弱密码预研说明,根据目前的调研结果,暂时只能通过注入并调用的方式来检测,且这种方式会触发 MySQL 防爆破策略。
mysql 认证相关接口均以插件形式,全局导出了插件的列表
1 | Cached_authentication_plugins * g_cached_authentication_plugins 0000000147BB31D0 13573 |
mysql 8.0.34 版本及之后共有三个插件:
- sha256_password
- mysql_native_password
- caching_sha2_password
可以获取到这三个插件,但是 mysql 的安全机制上,没有办法调用插件对应的函数接口。在每个插件函数接口的内部都是通过 THD 的变量传递登录信息和登录结果的。
1 | THD *thd = current_thd; |
插件导出接口的详细说明可查看这篇文章 【弱密码】MySQL8-密码Function
安装及启动
- 设置环境变量,path添加 mysql\bin 目录
mysqld install <服务名>mysqld -–initilalize –-console
这一步会生成 root 账户的密码,启动 MySQL 服务后使用这个密码登录net start <服务名>mysql -u root -p 生成的密码- 登录后修改密码
alter user root@localhost identified by 'Admin@123'; - 创建不同插件的用户
create USER mnpweak2 IDENTIFIED WITH mysql_native_password BY 'admin123';

相关导出接口
声明
1 | typedef MYSQL * (__stdcall *pfn_mysql_init)(MYSQL *mysql); |
获取
1 | m_ptr_mysql_init = (pfn_mysql_init)GetProcAddress(hExe, "mysql_init"); |