ueditor的上传文件漏洞(c#)

项目中使用了ueditor,安全测试发现一个漏洞,涉及漏洞的文件名字为UploadHandler.cs,其中有一个方法:

    private bool CheckFileType(string filename)
    {
        var fileExtension = Path.GetExtension(filename).ToLower();
        return UploadConfig.AllowExtensions.Select(x => x.ToLower()).Contains(fileExtension);
    }

这个方法是存在漏洞的,虽然前端做了判断,但是通过中间人攻击方法,是可以绕过的。

改造该方法如下:

    /// <summary>
    /// 检查文件类型
    /// </summary>
    /// <param name="filename"></param>
    /// <returns></returns>
    private bool CheckFileType(string filename)
    {
        var fileExtension = Path.GetExtension(filename).ToLower();
        // .jpg  
        // .jpg.aspx
        bool result= Array.IndexOf(UploadConfig.AllowExtensions, fileExtension)>-1;
        return result;
        //return UploadConfig.AllowExtensions.Select(x => x.ToLower()).Contains(fileExtension);
    }

看看就应该明白了,虽然上传允许的为.jpg,但是由于判断方法的不严谨,仍然可以绕过上传其它任意类型文件,使用Array.IndexOf就可以有效避免了。

原文地址:https://www.cnblogs.com/hnsongbiao/p/5519332.html