解析文件上傳漏洞 從FCKEditor文件上傳漏洞談起 大部分的用戶可能不要了解文件上傳漏洞,下面小編就為大家具體的講解什么事文件上傳漏洞以及文件上傳漏洞的幾種方式
文件上傳漏洞就是允許用戶上傳任意文件可能會讓攻擊者注入危險內容或惡意代碼,并在服務器上運行,下面小編就為大家具體的講解文件上傳漏洞的知識,希望可以幫助到大家。
文件上傳后導致的常見安全問題一般有:
1)上傳文件是Web腳本語言,服務器的Web容器解釋并執行了用戶上傳的腳本,導致代碼執行。
2)上傳文件是Flash的策略文件crossdomain.xml,黑客用以控制Flash在該域下的行為(其他通過類似方式控制策略文件的情況類似);
3)上傳文件是病毒、木馬文件,黑客用以誘騙用戶或者管理員下載執行。
4)上傳文件是釣魚圖片或為包含了腳本的圖片,在某些版本的瀏覽器中會被作為腳本執行,被用于釣魚和欺詐。
除此之外,還有一些不常見的利用方法,比如將上傳文件作為一個入口,溢出服務器的后臺處理程序,如圖片解析模塊;或者上傳一個合法的文本文件,其內容包含了PHP腳本,再通過"本地文件包含漏洞(Local File Include)"執行此腳本;等等。
要完成這個攻擊,要滿足以下幾個條件:
首先,上傳的文件能夠被Web容器解釋執行。所以文件上傳后所在的目錄要是Web容器所覆蓋到的路徑。
其次,用戶能夠從Web上訪問這個文件。如果文件上傳了,但用戶無法通過Web訪問,或者無法得到Web容器解釋這個腳本,那么也不能稱之為漏洞。
最后,用戶上傳的文件若被安全檢查、格式化、圖片壓縮等功能改變了內容,則也可能導致攻擊不成功。
一、從FCKEditor文件上傳漏洞談起
FCKEditor是一款非常流行的富文本編輯器,為了方便用戶,它帶有一個文件上傳功能,但是這個功能卻出過多次漏洞。
FCKEditor針對ASP/PHP/JSP等環境都有對應的版本,以PHP為例,其文件上傳功能在:
配合解析漏洞。
(一)IIS5.x-6.x解析漏洞
使用iis5.x-6.x版本的服務器,大多為windows server 2003,網站比較古老,開發語句一般為asp;該解析漏洞也只能解析asp文件,而不能解析aspx文件。
目錄解析(6.0)
形式:www.xxx.com/xx.asp/xx.jpg
原理: 服務器默認會把。asp,。asp目錄下的文件都解析成asp文件。
文件解析
形式:www.xxx.com/xx.asp;.jpg
原理:服務器默認不解析;號后面的內容,因此xx.asp;.jpg便被解析成asp文件了。
解析文件類型
IIS6.0 默認的可執行文件除了asp還包含這三種 :
/test.asa
/test.cer
/test.cdx
(二)apache解析漏洞
漏洞原理
Apache 解析文件的規則是從右到左開始判斷解析,如果后綴名為不可識別文件解析,就再往左判斷。比如test.php.qwe.asd “。qwe”和”。asd” 這兩種后綴是apache不可識別解析,apache就會把wooyun.php.qwe.asd解析成php。
漏洞形式
www.xxxx.xxx.com/test.php.php123
其余配置問題導致漏洞
(1)如果在 Apache 的 conf 里有這樣一行配置 AddHandler php5-script .php 這時只要文件名里包含。php 即使文件名是 test2.php.jpg 也會以 php 來執行。
(2)如果在 Apache 的 conf 里有這樣一行配置 AddType application/x-httpd-php .jpg 即使擴展名是 jpg,一樣能以php 方式執行。
修復方案
1.apache配置文件,禁止。php.這樣的文件執行,配置文件里面加入
2.用偽靜態能解決這個問題,重寫類似。php.*這類文件,打開apache的httpd.conf找到LoadModule rewrite_module modules/mod_rewrite.so
把#號去掉,重啟apache,在網站根目錄下建立。htaccess文件
(三)nginx解析漏洞
漏洞原理
Nginx默認是以CGI的方式支持PHP解析的,普遍的做法是在Nginx配置文件中通過正則匹配設置SCRIPT_FILENAME。當訪問www.xx.com/phpinfo.jpg/1.php這個URL時,$fastcgi_script_name會被設置為“phpinfo.jpg/1.php”,然后構造成SCRIPT_FILENAME傳遞給PHP CGI,但是PHP為什么會接受這樣的參數,并將phpinfo.jpg作為PHP文件解析呢?這就要說到fix_pathinfo這個選項了。 如果開啟了這個選項,那么就會觸發在PHP中的如下邏輯:
PHP會認為SCRIPT_FILENAME是phpinfo.jpg,而1.php是PATH_INFO,所以就會將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
另外一種手法:上傳一個名字為test.jpg,然后訪問test.jpg/.php,在這個目錄下就會生成一句話木馬shell.php。
(四)IIS7.5解析漏洞
IIS7.5的漏洞與nginx的類似,都是由于php配置文件中,開啟了cgi.fix_pathinfo,而這并不是nginx或者iis7.5本身的漏洞。
5.配合操作系統文件命令規則
(1)上傳不符合windows文件命名規則的文件名
test.asp.
test.asp(空格)
test.php:1.jpg
test.php:: $DATA
會被windows系統自動去掉不符合規則符號后面的內容。
新聞熱點
疑難解答