Webserver

SQLi 漏洞與 SELinux

  • January 18, 2021

假設一個 SQLi 易受攻擊的 Web 應用程序在 Linux 系統上SELinux以強制模式執行。MariaDB 以非 root 使用者身份執行,例如db_user. 假設我們試圖利用 SQLi 漏洞並INTO OUTFILE嘗試在伺服器的 Web 根目錄中創建惡意 PHP 文件(假設我們現在是該位置)。AFAIK Web 伺服器應該在它自己的使用者上下文中執行,例如 www-root。SELinux 是否會阻止此惡意文件寫入 Web 根目錄,並且我能否在日誌文件中看到此嘗試?如果是的話,要去看嗎?

謝謝!

我不是 SELinux 專家(我使用 AppArmor),但通常我會說它可以防止此類攻擊,但這取決於配置。

通常,SELinux 應該將 SQL 伺服器限制為僅在它應該寫入的目錄中寫入,例如/var/lib/mysql/var/log/mysql. 在這些地方,不安全的應用程序在訪問此類文件和目錄之前無處可去(應該由 Unix 權限或 SELinux 停止)。

任何違反此類規則的嘗試都將記錄在auditd日誌文件中,位置因發行版而異

但是,這有一些警告:

  • INTO OUTFILE這在很大程度上限制了您在應用中的使用
  • 如果攻擊者擁有對 SQL 注入的訪問權限以至於他可以創建一個 outfile,他們可能還可以以不同的方式獲取數據,例如製作不同的選擇並從應用程序中抓取數據。它需要更多的工作,但可以合理地自動化

所以是的,如果配置得當,它可以防止這種攻擊,但它一般不能防止 SQL 注入攻擊,只有那些依賴於INTO OUTFILE

引用自:https://unix.stackexchange.com/questions/629658