0

正如标题所述,我不明白访问数据库的权限与在底层操作系统上写入/读取文件的权限之间的关系。

在我最新的 CTF 之一中,我必须获得对数据库的访问权限,然后读取包含该标志的服务器文件。我知道这只有在受感染的用户具有文件权限的情况下才有可能,但我的问题仍然是一样的。

Sqlmap 在其特性中声明它可以做到这一点:

当数据库软件为 MySQL、PostgreSQL 或 Microsoft SQL Server 时,支持从数据库服务器底层文件系统下载和上传任何文件。

现在我的具体问题:

  • 允许此操作系统访问的核心功能/问题是什么?
  • 为什么要连接权限?
  • 其他 DBMS 是否也容易受到此攻击?这是一个普遍的问题(意味着 sqlmap 还没有为其他 dbms 提供漏洞利用)?

在我看来,权限应该被区别对待,db 用户不应该在操作系统上拥有权限,除了与 DBMS 相关的文件。

在此先感谢,我知道这个问题不仅限于一个方面,还包含各种基本主题。我也愿意做更多的研究,但也许有一个答案可以促进我的学习过程。

4

1 回答 1

1

我不确定其他人,但以下情况适用于 MySQL 和 MariaDB。

你需要一个额外的本地权限提升漏洞来访问数据库用户无权访问的任何文件。可供访问的文件路径在系统变量secure_file_priv中。无法从任何其他位置转储/加载数据。

此外,如果没有允许您执行任意命令的 UDF 插件,则无法执行命令。这样的东西存在,但不是 MySQL / MariaDB 的一部分 - 它是数据库服务器上的系统管理员 / DBA 必须自己安装的东西。没有这个,您将无法获取文件列表。

然后是操作系统级别的保护:

1) POSIX 级别权限这是常规用户/组文件系统权限。

2) 二次加固,例如 SELinux 或 AppArmor 这将阻止正在运行的进程访问与安全策略中定义的上下文或路径不匹配的路径、端口和其他资源。

简而言之,您无法通过数据库层访问/检索任意文件,除非服务器被故意(错误)配置为允许您这样做,并且需要积极努力以某种方式配置 MySQL 或 MariaDB 服务器这将使它对此保持开放。

于 2020-05-07T11:13:50.440 回答