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