被盗的MySql数据库,不是注入

时间:2012-08-07 21:13:18

标签: mysql database security

三周前,我找到了一个关于我的网站用户的列表以及关于粘贴垃圾箱的信息。我运行更新并防止SQL注入。我还添加了一个预先请求,以便在LOG表中以文本格式保存SQL,只要我的保护不够,就需要用户输入来分析任何注入。

然后今天同样的帖子再次使用最近的条目在Paste Bin上,所以我检查了LOG表以找到干净的条目。除了我应该担心的注射还有什么吗?网络似乎只提供有关注射的信息!

他们是否可以访问服务器上的php文件中的dbpassword,是否可以从外部服务器连接?

我应该经常更改dbpassword吗?

是否存在任何非脚本明智的解决方案,例如托管安全计划或类似的应该足够有效的解决方案?

我正在接受被黑客用户的物理威胁,并希望快速关闭它......

7 个答案:

答案 0 :(得分:6)

如果您正在实施自己的用户输入保护,那么您可能做错了。大多数标准数据库库都会为您提供一种方法,可以将参数传递给将要正确清理的查询,并且这些数据库的编码时间比您可能知道的要多。在与安全相关的任何事情上重新发明轮子是一个坏主意!

其他需要担心的事情:

  • 密码政策(强密码)
  • 访问您的数据库服务器(是防火墙吗?)
  • SSH访问您的服务器(再次,防火墙?)
  • 让您的所有软件保持最新状态

答案 1 :(得分:4)

只是添加到目前为止您已经拥有的其他答案。如果有人在线发布数据库的内容,那么您需要假设运行应用程序和数据库的服务器已经受到损害,因为一旦他们获得初始访问权限,他们可能会放置根工具包或类似的工具到服务器上以保持对它的访问。

至于他们如何进入这里有很多潜在的选择,这取决于你的解决方案的体系结构,并且如果没有更多细节就说明情况是不可能的。一些更可能的选项选项是

  • SSH密码
  • 具有常见密码或漏洞的管理网络应用程序(例如PHPMyAdmin)
  • 通过托管服务访问(例如,管理登录面板上的弱密码)
  • 如果该站点是基于PHP的远程文件包含问题是一种明显的可能性

如果可以,我建议您聘请取证或事件响应公司来帮助您恢复数据并重建,但如果不这样做,我建议您在妥协之前获取备份并使用它来重建服务器,然后确保在将其上线之前,所有软件都已更新和修补,密码与受感染的系统不同。

答案 2 :(得分:2)

对此的最佳保护是仅允许从运行应用程序的计算机连接到mysql数据库。

答案 3 :(得分:1)

首先,确保对MySQL数据库的网络访问“需要知道” - 在大多数情况下,这是一个简单的bind-address 127.0.0.1

接下来更改数据库密码,因为是的,你可以(C)

现在想一想:如果有人从你的PHP文件中获取了你的数据库密码,那么你已经陷入了沉重的境地:没有什么能阻止他或她重复那个噱头!您需要审核您的后门应用程序(在事实问题之后)以及这些人员如何进入(在事实问题之前)。检查您的apache日志中是否存在具有异常GET参数的请求 - 其中的文件名主要是死亡的givaway。

答案 4 :(得分:0)

我同意Razvan。此外,如果您正在运行任何CMS或预先打包的网页,请确保它们是最新版本。他们很可能从Web服务器访问localhost。黑客遵循这些更改日志,每次发布安全补丁时,他们都会攻击运行旧版本的服务器上发布的漏洞。它通常由爬虫大量执行。可能的情况是,他们有一个数据库,您的服务器列为运行旧版本的东西。

答案 5 :(得分:0)

首先,您需要确保包含数据库密码的“php文件”不在Web根目录中,否则他们可以像以下一样访问它:http://mydomain.com/dbpassword.php

其次,立即更改用于访问数据库的密码。

第三,确保mysql只接受来自'localhost'的连接,而不允许来自任何地方的连接; '%'。如果它是一个专用服务器,那么你应该“强化”该框并向IPTables添加IP规则,其中只允许从服务器的IP访问mysql。这些更改将确保如果他们确实获得了您的db用户名/密码信用,他们无法从远程计算机访问数据库,而是他们必须利用您的应用程序,或ssh到您的服务器以获取对您的数据库的访问权。

接下来,您应该禁用所有用户帐户到您的站点,并强制他们使用闭环验证过程更新其密码。这样可以确保您的用户或其帐户不会发生持续的恶意活动。

这些只是采取的几个步骤,还有其他一些如跟踪本地用户登录活动。系统的某个用户帐户可能已被入侵(已植根)。关键是,你需要考虑你的系统和服务的所有访问点,如果你不能这样做,可能是时候聘请或聘请经验丰富的系统管理员来帮助你了。

答案 6 :(得分:0)

如果这是共享的Web托管,并且另一个用户使用shell访问登录并且能够猜测您的Web根目录的路径,并且密码配置(PHP或其他脚本)文件是世界可读的,那么用户可以读它。

这是最常见的漏洞之一,很容易被利用。

如果是这种情况:

要解决此问题,您需要将配置文件移出Web根文件夹和/或更改其权限,使其不具有全局可读性,然后更改数据库密码。

最有可能的是,用户无法在您的应用程序中注入任何内容。

更改数据库服务器以使其只能在本地或您的Web服务器上访问将不会有任何好处,因为恶意用户将位于同一Web服务器上并仍然可以访问它。

如果您没有看到任何恶意查询,那么他们可能是通过MySQL命令行(或PHPMyAdmin或其他工具)访问您的数据库,而不是通过您的应用程序访问。

启用general query log将允许您在日志中以纯文本格式查看所有查询,但如果这是托管的共享Web(和MySQL服务器),您可能无法启用此功能。

您可能希望向网络托管服务商报告。他们可能能够找到攻击者并暂停其帐户或向您提供证据。