UEditor编辑器两个版本任意文件上传漏洞分析
字数 1306 2025-08-18 11:37:33
UEditor编辑器.NET版本任意文件上传漏洞分析与防御
漏洞概述
UEditor是一款所见即所得的开源富文本编辑器,由百度开发,具有轻量、可定制、用户体验优秀等特点,被广泛用于各种WEB应用程序。2018年曝出的高危漏洞影响UEditor的.NET版本,其它版本暂时不受影响。
漏洞类型:远程代码执行(RCE)
漏洞成因:在抓取远程数据源时未对文件后缀名做验证导致任意文件写入
危险等级:高危
影响版本:1.4.3.3及之前版本,1.5.0开发版更易触发
漏洞利用细节
利用条件
- 目标系统使用UEditor的.NET版本
- 存在
controller.ashx文件并可访问 - 能够向
catchimage动作发送POST请求
利用方法
- 构造一个HTML表单,向目标服务器的
controller.ashx发送POST请求:
<form action="http://target.com/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格式 -
提交后,服务器会将远程文件保存为
.aspx文件,从而实现任意文件上传
技术原理分析
漏洞触发流程
- 请求进入
controller.ashx控制器,调用catchimage动作 - 实例化
CrawlerHandler类处理请求 - 获取
source[]数组参数 - 通过lambda表达式调用
Crawler类的Fetch方法:Crawlers = Sources.Select(x=> new Crawler(x, Server).Fetch()).ToArray();
关键漏洞点
-
域名/IP验证缺陷:
- 1.4.3.3版本通过
IsExternalIPAddress方法验证是否为可解析域名 - 1.5.0开发版删除了此验证,使任意IP/域名都可触发漏洞
- 在1.4.3.3中,攻击者只需提供正常域名即可绕过验证
- 1.4.3.3版本通过
-
ContentType验证缺陷:
- 仅检查文件头信息,类似PHP文件上传的验证方式
- 可通过构造图片木马或假GIF文件(
gif89)绕过
-
文件扩展名未过滤:
- 保存文件时未验证扩展名
- 攻击者可利用
1.gif?.aspx形式绕过可能的扩展名检查
-
文件保存过程:
- 根据配置文件创建目录结构
- 直接将远程文件内容写入服务器,无后缀名过滤
影响范围
- UEditor .NET版本1.4.3.3及之前版本
- 特别地,1.5.0开发版更易被利用
防御措施
临时缓解方案
-
修改
CrawlerHandler.cs文件:- 增加对文件扩展名的严格验证
- 恢复对IP/域名的严格验证
-
网络层防御:
- IPS等设备添加相应特征检测
- 监控对
controller.ashx?action=catchimage的异常请求
长期解决方案
-
升级到官方修复版本
-
对UEditor进行安全加固:
- 限制可访问的远程地址白名单
- 实现严格的文件类型和内容验证
- 禁用不必要的处理器功能
-
服务器配置:
- 限制UEditor目录的执行权限
- 对上传文件进行重命名处理
- 设置文件上传目录不可执行脚本
总结
该漏洞利用UEditor.NET版本在远程抓取功能中的多处安全缺陷,最终导致攻击者可在服务器上上传任意文件并执行代码。由于UEditor广泛应用于各类Web系统,该漏洞危害性较大。管理员应及时检查系统使用的UEditor版本,并采取相应的防护措施。