解析文件上傳漏洞 從FCKEditor文件上傳漏洞談起

文件上傳漏洞就是允許用戶上傳任意文件可能會(huì)讓攻擊者注入危險(xiǎn)內(nèi)容或惡意代碼,并在服務(wù)器上運(yùn)行,下面小編就為大家具體的講解文件上傳漏洞的知識(shí),希望可以幫助到大家。
文件上傳后導(dǎo)致的常見安全問題一般有:
1)上傳文件是Web腳本語(yǔ)言,服務(wù)器的Web容器解釋并執(zhí)行了用戶上傳的腳本,導(dǎo)致代碼執(zhí)行。
2)上傳文件是Flash的策略文件crossdomain.xml,黑客用以控制Flash在該域下的行為(其他通過類似方式控制策略文件的情況類似);
3)上傳文件是病毒、木馬文件,黑客用以誘騙用戶或者管理員下載執(zhí)行。
4)上傳文件是釣魚圖片或?yàn)榘四_本的圖片,在某些版本的瀏覽器中會(huì)被作為腳本執(zhí)行,被用于釣魚和欺詐。
除此之外,還有一些不常見的利用方法,比如將上傳文件作為一個(gè)入口,溢出服務(wù)器的后臺(tái)處理程序,如圖片解析模塊;或者上傳一個(gè)合法的文本文件,其內(nèi)容包含了PHP腳本,再通過"本地文件包含漏洞(Local File Include)"執(zhí)行此腳本;等等。
要完成這個(gè)攻擊,要滿足以下幾個(gè)條件:
首先,上傳的文件能夠被Web容器解釋執(zhí)行。所以文件上傳后所在的目錄要是Web容器所覆蓋到的路徑。
其次,用戶能夠從Web上訪問這個(gè)文件。如果文件上傳了,但用戶無(wú)法通過Web訪問,或者無(wú)法得到Web容器解釋這個(gè)腳本,那么也不能稱之為漏洞。
最后,用戶上傳的文件若被安全檢查、格式化、圖片壓縮等功能改變了內(nèi)容,則也可能導(dǎo)致攻擊不成功。
一、從FCKEditor文件上傳漏洞談起
FCKEditor是一款非常流行的富文本編輯器,為了方便用戶,它帶有一個(gè)文件上傳功能,但是這個(gè)功能卻出過多次漏洞。
FCKEditor針對(duì)ASP/PHP/JSP等環(huán)境都有對(duì)應(yīng)的版本,以PHP為例,其文件上傳功能在:
配合解析漏洞。
(一)IIS5.x-6.x解析漏洞
使用iis5.x-6.x版本的服務(wù)器,大多為windows server 2003,網(wǎng)站比較古老,開發(fā)語(yǔ)句一般為asp;該解析漏洞也只能解析asp文件,而不能解析aspx文件。
目錄解析(6.0)
形式:www.xxx.com/xx.asp/xx.jpg
原理: 服務(wù)器默認(rèn)會(huì)把.asp,.asp目錄下的文件都解析成asp文件。
文件解析
形式:www.xxx.com/xx.asp;.jpg
原理:服務(wù)器默認(rèn)不解析;號(hào)后面的內(nèi)容,因此xx.asp;.jpg便被解析成asp文件了。
解析文件類型
IIS6.0 默認(rèn)的可執(zhí)行文件除了asp還包含這三種 :
/test.asa
/test.cer
/test.cdx
(二)apache解析漏洞
漏洞原理
Apache 解析文件的規(guī)則是從右到左開始判斷解析,如果后綴名為不可識(shí)別文件解析,就再往左判斷。比如test.php.qwe.asd “.qwe”和”.asd” 這兩種后綴是apache不可識(shí)別解析,apache就會(huì)把wooyun.php.qwe.asd解析成php。
漏洞形式
www.xxxx.xxx.com/test.php.php123
其余配置問題導(dǎo)致漏洞
(1)如果在 Apache 的 conf 里有這樣一行配置 AddHandler php5-script .php 這時(shí)只要文件名里包含.php 即使文件名是 test2.php.jpg 也會(huì)以 php 來執(zhí)行。
(2)如果在 Apache 的 conf 里有這樣一行配置 AddType application/x-httpd-php .jpg 即使擴(kuò)展名是 jpg,一樣能以php 方式執(zhí)行。
修復(fù)方案
1.apache配置文件,禁止.php.這樣的文件執(zhí)行,配置文件里面加入
2.用偽靜態(tài)能解決這個(gè)問題,重寫類似.php.*這類文件,打開apache的httpd.conf找到LoadModule rewrite_module modules/mod_rewrite.so
把#號(hào)去掉,重啟apache,在網(wǎng)站根目錄下建立.htaccess文件
(三)nginx解析漏洞
漏洞原理
Nginx默認(rèn)是以CGI的方式支持PHP解析的,普遍的做法是在Nginx配置文件中通過正則匹配設(shè)置SCRIPT_FILENAME。當(dāng)訪問www.xx.com/phpinfo.jpg/1.php這個(gè)URL時(shí),$fastcgi_script_name會(huì)被設(shè)置為“phpinfo.jpg/1.php”,然后構(gòu)造成SCRIPT_FILENAME傳遞給PHP CGI,但是PHP為什么會(huì)接受這樣的參數(shù),并將phpinfo.jpg作為PHP文件解析呢?這就要說到fix_pathinfo這個(gè)選項(xiàng)了。 如果開啟了這個(gè)選項(xiàng),那么就會(huì)觸發(fā)在PHP中的如下邏輯:
PHP會(huì)認(rèn)為SCRIPT_FILENAME是phpinfo.jpg,而1.php是PATH_INFO,所以就會(huì)將phpinfo.jpg作為PHP文件來解析了
漏洞形式
www.xxxx.com/UploadFiles/image/1.jpg/1.php
www.xxxx.com/UploadFiles/image/1.jpg%00.php
www.xxxx.com/UploadFiles/image/1.jpg/%20\0.php
另外一種手法:上傳一個(gè)名字為test.jpg,然后訪問test.jpg/.php,在這個(gè)目錄下就會(huì)生成一句話木馬shell.php。
(四)IIS7.5解析漏洞
IIS7.5的漏洞與nginx的類似,都是由于php配置文件中,開啟了cgi.fix_pathinfo,而這并不是nginx或者iis7.5本身的漏洞。
5.配合操作系統(tǒng)文件命令規(guī)則
(1)上傳不符合windows文件命名規(guī)則的文件名
test.asp.
test.asp(空格)
test.php:1.jpg
test.php:: $DATA
會(huì)被windows系統(tǒng)自動(dòng)去掉不符合規(guī)則符號(hào)后面的內(nèi)容。
如圖訪問ip/Netsys/HtmlEdit/fckeditor/editor/filemanager/connectors/test.html
點(diǎn)擊Create Folder新建文件夾
用brup suite進(jìn)行改包,將%2F改為a.asp。
點(diǎn)擊Get Folders獲得文件夾。
上傳文件,我這里上傳了一句話圖片木馬,然后能看到上傳的路徑,訪問的是1.asp/FI201610191827336199.jpg,會(huì)被當(dāng)作asp執(zhí)行,用菜刀連接getshell。
二、繞過文件上傳檢查功能
一般都是通過文件名后綴檢查。但是在某些時(shí)候,攻擊者手動(dòng)修改了上傳過程中的POST包,在文件名后添加一個(gè)%00字節(jié)額,則可以截?cái)嗄承┖瘮?shù)對(duì)文件名的判斷。因?yàn)樵谠S多語(yǔ)言的函數(shù)中,比如在C、PHP等語(yǔ)言的常用字符串處理函數(shù)中,0x00被認(rèn)為是終止符。受此影響的環(huán)境有Web應(yīng)用和一些服務(wù)器。比如應(yīng)用原本只允許上傳JPG圖片,那么可以構(gòu)造文件名為xxx.php[\0].JPG,其中[\0]為十六進(jìn)制的0x00字符,.JPG繞過了應(yīng)用的上傳文件類型判斷;但對(duì)于服務(wù)器來說,此文件因?yàn)?x00字符截?cái)嗟年P(guān)系,最終卻變成了xxx.php。
1.客戶端校驗(yàn)
一般都是在網(wǎng)頁(yè)上寫一段javascript腳本,校驗(yàn)上傳文件的后綴名,有白名單形式也有黑名單形式。
判斷方式:在瀏覽加載文件,但還未點(diǎn)擊上傳按鈕時(shí)便彈出對(duì)話框,內(nèi)容如:只允許上傳.jpg/.jpeg/.jpg?www.dbjr.com.cn后綴名的文件,而此時(shí)并沒有發(fā)送數(shù)據(jù)包。
相關(guān)文章
- 偶爾在網(wǎng)上看到這些,拿來和大家一塊看看,也好讓各個(gè)站長(zhǎng)懂得保護(hù)自己的網(wǎng)站2012-10-16
- 安全狗是一款大家熟悉的服務(wù)器安全加固產(chǎn)品,據(jù)稱已經(jīng)擁有50W的用戶量。最近經(jīng)過一些研究,發(fā)現(xiàn)安全狗的一些防護(hù)功能,例如SQL注入、文件上傳、防webshell等都可以被繞過2014-07-17
中國(guó)移動(dòng)mas2.0平臺(tái)系統(tǒng)漏洞暴光 附修復(fù)方法
MAS是中國(guó)移動(dòng)的短信代理網(wǎng)關(guān)(平臺(tái))。MAS是Mobile Agent Server的簡(jiǎn)稱。目前多個(gè)政府部門、國(guó)有大型企業(yè)部門、運(yùn)營(yíng)商、金融部門都采用該平臺(tái)。MAS2.0是中國(guó)新一代的代理2012-05-11查找Centos Linux服務(wù)器上入侵者的WebShell后門
服務(wù)器被掛馬或被黑的朋友應(yīng)該知道,黑客入侵web服務(wù)器的第一目標(biāo)是往服務(wù)器上上傳一個(gè)webshell,有了webshell黑客就可以干更多的事 情2012-07-10- PHP網(wǎng)頁(yè)的安全性問題,針對(duì)PHP的網(wǎng)站主要存在下面幾種攻擊方式2011-03-11
- 我們的服務(wù)器又出入侵事故了。有客戶的html 網(wǎng)頁(yè)底部被插入了一段js 腳本, 導(dǎo)致訪客打開網(wǎng)頁(yè)時(shí)被殺毒軟件警告網(wǎng)站上有惡意代碼2012-07-10
- 漏洞說明: php是一款被廣泛使用的編程語(yǔ)言,可以被嵌套在html里用做web程序開發(fā)。phpinfo()是用來顯示當(dāng)前php環(huán)境的一個(gè)函數(shù),許多站點(diǎn)和程序都會(huì)將phpinfo放在自己2008-10-08
最新win2003 II6解析漏洞實(shí)戰(zhàn)及應(yīng)用
新 win2003 IIS6 解析漏洞,大家可以參考下,注意防范。2009-11-23服務(wù)器上網(wǎng)站被掛Iframe木馬的解決方法
今天訪問公司的一個(gè)網(wǎng)站,突然發(fā)現(xiàn)網(wǎng)頁(yè)顯示不對(duì),右鍵查看HTML代碼,發(fā)現(xiàn)iframe了一個(gè)網(wǎng)站的js文件,不用說,肯定被掛馬了2014-07-31- 本文介紹了使用CSRF漏洞攻擊D-link路由器全過程,主要目的是如何通過CSRF漏洞實(shí)現(xiàn)遠(yuǎn)程管理訪問D-link路由器,需要的朋友可以參考下2014-04-25