SQLi 漏洞与 SELinux

SQLi 漏洞与 SELinux

假设一个 SQLi 易受攻击的 Web 应用程序在 Linux 系统上SELinux以强制模式运行。 MariaDB 以非 root 用户身份运行,例如db_user。假设我们试图利用 SQLi 漏洞并使用INTO OUTFILE我们尝试在服务器的 Web 根目录(假设我们现在是该位置)中创建恶意 PHP 文件。 AFAIK Web 服务器应该在它自己的用户上下文中运行,例如 www-root。 SELinux 会阻止此恶意文件写入 Web 根目录吗?我是否能够在日志文件中看到此尝试?如果是的话,要去看吗?

谢谢你!

答案1

我不是 SELinux 专家(我使用 AppArmor),但一般来说我会这么说防止此类攻击,但这取决于配置。

一般来说,SELinux 应该限制 SQL Server 只在它应该写入的目录中写入,例如/var/lib/mysql/var/log/mysql。在这些地方,不安全的应用程序在访问此类文件和目录之前无处可去(并且应该通过 Unix 权限或 SELinux 停止)。

任何违反此类规则的尝试都将记录在auditd日志文件中,位置因发行版而异

然而,这有一些警告:

  • INTO OUTFILE这在很大程度上限制了您在应用程序中的使用
  • 如果攻击者能够访问 SQL 注入并创建输出文件,他们也可能以不同的方式获取数据,例如制作不同的选择并从应用程序中抓取数据。它需要更多的工作,但可以相当自动化

所以,是的,如果配置正确,它可以防止此类攻击,但它通常不能防止 SQL 注入攻击,只能防止那些依赖于 SQL 注入攻击的攻击。INTO OUTFILE

相关内容