【问题标题】:MySQL Accept Any PasswordMySQL 接受任何密码
【发布时间】:2010-06-02 15:00:39
【问题描述】:

假设我有一个包含大量测试帐户的测试服务器。测试帐户有未知密码,这些密码被硬编码到应用程序的报告中,并加密存储在 mysql.users 表中。

是否有任何选项或技巧可用于使 mysql 接受任何文本作为帐户的“正确”密码?例如:

Update mysql.user Set Password="*" where 1=1

注意:上面的行不起作用,因为它将密码设置为“*”而不是通配符。但是,我正在寻找一种方法来创建一个可以接受任何有效密码的 mysql 帐户。这台机器断网了,我可以完全访问mysql数据库...

【问题讨论】:

    标签: mysql passwords


    【解决方案1】:

    不是真的。

    你可以做什么:

    • change the password 到一个新的 (SET PASSWORD FOR Piskvor='hunter2'; FLUSH PRIVILEGES;)
    • restart the MySQL server--skip-grant-tables 选项。这将允许任何连接的任何密码访问任何数据库。 警告:这是一个主要的安全漏洞 - 任何用户都可以修改 mysql 数据库,包括使用此选项运行服务器时的用户和密码。

    (如果您拥有对数据库的完全访问权限,但不会更改现有密码和/或无法修改服务器进程选项,我会怀疑发生了什么可疑的事情)

    【讨论】:

      【解决方案2】:

      我不认为有这样的黑客。但是,如果密码在某处被硬编码,则应该很容易提取它们并生成脚本。当然,除非存储密码的格式不可读。

      【讨论】:

      • 硬编码密码存储在用于保存报告的二进制格式中(想想像 Word 2003 这样的二进制非 XML 格式但专有)
      【解决方案3】:

      很老的问题。但是今天我发现可以在启动mysql服务时使用--skip-grant-tables选项来完成。

      https://dev.mysql.com/doc/refman/5.7/en/server-options.html#option_mysqld_skip-grant-tables

      --skip-grant-tables 导致服务器不读取mysql系统数据库中的授权表,因此启动时不使用 特权系统。这使任何人都可以访问服务器 不受限制地访问所有数据库。

      【讨论】:

        猜你喜欢
        • 2014-01-30
        • 2019-03-19
        • 1970-01-01
        • 2017-06-25
        • 1970-01-01
        • 2017-03-02
        • 2017-03-31
        • 1970-01-01
        相关资源
        最近更新 更多