UEditor编辑器两个版本任意文件上传漏洞分析
字数 1306 2025-08-18 11:37:33

UEditor编辑器.NET版本任意文件上传漏洞分析与防御

漏洞概述

UEditor是一款所见即所得的开源富文本编辑器,由百度开发,具有轻量、可定制、用户体验优秀等特点,被广泛用于各种WEB应用程序。2018年曝出的高危漏洞影响UEditor的.NET版本,其它版本暂时不受影响。

漏洞类型:远程代码执行(RCE)
漏洞成因:在抓取远程数据源时未对文件后缀名做验证导致任意文件写入
危险等级:高危
影响版本:1.4.3.3及之前版本,1.5.0开发版更易触发

漏洞利用细节

利用条件

  1. 目标系统使用UEditor的.NET版本
  2. 存在controller.ashx文件并可访问
  3. 能够向catchimage动作发送POST请求

利用方法

  1. 构造一个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>
  1. 准备一个图片木马,远程shell地址需要指定扩展名为1.gif?.aspx格式

  2. 提交后,服务器会将远程文件保存为.aspx文件,从而实现任意文件上传

技术原理分析

漏洞触发流程

  1. 请求进入controller.ashx控制器,调用catchimage动作
  2. 实例化CrawlerHandler类处理请求
  3. 获取source[]数组参数
  4. 通过lambda表达式调用Crawler类的Fetch方法:
    Crawlers = Sources.Select(x=> new Crawler(x, Server).Fetch()).ToArray();
    

关键漏洞点

  1. 域名/IP验证缺陷

    • 1.4.3.3版本通过IsExternalIPAddress方法验证是否为可解析域名
    • 1.5.0开发版删除了此验证,使任意IP/域名都可触发漏洞
    • 在1.4.3.3中,攻击者只需提供正常域名即可绕过验证
  2. ContentType验证缺陷

    • 仅检查文件头信息,类似PHP文件上传的验证方式
    • 可通过构造图片木马或假GIF文件(gif89)绕过
  3. 文件扩展名未过滤

    • 保存文件时未验证扩展名
    • 攻击者可利用1.gif?.aspx形式绕过可能的扩展名检查
  4. 文件保存过程

    • 根据配置文件创建目录结构
    • 直接将远程文件内容写入服务器,无后缀名过滤

影响范围

  • UEditor .NET版本1.4.3.3及之前版本
  • 特别地,1.5.0开发版更易被利用

防御措施

临时缓解方案

  1. 修改CrawlerHandler.cs文件:

    • 增加对文件扩展名的严格验证
    • 恢复对IP/域名的严格验证
  2. 网络层防御:

    • IPS等设备添加相应特征检测
    • 监控对controller.ashx?action=catchimage的异常请求

长期解决方案

  1. 升级到官方修复版本

  2. 对UEditor进行安全加固:

    • 限制可访问的远程地址白名单
    • 实现严格的文件类型和内容验证
    • 禁用不必要的处理器功能
  3. 服务器配置:

    • 限制UEditor目录的执行权限
    • 对上传文件进行重命名处理
    • 设置文件上传目录不可执行脚本

总结

该漏洞利用UEditor.NET版本在远程抓取功能中的多处安全缺陷,最终导致攻击者可在服务器上上传任意文件并执行代码。由于UEditor广泛应用于各类Web系统,该漏洞危害性较大。管理员应及时检查系统使用的UEditor版本,并采取相应的防护措施。

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请求: 准备一个图片木马,远程shell地址需要指定扩展名为 1.gif?.aspx 格式 提交后,服务器会将远程文件保存为 .aspx 文件,从而实现任意文件上传 技术原理分析 漏洞触发流程 请求进入 controller.ashx 控制器,调用 catchimage 动作 实例化 CrawlerHandler 类处理请求 获取 source[] 数组参数 通过lambda表达式调用 Crawler 类的 Fetch 方法: 关键漏洞点 域名/IP验证缺陷 : 1.4.3.3版本通过 IsExternalIPAddress 方法验证是否为可解析域名 1.5.0开发版删除了此验证,使任意IP/域名都可触发漏洞 在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版本,并采取相应的防护措施。