文件读取下载
概述
一些網站由于業務需求,往往需要提供文件查看或文件下載功能,但若對用戶查看或下載的文件不做限制,則惡意用戶就能夠查看或下載任意敏感文件,這就是文件查看與下載漏洞
漏洞產生原因
- 存在讀取下載文件的函數
- 存在文件輸出和下載功能
- 讀取下載文件的路徑用戶可控,且未校驗或校驗不嚴
文件讀取函數 readfile()、file_get_contents()、fopen()
漏洞危害
- 下載常規的配置文件,服務器及系統配置文件。例如: ssh,weblogic,ftp,mysql等相關配置
- 下載各種.log文件,從中尋找一些后臺地址,文件上傳點之類的地方,如果運氣好的話會獲得一些前輩們的后門。
- 下載web業務文件進行白盒審計,利用漏洞進一步攻入服務器。
漏洞挖掘
- 通過web漏洞掃描工具對網站實施掃描可能發現任意文件讀取/下載漏洞,發送一系列”…/”字符來遍歷高層目錄,并且嘗試找到系統的配置文件或者系統中存在的敏感文件。
- 也可通過判斷網站語言,并根據其url中部分提供的參數,進行構造相關的路徑信息,如收集到網站中間件版本為apache,則想辦法構造…/…/…/ WEB-INF/web.xml等,然后查看其是否可被讀取或者下載出來。
- 有些WAF會過濾…/,可以構造 /.%252e/.%252e/.%252e/?, %25對應的是%,%2e對應的是.,所以 .%252e/ 對應的是 …/
漏洞防御
- 過濾“.(點)”,使用戶在url中不能回溯上級目錄
- 正則嚴格判斷用戶輸入參數的格式
- 配置限定文件訪問范圍,目錄權限設置或單獨文件權限設置
- 將下載區獨立出來,放在項目路徑外,給每個下載資源固定的URL,而不是所有的下載資源都是統一的URL:http://www.test.com/download?filename=文件名
- 凈化數據:對用戶傳過來的文件名參數進行硬編碼或統一編碼,對文件類型進行白名單控制,對包含惡意字符或者空字符的參數進行拒絕。
- 用戶下載文件之前需要進行權限判斷。
- 文件放在web無法直接訪問的目錄下。
- 不允許提供目錄遍歷服務。
常見敏感文件信息
Windows
C:\boot.ini //查看系統版本
C:\Windows\System32\inetsrv\MetaBase.xml //IIS配置文件
C:\Windows\repair\sam //存儲系統初次安裝的密碼
C:\Program Files\mysql\my.ini //Mysql配置
C:\Program Files\mysql\data\mysql\user.MYD //Mysql root
C:\Windows\php.ini //php配置信息
C:\Windows\my.ini //Mysql配置信息
C:\Windows\win.ini //Windows系統的一個基本系統配置文件
Linux
/root/.ssh/authorized_keys //如需登錄到遠程主機,需要到.ssh目錄下,新建authorized_keys文件,并將id_rsa.pub內容復制進去
/root/.ssh/id_rsa //ssh私鑰,ssh公鑰是id_rsa.pub
/root/.ssh/id_ras.keystore //記錄每個訪問計算機用戶的公鑰
/root/.ssh/known_hosts //記錄每個訪問計算機用戶的公鑰
/etc/passwd //賬戶信息
/etc/shadow //賬戶密碼文件
/etc/my.cnf //mysql配置文件
/root/.bash_history //用戶歷史命令記錄文件
/root/.mysql_history //mysql歷史命令記錄文件
/var/lib/mlocate/mlocate.db //全文件路徑
參考# [目錄瀏覽(目錄遍歷)漏洞和任意文件讀取/下載漏洞]
# 淺析文件讀取與下載漏洞
總結
- 上一篇: 尾插法建立单链表,并输出链表
- 下一篇: 关于usecase新建与构造配置