Nginx 配置漏洞,別名阻止設置不正確

一些裝有 nginx 的服務器仍然容易受到 Nginx 別名遍歷技術的影響,該技術是在 2018 年的 Blackhat 會議上提出的,允許訪問位於“alias”指令中指定的根目錄之外的文件和目錄。 該問題僅出現在“location”塊內放置“alias”指令的配置中,該指令的參數不以“/”字符結尾,而“alias”以“/”結尾。

Nginx 配置漏洞,別名阻止設置不正確

問題的本質是,帶有別名指令的塊的文件是通過附加請求的路徑來給出的,在將其與位置指令中的掩碼進行匹配並剪切掉該掩碼中指定的路徑部分之後。 對於上面顯示的易受攻擊配置的示例,攻擊者可以請求文件“/img../test.txt”,並且該請求將與位置“/img”中指定的掩碼匹配,之後剩餘的尾部“../ test.txt”將附加到別名指令“/var/images/”的路徑,因此將請求文件“/var/images/../test.txt”。 這樣,攻擊者就可以訪問“/var”目錄下的任何文件,而不僅僅是“/var/images/”中的文件,例如要下載nginx日誌,可以發送請求“/img../log/” nginx/access.log”。

在別名指令的值不以“/”字符結尾的配置中(例如“alias /var/images;”),攻擊者無法更改到父目錄,但可以請求 /var 中的另一個目錄其名稱以配置中指定的開頭。 例如,通過請求“/img.old/test.txt”,您可以訪問目錄“var/images.old/test.txt”。

對GitHub上的存儲庫進行分析表明,在實際項目中仍然會發現導致該問題的nginx配置錯誤。 例如,在 Bitwarden 密碼管理器後端發現存在問題,可用於訪問 /etc/bitwarden 目錄中的所有文件(對 /attachments 的請求是從 /etc/bitwarden/attachments/ 發出的),包括存儲在那裡的數據庫,密碼為“vault.db”、證書和日誌,為此發送請求“/attachments../vault.db”、“/attachments../identity.pfx”、“/attachments 就足夠了” ../logs/api.log”等..P.

Nginx 配置漏洞,別名阻止設置不正確
Nginx 配置漏洞,別名阻止設置不正確

該方法還適用於 Google HPC Toolkit,其中 /static 請求被重定向到“../hpc-toolkit/community/front-end/website/static/”目錄。 要獲取具有私鑰和憑據的數據庫,攻擊者可以發送查詢“/static../.secret_key”和“/static../db.sqlite3”。

Nginx 配置漏洞,別名阻止設置不正確


來源: opennet.ru

添加評論