旧的 postgres DB,在 IIS 后面提供 Confluence wiki。有时数据库中的所有表都会被删除

问题描述 投票:0回答:1

我们有一个旧的 Postgres DB,在 IIS 后面提供 Confluence wiki。有时,DB 中的所有表都会被删除。

有人可以给我一些线索来帮助我理解这个问题吗? 似乎这可能是一个安全问题。

我在 IIS 日志中没有发现任何内容(确实预料到了注入攻击)。 在 Windows 事件列表中没有发现什么特别的(应用程序 + 安全性)

唯一清晰的一点 - 在 postgres 数据库日志中我们看到该操作已执行(之前,还可以看到获取所有可用表的调用)。

除 Windows Server 2022 外,所有软件都有大约 10 年的历史。

postgresql security iis confluence server-side-attacks
1个回答
0
投票

更改所有密码后...

假设您的 Web 软件使用库或 ORM 进行数据库查询,您就有一个地方可以拦截所有查询。因此,您需要在其中放置一些代码来检测该黑客所做的查询,当检测到这些查询时,首先不要执行查询,然后记录您可以记录的所有内容。您还应该配置 IIS 以获得更好的日志记录。然后也许您可以使用该信息来查找代码中的漏洞并对其进行修补。

如果您的代码在随机位置喷洒了“pg_query(...)”,那么您可能在某处进行了 SQL 注入,因为“手动”引用参数会导致错误。

也就是说,这可能不是 SQL 注入,也可能是远程代码执行、远程 shell 等。

如果您使用任何过时的网络应用程序(php 论坛或其他),则需要对其进行修补和更新。

假设您的 IIS 服务器使用数据库用户“webuser”连接到数据库。

创建一个新的数据库用户,例如“user2”,他将拥有所有权限。这个想法是尽可能地限制网络用户。目标是防止不好的事情发生,同时提出错误,以便您可以跟踪它并修补漏洞。这些不是永久修复,而是获取更多信息的方法。

首先,如果您的应用不需要列出表或对 information_schema 执行任何操作,只需撤销其和 系统表 的所有权限,这样 Web 用户就无法列出表。

Webuser 可能是表的所有者,这意味着它可以对表执行任何操作,包括 DROP。为了防止这种情况,您可以将所有表的所有权授予 user2,并撤销 webuser 对所有内容(数据库、表等)的所有权。然后有选择地仅向网络用户授予所需的权限(即选择、更新、删除)。

© www.soinside.com 2019 - 2024. All rights reserved.