前言
除了X-Forwarded-For偽造客戶端IP漏洞,發(fā)現(xiàn)還要修改關于目錄遍歷的漏洞,這里簡單記錄一下。
1、介紹
Nginx 目錄遍歷(Nginx Directory Traversal)是一種安全漏洞,通常會影響 Nginx 服務器上的 Web 應用程序。該漏洞允許攻擊者通過利用應用程序代碼中的錯誤配置或代碼漏洞,來訪問系統(tǒng)中未經(jīng)授權(quán)的文件和目錄。
簡單來說,當 Nginx 服務器上的 Web 應用程序允許用戶通過 URL 訪問目錄和文件,同時將 URL 中的目錄和文件名稱注入到服務器端的響應中時,就可能存在目錄遍歷漏洞。攻擊者可以通過注入特殊的字符序列來繞過應用程序的訪問控制,以訪問敏感文件或目錄。
2、問題分析介紹
網(wǎng)上有很多描述的示例,可以看Nginx漏洞修復之目錄穿越(目錄遍歷)漏洞復現(xiàn)及修復
注意: 該漏洞主要出現(xiàn)在alias訪問靜態(tài)資源文件的時候。
例如,Nginx配置如下:
location /static {
alias /static/images/;
}
一個 web 應用程序允許用戶通過 URL 訪問靜態(tài)文件,如下:
http://www.example.com/static/images/picture.jpg
如果攻擊者能夠使用目錄遍歷漏洞來訪問應用程序中未授權(quán)的目錄和文件,那么他們可能通過以下 URL 訪問靜態(tài)文件:
http://www.example.com/static../../../../etc/passwd
上述 URL 的作用是向上遍歷至根目錄,然后訪問 /etc/passwd
文件,從而訪問到包含用戶憑據(jù)等敏感信息的文件。
注意:/static../
表示/static/images/..
,因為/static
被alias替換成了/static/images/
。
3、解決
根據(jù)上面問題說明,我們可以直觀的明白問題,主要原因是攻擊者可以通過加入..
得到/static../
,使得實際請求地址變?yōu)?code>/static/images/..然后進行非法訪問。
修改也很簡單,只需要在location的URI末尾加上/
就可以,如下:
location /static/ {
alias /static/images/;
}
查了些資料,感覺都挺有道理的解釋,如下:
3.1 解釋:為什么加入/可以解決?
原本問題出現(xiàn)在/static
后面沒有結(jié)束限制,前面只要匹配上就會被alias替換成相應的URI,然后后面接入的..
就會形成新的路徑被攻擊。
現(xiàn)在加上/
來解決,是因為/
表示必須是目錄,因此在該location中,只會響應/static/
及其子目錄的請求,而無法獲取到網(wǎng)站目錄之外的文件。
此外,加上/
后,URI需要/static/
才能被alias替換,無法在里面加入..
形成/static../
來訪問。
3.2 解釋2:什么是目錄,什么是文件
以/
結(jié)尾表示資源是一個目錄,而不是文件。當在Nginx配置location時,如果使用了以斜杠結(jié)尾的URI,則Nginx會將其視為目錄而不是文件,從而決定以何種方式呈現(xiàn)給客戶端。
在Unix/Linux操作系統(tǒng)中,一個文件可以是文本文件、二進制文件、圖片、音頻等各種類型,而一個目錄則是用來存放文件及其他目錄的。類似于Windows操作系統(tǒng)中的文件夾,一個目錄可以包含多個文件或其他目錄,即使目錄為空,也會占用一定的磁盤空間,顯示為一個文件夾的圖標。
在Nginx中,一個URI可以表示一個文件,也可以表示一個目錄。如果一個URI以斜杠結(jié)尾,Nginx會認為它是一個目錄而不是文件。此時就可以通過訪問該URI下的Index文件來展示目錄的內(nèi)容了。例如,如果瀏覽器訪問
http://example.com/files/
,則Nginx會自動在該URI下查找名為index.html
、index.htm
、index.php
等文件,并將其展示出來。文章來源:http://www.zghlxwxcb.cn/news/detail-649374.html
4、補充
關于Nginx配置中對于location末尾的“/“的處理文章來源地址http://www.zghlxwxcb.cn/news/detail-649374.html
到了這里,關于【Nginx】nginx目錄遍歷漏洞的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!