fckeditor文件上传漏洞(.NET)
前一段时间,由于用了fckeditor,没有修改fckeditor的漏洞,被人家上传了木马,使得网站上出现不良信息,服务器被封半个月,心理很郁闷,所以今天把fckeditor的漏洞以及能彻底解决这些漏洞的办法写出来。
你到网上搜索一下fckeditor漏洞,可以出现很多文章,都是关于它的很多漏洞,可能是转为他太出名了吧。漏洞太多。
你仔细看看,所有漏洞,都是是关于一些上传文件的。原理是由于IIS对一些改名的文件解析所导致的。
由于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的漏洞继续执行了。。。
然后通过抓包。获取上传后地址即可。。
这样,就会上传一个木马了。我的网站就出现这样的漏洞,使得整台服务器被封IP。
现在我想了一个办法,修改上传文件,把上传的文件自动以日期来命名。
修改方法如下:
首先找到FCKeditor.Net_2.6.3的源码。打开FileBrowser目录里的FileWorkerBase.cs文件。
找到如下代码:
int iErrorNumber = 0;
int iCounter = 0;
while ( true )
{
string sFilePath = System.IO.Path.Combine( sServerDir, sFileName );
if ( System.IO.File.Exists( sFilePath ) )
{
iCounter++;
sFileName =
System.IO.Path.GetFileNameWithoutExtension( oFile.FileName ) +
"(" + iCounter + ")." +
sExtension;
iErrorNumber = 201;
}
else
{
oFile.SaveAs( sFilePath );
break;
}
}
TypeConfig typeConfig = this.Config.TypeConfig[resourceType] ;
string sFileUrl = isQuickUpload ? typeConfig.GetQuickUploadPath() : typeConfig.GetFilesPath() ;
sFileUrl += sFileName;
this.SendFileUploadResponse( iErrorNumber, isQuickUpload, sFileUrl, sFileName );
改成如下代码:
int iErrorNumber = 0;
//int iCounter = 0;
sFileName = this.SanitizeFileName(this.getfilename() + "." + sExtension);
string sFilePath = System.IO.Path.Combine(sServerDir, sFileName);
oFile.SaveAs(sFilePath);
TypeConfig typeConfig = this.Config.TypeConfig[resourceType] ;
string sFileUrl = "uploadfile/";//isQuickUpload ? typeConfig.GetQuickUploadPath() : typeConfig.GetFilesPath();
sFileUrl += sFileName;
上面用到的getfilename()类是文件新的文件名。类代码如下:
public string getfilename()
{
System.DateTime currentTime = new System.DateTime();
currentTime = System.DateTime.Now;
Random rnd = new Random();
string rndStr = "";
for (int i = 0; i <= 4; i++)
{
rndStr += rnd.Next(10).ToString();
}
return currentTime.ToString("yyyyMMddhhmmssffffff") + rndStr;
}
这样所有上传的文件都重新命名,不会有重复,而且文件后缀是程序获得的后缀.JPG。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现