Webserver
SQLi 漏洞與 SELinux
假設一個 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