UEditor编辑器两个版本任意文件上传漏洞分析

0x01 媒介

UEditor是由百度WEB前端研发部开拓的所见即所得的开源富文本编辑器,具有轻量、可定制、用户体验优秀等特征 ,被广大年夜WEB利用法度榜样所应用;本次爆出的高危破绽属于.NET版本,其它的版本暂时不受影响。破绽成因是在抓取远程数据源的时刻未对文件后缀名做验证导致随意率性文件写入破绽,黑客使用此破绽可以在办事器上履行随意率性指令,综合评级高危。因为光阴仓匆匆,本文阐发不到位的地方还请多多谅解。

0x02 破绽使用

笔者本地测试的编辑器是百度官方下载最新的版本1.4.3.3 http://ueditor.baidu.com/website/download.html

本地构造一个html,由于不是上传破绽以是enctype 不必要指定为multipart/form-data , 之前见到有poc指定了这个值。完备的poc如下

form action=”http://xxxxxxxxx/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>

需筹备一个图片马儿,远程shell地址必要指定扩展名为 1.gif?.aspx

成功返回webshell

0x03 破绽阐发

在本地IIS中将目录快速指向到解压后的目录,再造访 controller.ashx 节制器文件。当呈现下图的时刻表示编辑器成功运行。

节制器中存在多个动作的调用,包孕了uploadimage、uploadscrawl、uploadvideo、uploadfile、catchimage等等

这些动作默认环境下都可以远程造访,不扫除还有新的高危破绽;这篇文章重点来先容catchimage这个分支前提,因为它实例化了CrawlerHandler这个类,以是必要跟进这个一样平常处置惩罚法度榜样类

第一行就获取了外界传入的source[] 数组, 核心调用位于Crawlers = Sources.Select(x => new Crawler(x, Server).Fetch()).ToArray();经由过程这段lambda表达式来调用类里的措施履行后的结果 ,如下图跟进Fecth措施体内

首先经由过程IsExternalIPAddress措施判断是否是一个可被DNS解析的域名地址,假如不是就终止运行;逻辑代码如下

这句判断便是 1.5.0开拓版本(https://github.com/fex-team/ueditor/blob/dev-1.5.0/net/App_Code/CrawlerHandler.cs)和官方宣布版本1.4.3.3最大年夜的差别,在1.5.0版本中删除了此处的判断,导致在随意率性一个ip地址或域名下都可以履行exp如下图

相对来说1.5.0版本加倍轻易触发此破绽;而在1.4.3.3版本中进击者必要供给一个正常的域名地址就可以绕过此处判断;

然落后入第二个前提判断 : 对文件ContentType的识别

这段代码很眼熟,一样平常常见于php文件上传的时刻对文件头的判断,这段代码很轻易绕过,只必要构造一张图片马儿就可以绕过它的判断,或者构造一个gif89的假图片也可以绕过;着末编辑器根据设置设置设备摆设摆设文件的信息创建对应的目录布局再保存文件,代码如下

至此RCE破绽道理大年夜致已经清楚清楚明了,等候官方尽快宣布破绽补丁法度榜样。

0x04 防御步伐

改动cs 增添对文件扩展名的;

IPS等防御产品可以加入响应的特性;

赞(0) 打赏
分享到: 更多 (0)
免责申明:本站所有资料均来自于网络,版权归原创者所有!本站不提供任何保证,不保证真实性,并不承担任何法律责任

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

阿里云优惠网 更专业 更优惠

阿里云优惠券阿里云大礼包