数据库漏扫如何检查弱口令

wen 网络安全 1

本文目录导读:

数据库漏扫如何检查弱口令

  1. 核心原理:认证探测与字典攻击
  2. 具体的检查方法与技术细节
  3. 典型工具与执行方式
  4. 查找弱口令的检查点
  5. 注意点

数据库漏扫(漏洞扫描)中检查弱口令,通常采用暴力破解(字典攻击)弱口令字典匹配两种核心逻辑,由于直接对数据库进行暴力破解具有高风险(可能导致账号锁定、数据库性能下降甚至崩溃),专业的漏扫工具会采用特定的策略和技术手段。

以下是数据库漏扫检查弱口令的详细技术路径和步骤:

核心原理:认证探测与字典攻击

扫面工具不会直接读取数据库内部的密码哈希值(因为通常无权限),而是模拟客户端发起登录请求。

流程:

  1. 端口与服务发现:首先识别开放了什么数据库端口(如 MySQL 的 3306,Oracle 的 1521,MSSQL 的 1433)。
  2. 版本与认证协议解析:识别数据库类型和版本,确定其使用的认证协议(如 MySQL 的 mysql_native_password,PostgreSQL 的 MD5 认证)。
  3. 字典加载:加载预置的或用户自定义的弱口令字典(admin/adminroot/rootsa/password@123test/test123 等)。
  4. 模拟登录:针对发现的每一个数据库实例(IP:Port),遍历字典中的用户名和密码组合,向数据库发送认证请求。
  5. 结果分析
    • 成功(认证通过):记录为高危弱口令漏洞。
    • 失败:根据返回的特定错误码(如“Access denied”)判断用户名是否存在(部分协议会泄露用户是否存在)。
    • 锁定/限制:如果多次失败后连接被拒绝(达到数据库最大失败尝试数),工具会暂停或报告该实例存在锁定风险。

具体的检查方法与技术细节

深入分析:认证协议与返回值利用

  • MySQL/MariaDB
    • 发送 COM_CHANGE_USERmysql_native_password 认证包,弱口令扫描工具会直接与 MySQL 协议握手,错误时返回 ERROR 1045 (28000)
    • 更隐秘的方法(插件嗅探):部分高级工具会通过 MySQL 的 plugin 字段(在握手包中)判断是否使用了弱口令插件(如 mysql_old_password,该协议极为脆弱且几乎不可逆,但已废弃)。
  • MSSQL
    • 使用 TDS 协议发送登录包,错误时返回 Login failed for user
    • 利用扩展存储过程:部分工具会尝试启用 xp_cmdshell(如果管理员账户弱口令成功登录),但这已超出静态口令检查范畴,属于后利用。
  • Oracle
    • 使用 TNS (Transparent Network Substrate) 协议建立连接,然后通过 Oracle 的 AUTH_SESSKEYAUTH_PASSWORD 进行认证,由于其认证过程涉及与 SID/Service Name 的关联,扫描时还需要猜测或读取 SID 列表。
  • PostgreSQL
    • 使用启动包(StartupMessage)进行认证,其协议支持 password(明文)、md5scram-sha-256,扫描器针对不同的认证类型使用对应的密码构造。

高级规避与精准策略

由于直接暴力破解风险高,漏扫工具会使用以下策略减少影响:

  • 速率限制:每尝试一个密码后,强制等待 100-500 毫秒,避免触发数据库的防御机制(如 max_connect_errors 导致的 IP 封锁)。
  • 账号锁定规避:如果检测到某账号已连续失败 n 次(3-5 次),工具会跳过该账号,避免导致其被永久锁定或触发警报。
  • 指纹识别:在尝试攻击前,先通过服务 Banner(如 MySQL 返回的版本字符串)判断目标版本,从而选择对应的认证要求(MySQL 8.0+ 使用 caching_sha2_password,与旧版不同)。
  • 用户枚举:先尝试少量常见用户名(如 sarootpostgresadmin)但不提供密码,根据数据库的错误响应(部分数据库会区分“用户不存在”和“密码错误”)来推导有效用户名,然后针对这些用户进行精确定向攻击。

字典包的质量是关键

漏扫的有效性高度依赖弱口令字典集,优秀的扫描器会包含:

  • 通用弱口令admin/admin123root/p@ssw0rdtest/test
  • 默认出厂密码空密码(如 Root 不设置密码), changeme
  • 常见变体Password1P@ssw0rd!@#companyname123
  • 行业/地区特性:例如银行系统可能使用 abc123,政府系统可能使用 Gov@2023
  • 简单枚举123456111111000000

典型工具与执行方式

  • 商业扫描器:Nessus Professional/Plus(插件 ID: 25793 等专门检测 Oracle 弱口令)、Nexpose、Qualys VM,它们集成了上述逻辑,结果准确且风险可控。
  • 开源/专用工具
    • Hydrahydra -l root -P passwords.txt mysql://target_ip(直接暴力破解,不包含速率限制,需小心使用)。
    • Medusa:类似 Hydra,支持 -m AUTH 等参数。
    • Ncrack:专门用于网络认证的暴力破解工具,对 MySQL、PostgreSQL 支持较好。
    • Nmap 脚本nmap --script mysql-brutenmap --script ms-sql-brute(风险较低,因为默认使用较慢的速率和较小的字典)。

查找弱口令的检查点

检查点 描述 风险等级
默认密码 未修改数据库出厂时的默认密码(如 root/空密码, sa/空密码) 严重
常见弱密码 123456, password, admin123, pass@123 高危
与服务器信息相关的密码 companyname2023, server01, 域名, 机柜号相关 高危
空密码 某些数据库(如 MySQL 早期版本)允许不设置密码 严重
使用已废弃的认证协议 即使密码非弱口令,但使用了 mysql_old_password(仅 4 位哈希)非常脆弱 严重
同账号同密码(跨服务复用) 数据库管理员密码与 SSH 或 Web 后台密码相同(需关联扫描) 中-高危

注意点

  1. 不要使用暴力破解工具直接对生产数据库进行大量尝试,可能导致数据库资源耗尽、连接数打满或触发安全警告,应使用专业的漏扫工具(内置速率控制和停机检测),或者联系 DBA 在测试环境/维护窗口进行。
  2. 建议的防护方式:数据库漏扫的结果不应仅依赖扫描,本质上应使用密码策略管理(如强制使用 16 位以上复杂密码且定期更换,配置 fail2ban 等)。

如果需要在特定环境下进行一次安全的弱口令扫描,建议提供一个非生产环境 IP只允许弱口令扫描 的扫描工具配置,我可以帮你进一步确认具体的检测命令或配置参数。

抱歉,评论功能暂时关闭!