本次分享的是web安全漏洞中的任意文件下載,前段時(shí)間比較忙,今天抽空寫了個(gè)簡(jiǎn)單的下載功能,代碼運(yùn)行的時(shí)候有點(diǎn)問題,但是不影響下載程序運(yùn)行,我也就懶得改了,多多包含哈。
任意文件下載漏洞描述
一些網(wǎng)站由于業(yè)務(wù)需求,可能提供文件查看或下載的功能,如果對(duì)用戶查看或下載的文件不做限制,則惡意用戶就能夠查看或下載任意的文件,可以是源代碼文件、敏感文件等,就會(huì)造成任意文件下載漏洞。
任意文件下載漏洞的表現(xiàn)形式
任意文件下載總結(jié)來說,有以下三種表現(xiàn)形式:
1、存在文件下載功能
網(wǎng)站文件下載功能形式多種多樣,頁面功能大致如下:
Url表現(xiàn)形式如下:
如果單從參數(shù)命看,表現(xiàn)形式多種多樣,當(dāng)滲透時(shí)遇到以下類型可以稍加注意:
&filepath=
&relpath=
&path=
&url=
&name=
&filename=
&src=
&dir=
&data=
......
2、文件名參數(shù)可控,并且系統(tǒng)未對(duì)參數(shù)作過濾或者過濾不全
文件名參數(shù)就是要下載的文件名,可以用brupsuite抓包看見,表現(xiàn)形式多種多樣,大概如下:
在代碼中的表現(xiàn)形式如下,此處文件路徑和文件名都是從前端獲取,然后執(zhí)行下載操作:
3.文件內(nèi)容輸出或者保存在本地
當(dāng)文件內(nèi)容可被下載任意看見,就會(huì)造成任意文件讀取漏洞,不在此處討論,當(dāng)文件保存后,能被攻擊者看見內(nèi)容,就會(huì)造成任意文件下載漏洞,表現(xiàn)形式如下:
下載功能代碼如下:
任意文件下載漏洞驗(yàn)證
此處代碼存在任意文件下載漏洞,表現(xiàn)形式如下:
當(dāng)文件正常下載時(shí),brupsuite截圖如下:
此處替換文件名為“WEB-INF/web.xml”,下載系統(tǒng)配置文件:
可以看到此時(shí)下載文件失敗,返回不一樣的結(jié)果。
但是可以添加“../”跳轉(zhuǎn)目錄:
可以看出上面返回web.xml問內(nèi)容,表示下載成功(若返回下載失敗,可以繼續(xù)添加“../”,直到下載成功,若依舊不成功,可能文件不存在或者無漏洞,自己多試試)。
也可以輸入很多“../”,直接回溯到根目錄,下載可能存在的系統(tǒng)文件:
部分敏感文件如下:
Linux:
/root/.ssh/authorized_keys
/root/.ssh/id_rsa
/root/.ssh/id_ras.keystore
/root/.ssh/known_hosts
/etc/httpd/conf/httpd.conf
/root/.bash_history
/root/.mysql_history
/proc/self/fd/fd[0-9]*(文件標(biāo)識(shí)符)
/proc/mounts
/porc/config.gz
/etc/passwd
/etc/shadow
/etc/my.cnf
Windows:
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:\boot.ini //查看系統(tǒng)版本
C:\Windows\System32\inetsrv\MetaBase.xml //IIS配置文件
C:\Windows\repair\sam //存儲(chǔ)系統(tǒng)初次安裝的密碼
...
任意文件下載漏洞的修復(fù)
漏洞修復(fù)可以根據(jù)自身業(yè)務(wù)需要修改,大致修復(fù)方法如下:
1、對(duì)文件下載進(jìn)行過濾,過濾掉“./”、“../”、“%”等,代碼如下:
當(dāng)輸入“../”時(shí):
但是可以構(gòu)造完整路徑,下載任意文件:
2、對(duì)下載的文件路徑進(jìn)行嚴(yán)格控制,只允許下載某部分目錄下的文件:
2、對(duì)下載文件后綴名做嚴(yán)格控制
結(jié)語:
今天就寫這么多吧,希望對(duì)大家有幫助,有什么錯(cuò)誤歡迎指出!有什么問題歡迎加本人微博,共同討論,共同學(xué)習(xí)!