代码之家  ›  专栏  ›  技术社区  ›  Polar

如果有人在服务器上有物理访问权限,是否可以获取数据库的当前密码?

  •  0
  • Polar  · 技术社区  · 7 年前

    我有一个基于web的系统,我在上面使用xampp,我的数据库有一个密码,我通过phpmyadmin访问它。

    我有一些人在运行web base系统的同一台机器上工作,我们使用这个系统执行特定的任务。

    我担心的一件事是他们是否能得到或找到数据库的密码(这些不包括重写或重置密码)。

    因为它们是物理访问服务器的,所以可以获取或解密当前密码吗?如果是,可能的方法是什么?

    我想知道这一点,我想提高系统的安全性的基础上,他们可以做的方法。

    3 回复  |  直到 7 年前
        1
  •  0
  •   Isaac Bennetch    7 年前

    这里有几层安全措施。

    我相信对你的问题的正确答案是“不,这不是风险”,但一个彻底的答案将解决所有可能的接触方式。

    系统帐户

    您的操作系统有用户帐户。这就是您、其他用户和各种系统服务(例如mysql服务器本身)对操作系统进行身份验证的方式。最好不要共享用户帐户。这些密码存储在服务器上的一个盐析和散列格式中,不可恢复或可逆(至少在本讨论中是这样)。这个信息基本上没有被机器上的其他用户泄露的危险。

    MySQL用户帐户

    mysql有单独的用户帐户。这些是mysql用户向数据库服务器进行身份验证的方式,通常不应在用户、应用程序或服务之间共享。与系统帐户一样,这些密码以散列形式存储,这使其相对安全,因此其他用户查看散列密码时也不会有什么危险。

    应用程序密码

    这是困难的一个。许多应用程序在mysql的应用程序数据库中创建用户表。这可能非常简单;例如用户名和纯文本密码,也可能非常复杂和安全。像wordpress、joomla、phpbb等应用程序,以及几乎所有其他应用程序都实现了自己的应用程序级密码方法。这可能是正确的散列和安全的,也可能是纯文本。如果不知道申请的细节,我们就不能肯定地说。通过查看数据库本身的password字段,您可以得到一些提示,但这并不能立即使您清楚地看到密码是否经过盐析,或者使用弱算法进行散列。因此,这是一个可能的攻击向量,您可能应该关注它。

    另一个有趣的方面是网络嗅探;攻击者可以嗅探网络流量以确定用户的mysql密码。一个简单的解决方法是,只对连接到mysql服务器的用户实施ssl加密通信,和/或只使用套接字连接方法。

    我认为这在相对较高的层次上覆盖了所有可能的攻击向量。为了简化工作,我采取了一些自由;例如,有些旧的操作系统使用了弱化的散列方法,这意味着这些散列不具有加密安全性,任何具有访问权限的用户都可能提升其权限(例如h对服务器的物理访问可以用另一个可引导驱动器重新启动,重置根系统密码,安装他们想要的任何键盘记录器,并还原一些内容。类似的警告适用于没有物理访问权限但具有管理权限的用户。根据你的攻击媒介,这些方面可能与你有关,也可能与你无关。

        2
  •  0
  •   TheEdge    7 年前

    当然有可能……

    • 我需要做的就是打开phpmyadmin配置文件并查看数据库访问信息,因为它在那里是未加密的。基本上,任何本身未加密的配置设置都是安全问题。

    (一旦我有了数据库访问(可能是系统管理员(sa))访问权限,我就可以在给予足够时间的情况下对系统中的用户和密码进行反向工程,因为我也可以访问数据库中的salt)

    其他场景(我不知道你的确切设置)是:

    • 检查日志
    • 嗅探任何不安全的数据库访问的网络流量。比如说你不使用TLS
    • 由于我也有对机器的物理访问权限,我还可以破解操作系统用户和密码,甚至可以添加一个供以后使用

    简而言之,当人们能够访问物理机器时,你的攻击面会呈指数级上升。

        3
  •  0
  •   Narbeh    7 年前

    如果您担心系统(OS)密码,它们都是用salt方法散列的。在这里读满了需要很长时间才能解密。 https://en.wikipedia.org/wiki/Salt_(cryptography)

    但如果它与phpmyadmin有关,那就完全与如何存储用户密码有关。您可能需要存储密码的散列,尽管phpmyadmin管理员可以重写自己的散列并访问用户的数据。