5

三周前,我在 Paste Bin 上找到了我网站的用户列表和信息,泄露了所有隐私。我运行更新并防止 SQL 注入。如果我的保护不够,我还添加了一个预先请求,以便在需要用户输入以分析任何注入时将 SQL 以文本格式保存在 LOG 表中。

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

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

我应该经常更改 dbpassword 吗?

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

我收到了来自被黑用户的人身威胁,我真的很想尽快关闭它......

4

7 回答 7

7

如果您正在实施自己的针对用户输入的保护措施,那么您可能做错了。大多数标准数据库库将为您提供一种将参数传递给查询的方法,在该查询中将对其进行正确清理,并且这些代码的编码考虑了您可能不知道的更多内容。在任何与安全相关的事情中重新发明轮子都是一个坏主意!

其他需要担心的事情:

  • 密码策略(强密码)
  • 访问您的数据库服务器(是否有防火墙?)
  • SSH 访问您的服务器(再次,防火墙?)
  • 使您的所有软件保持最新
于 2012-08-07T21:16:50.173 回答
5

只是添加到您迄今为止的其他答案。如果有人在网上发布您的数据库内容,那么您需要假设运行应用程序和数据库的服务器已被入侵,因为一旦他们获得了初始访问权限,他们很可能已经放置了 root-kits或类似的工具到服务器上以保持对它的访问。

至于他们是如何进入的,有许多潜在的选择,具体取决于您的解决方案的架构,如果没有更多细节,就不可能说是哪种情况。一些更有可能的选择是

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

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

于 2012-08-07T21:35:29.720 回答
2

对此最好的保护是只允许从运行应用程序的机器连接到 mysql 数据库。

于 2012-08-07T21:17:00.637 回答
2

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

接下来更改DB密码,正因为是,可以(C)

现在想一想:如果有人从您的 PHP 文件中获得了您的数据库密码,那么您已经陷入了困境:没有什么能阻止他或她只是重复那个特技!您需要审核您的应用程序是否存在后门(在事实问题之后)以及这些人如何进入那里(在事实问题之前)。检查您的 apache 日志以查找具有异常参数的请求GET- 那里的文件名大多是一个死的赠品。

于 2012-08-07T21:19:32.293 回答
0

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

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

如果是这种情况:

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

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

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

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

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

这是您可能希望向您的网络主机报告的事情。他们也许能够找到攻击者并暂停他们的帐户或为您提供证据。

于 2012-08-08T14:13:02.627 回答
0

我同意拉兹万的观点。此外,如果您正在运行任何 CMS 或预打包的网页,请确保它们是最新版本。他们很可能以 localhost 身份从 Web 服务器访问。黑客跟踪这些更改日志,每次发布安全补丁时,他们都会攻击运行旧版本的服务器上已发布的漏洞。它通常由爬虫批量执行。奇怪的是他们有一个数据库,你的服务器被列为运行旧版本的东西。

于 2012-08-07T21:20:08.663 回答
0

首先,您需要确保包含 DB 密码的“php 文件”不在 Web 根目录中,否则他们可以简单地访问它,例如: http: //mydomain.com/dbpassword.php

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

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

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

这些只是需要采取的几个步骤,还有其他一些步骤,例如跟踪本地用户的登录活动。您的系统的一个用户帐户可能已被盗用(root)。关键是,您需要考虑对系统和服务的所有访问点,如果您无法做到这一点,则可能是时候聘请或签约经验丰富的系统管理员来帮助您了。

于 2012-08-07T21:28:28.457 回答