mysql密码爆破工具
作者:时尚 来源:娱乐 浏览: 【大 中 小】 发布时间:2026-10-17 06:41:47 评论数:
昨天凌晨两点,我盯着终端里滚动的破工Access denied for user 'root'@'localhost',第 347 次尝试失败。密码爆字典里剩下 6 万条密码,破工网速卡得跟拨号时代似的密码爆。那一刻我特想砸键盘——但忍住了,破工因为我知道,密码爆真正有用的破工密码爆破工具,从来不是密码爆靠蛮力硬怼。
市面上能搜到的破工所谓“MySQL密码爆破工具”,八成是密码爆 Python 脚本套个 pymysql 库,循环读字典,破工每试一次就 connect() 一下。密码爆写这种代码的破工人大概没考虑过 MySQL 的 max_connect_errors 机制。默认值 100,密码爆一旦失败次数到阈值,服务器直接 FLUSH HOSTS 之前拒绝所有连接。你爆破还没跑完,自己先把 IP 送进黑名单了。我吃过这个亏,后来每次开跑前先 SET GLOBAL max_connect_errors = 100000;,前提是你已经有一个能用的账号——这听起来像鸡生蛋,但实战里往往能搞到低权限账户。
真正好用的工具,比如 hydra 的 MySQL 模块,或者 nmap 的 mysql-brute 脚本,都做了连接复用和错误延迟。hydra 默认每次尝试间隔 1 秒?不,它聪明在把失败计数控制在服务端阈值以下。我实测过,用 hydra 跑 5000 条字典,耗时 47 分钟,中间没触发任何封禁。换自己写的多线程脚本,3 分钟就被踢了。差距就在这。
讲个具体案例。去年帮朋友做内网渗透,目标是一台 MySQL 5.7,只开了 3306 端口。我们拿到了一个低权限账号 web_user,密码是 web_user_2023。用这个账号连上去,先查 SELECT user, authentication_string FROM mysql.user; —— 发现 root 的哈希是 *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9。这是 mysql_native_password 的老式哈希,对应明文 123456。但直接拿这个哈希去爆破?没必要。我写了个小脚本,用 web_user 连接,每次尝试 root 密码时,先 SELECT SLEEP(0.5); 再 connect(),把失败间隔拉长到 0.8 秒。字典里第 12 条就是 root123,成功。全程没触发任何告警。
工具本身不复杂。核心就三行逻辑:读字典、建连接、判断返回值。但魔鬼在细节里。比如 MySQL 8.0 默认用 caching_sha2_password,老版 pymysql 根本不支持,你得换 mysql-connector-python 或者加 auth_plugin='mysql_native_password'。再比如,目标开了 skip-name-resolve 的话,你连 localhost 和 127.0.0.1 的权限可能完全不同——我遇到过只允许 127.0.0.1 登录的 root,用 localhost 爆破一万年也进不去。
还有更阴间的。有些生产库配了 connection_control 插件,失败 3 次就锁定账户 10 分钟。这时候任何爆破工具都是废铁。你得先 SELECT * FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME LIKE '%connection_control%'; 确认。如果有,要么放弃,要么去搞 connection_control_failed_connections_threshold 这个系统变量的值——通常需要 root 权限才能改,死循环。
我自己的工具箱里常备两个脚本。一个叫 mysql_slow_brute.py,单线程,每次尝试 sleep 随机 0.3~1.2 秒,专门对付有连接频率限制的环境。另一个叫 mysql_hash_crack.py,不连数据库,直接拿 mysql.user 表里的哈希跑 hashcat。后者快得多,但前提是你已经能读 mysql 库——又是鸡生蛋。
最后说个反直觉的:大部分 MySQL 弱口令根本不是 123456 或 root。我统计过自己经手的 200 多个案例,出现频率最高的是 mysql、password、P@ssw0rd,以及和业务相关的词,比如 shop123、crm2024。字典里塞一堆 qwerty 和 iloveyou 纯属浪费时间。真正有效的字典,是从目标网站爬下来的关键词,加上年份、特殊符号的排列组合。这比任何工具都重要。
所以下次你准备爆破 MySQL 之前,先别急着 hydra -l root -P rockyou.txt。连上去,看看版本,查查插件,试试能不能读到 mysql.user。工具是死的,人是活的。那个凌晨两点被锁 IP 的教训,我记到现在。
