【问题标题】:Is it possbile to write files with MySQL via SQL injection?是否可以通过 SQL 注入使用 MySQL 写入文件?
【发布时间】:2009-10-17 01:23:48
【问题描述】:

长话短说,我们在我们的服务器上发现了一些宣传处方药的文件,但我们并没有把它们放在那里。 Windows 服务器有非常旧的应用程序并运行 MySQL 5.1.11。

除了其他安全漏洞之外,是否可以使用 SQL 注入将文件写入服务器文件系统?我确信其中一些旧应用程序容易受到 SQL 注入攻击。我不认为这是可能的,但我似乎记得在某处读过 MySQL 可以访问“命令行”并通过它写入文件,尽管我无法找到该信息的来源。话又说回来,我的大脑可能在捉弄我。

如果可以的话,有没有可以禁用的设置?

另外,我不是在寻找摆脱 SQL 注入漏洞的答案。虽然这显然需要做;我正在寻找一个快速的短期修复程序,以防止恶意文件在修复 SQL 注入漏洞时再次神奇地出现。修复所有旧应用程序需要大量时间。

谢谢。

【问题讨论】:

    标签: mysql security sql-injection


    【解决方案1】:

    这是可能的,尤其是在适当粗心的配置下。

    比如有SELECT ... INTO OUTFILE 'file_name'

    但这也更有可能是一个不同的安全问题。我会认真考虑让软件快速下线,尤其是当数据库包含任何机密或私人信息时

    【讨论】:

    • 这绝对是合格的。感谢您的信息。
    【解决方案2】:

    正如 Colin Pickard 所示,是的。

    但即使您无法更新您的应用程序,我也怀疑它是否需要当前运行的权限。您需要检查它登录到 mysql 的用户并将这些权限降至最低。特别是在这种情况下,如果您的应用程序不读取/写入存储在 mysql 服务器上的文件,则应该删除 FILE 权限。

    【讨论】:

    • MySQL 管理员是否有此 FILE 权限?还是我必须去控制台撤销它?
    • 你可以从 mysql 管理员那里执行此操作,但你必须先进入工具菜单并选择选项,然后打开“显示全局权限”和“显示模式对象权限”。
    • 谢谢。似乎未向用户授予 FILE 权限。我认为这意味着用户无法使用“INTO OUTFILE”执行选择命令。
    • 注意:文件权限不是在全局权限下授予的。我在架构或架构对象权限下没有看到 FILE 权限。
    【解决方案3】:

    将应用程序目录的权限设置为网络帐户的只读权限可能会起作用。这假设您尚未在其中创建文件,例如日志文件等。

    【讨论】:

      猜你喜欢
      • 2020-10-12
      • 1970-01-01
      • 2020-01-29
      • 2013-03-20
      • 2019-03-23
      • 2013-08-01
      • 2012-02-03
      • 2011-12-27
      • 2021-10-06
      相关资源
      最近更新 更多