首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

PHP MySQL暴力破解脚本安全分析与防护加固指南

     編輯:MySQL 綜合教學
⚠ 安全警示:本文分析恶意脚本原理仅用于防御教育,严禁用于非授权渗透测试。未经授权访问计算机系统违反《刑法》第285条、第286条,最高可判七年有期徒刑。

恶意脚本代码分析

<?php
// 简化版恶意逻辑
if ($_POST['submit']) {
    $host = $_POST['host'];
    $username = "root";  // 固定用户名
    $passwords = ['', '123456', 'admin', 'root', 'password'];  // 弱口令字典
    
    foreach ($passwords as $pwd) {
        if (@mysql_connect($host, $username, $pwd)) {
            echo "破解成功:$pwd";
            break;
        }
    }
}
?>
<form method="post">
目标IP: <input name="host"> <input type="submit" name="submit" value="爆破">
</form>

脚本技术特征

特征描述危害等级
使用 mysql_connectPHP 5.5+ 已弃用,7.0+ 已移除低(仅旧环境生效)
错误抑制 @隐藏连接失败警告,静默尝试中
硬编码 root 用户针对默认高权限账号高
弱口令字典包含空密码、123456、admin 等 Top 100 弱密码高
无频率限制可高速并发尝试,易触发防火墙封禁中

MySQL 账号安全加固清单

  1. 禁用 root 远程登录
    DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost','127.0.0.1','::1');
    FLUSH PRIVILEGES;
  2. 强制复杂密码策略(MySQL 5.7+)
    INSTALL PLUGIN validate_password SONAME 'validate_password.so';
    SET GLOBAL validate_password_policy = MEDIUM;
    SET GLOBAL validate_password_length = 12;
  3. 创建最小权限应用账号
    CREATE USER 'app_user'@'10.0.0.%' IDENTIFIED BY 'Str0ngP@ssw0rd!';
    GRANT SELECT, INSERT, UPDATE, DELETE ON app_db.* TO 'app_user'@'10.0.0.%';
  4. 网络层访问控制
      li>安全组/防火墙仅放行应用服务器 IP 访问 3306
    • 数据库服务器禁用公网 IP
    • VPC 私有网络隔离
  5. 启用 SSL 连接
    [mysqld]
    require_secure_transport = ON
    ssl_ca = /etc/mysql/ssl/ca.pem
    ssl_cert = /etc/mysql/ssl/server-cert.pem
    ssl_key = /etc/mysql/ssl/server-key.pem
  6. 审计日志监控
    • 安装 audit_log 插件记录登录尝试
    • SIEM 关联分析:短时多次失败登录 → 告警/封禁
    • 定期审查 mysql.user 异常账号
  7. 连接频率限制
    # MySQL 8.0+
    CREATE USER 'app_user'@'%' IDENTIFIED BY 'pass' 
    WITH MAX_CONNECTIONS_PER_HOUR 1000 
    MAX_QUERIES_PER_HOUR 5000;

应用层防护

  • 数据库连接池配置合理超时与重试
  • 错误信息不回显给前端(防止信息泄露)
  • 使用预处理语句防止 SQL 注入
  • 定期轮换数据库密码,配合密钥管理系统

应急响应

# 发现暴力破解时:
# 1. 立即封禁攻击源 IP
iptables -A INPUT -s  -j DROP

# 2. 检查是否有成功登录
grep "Access denied" /var/log/mysqld.log | awk '{print $NF}' | sort | uniq -c | sort -nr

# 3. 紧急修改所有疑似泄露账号密码
# 4. 审计数据完整性,检查异常 DDL/DML 操作
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved