【问题标题】:Why is the old mysql password function considered insecure为什么旧的mysql密码功能被认为是不安全的
【发布时间】:2011-10-28 06:24:32
【问题描述】:

我知道旧的 mysql 密码功能(4.1 之前)被认为是不安全的,但我不知道为什么。它被认为不安全的具体原因是什么?

【问题讨论】:

    标签: mysql security passwords


    【解决方案1】:

    根据MySQL docs on password hashing

    密码散列机制在 MySQL 4.1 中进行了更新,以提供 更好的安全性并降低密码被截获的风险。

    我不确定这是否意味着“降低密码被截获的风险”是否意味着其他任何东西,或者只是意味着它们更难破解,但主要区别在于生成的哈希值的大小。

    在 4.1 之前,哈希大小为 16 个字节。
    从 4.1+ 开始,哈希大小为 41 字节(* + 40 字节)。

    相对于较大的散列函数,16 字节的散列非常小,很容易找到冲突。 MD5 通常被认为强度不足,它产生两倍——32 字节。相比之下,16 字节基本上是可悲的。比较:

    pre-4.1 MySQL PASSWORD:  16 bytes  
                       MD5:  32 bytes
                     SHA 1:  40 bytes
       4.1+ MySQL PASSWORD:  41 bytes (40 bytes, prepended with an asterisk)
                   SHA-256:  64 bytes
                   SHA-512: 128 bytes
    

    新的密码哈希方案与 SHA-1 相当,比 MD5 略好,但仍不足以推荐密码。

    【讨论】:

      【解决方案2】:

      根据:Old MySQL password cracking

      使用旧密码格式创建一个 16 字节的哈希,例如:

      6f8c114b58f2ce9e

      对于相同的密码,MySQL4.1 哈希是 41 字节长:

      *6C8989366EAF75BB670AD8EA7A7FC1176A95CEF4

      从表面上看,似乎授予了这种额外的安全级别 使用新密码可能并不重要。然而,来源 代码已根据创作共用许可证发布,该许可证允许 非常快速地破解旧的 MySQL 密码。

      密码“a@4~1b”的哈希值为 2c28​​061c5bda971d。

      使用上面提到的破解程序,这个密码可以 在 2 年前的笔记本电脑上破解不到 1 秒。

      通过使用 SQL 注入攻击,用户可能 未经许可查看您的 my.cnf 文件。在搜索中输入这个 如果第二个框可以在浏览器中呈现文件的内容 选择语句中的参数显示在屏幕上,而不是 正确转义:

      某事' UNION ALL SELECT 1,(SELECT LOAD_FILE('/etc/my.cnf')),3,4,5,password FROM user ORDER BY '7

      如果未经授权的用户能够截获您的散列密码,则很容易暴力破解它们并获取纯文本密码。复杂的密码仍然很难破解,但 8 个字符的密码将花费很少的时间。

      由于 MySQL 密码哈希的长度发生了变化,因此暴力破解哈希变得更加困难。

      【讨论】:

        猜你喜欢
        • 2011-08-25
        • 1970-01-01
        • 1970-01-01
        • 2021-02-04
        • 2014-03-08
        • 2014-03-26
        • 2011-08-13
        • 2012-11-19
        • 2020-01-03
        相关资源
        最近更新 更多