UEditor 是一款颇为老旧的富文本编辑器,曾经普遍流行过所以在一些老的项目里面,还会存在。但是该项目到目前为止已经永久停止更新,所以当发现漏洞时,只能自己维护。最好停止使用并更换富文本编辑器组件,个人推荐modstart-lib/ueditor-plus、Notadd/Neditor。这些都是UEditor为核心的二次开发项目,方便升级。
网上关于这个漏洞已经有了十分详细的解释、各路大神已经指明了道路,这边简单介绍一下出现的位置与原理。
1.1出现漏洞的代码位置
文件上传漏洞影响UEditor 的.Net版本,其他版本暂未影响,漏洞出现在图中的CrawlerHandler.cs中,其中controller.ashx是入口。
UEditor 在抓取远程数据源的时候,会进入【catchimage】这个分支里面。然后就进入了漏洞出现的CrawlerHandler类中。
上面是CrawlerHandler类中的漏洞位置,最重要的是if判断语句,只是对ContentType进行了简单的验证,这个黑客留下了余地。
1.2 漏洞实现原理
既然在1.1中已经了解了在图片验证时只验证了ContentType,那我就可以通过工具修改ContentType,躲避掉这个判断,然后就可以进入到接下来的流程中。
而接下来就是下载到服务器操作,从而可以上传全部类型的文件,只需要你自己拥有一台服务器即可。
这个漏洞危险程度之高甚至能获取到服务器的高级权限。具体做法是修改ContentType伪装自己是图片,然后在路径里添加?.aspx绕过获取文件名的检测,然后你就能向服务器上传aspx动态页面文件,从而获取webshell,到了这一步服务器就已经被攻破了。
推荐的修复方式就是在CrawlerHandler类添加文件类型检查的代码,使用各类WAF软件增强服务器防护等级。
网上大部分关于如何添加文件类型检查都只是建议并没有具体实现,这里提供了一个简单的实现方式仅供参考。
尽可能小的改动量下,对类型进行验证,在此代码中:
- 读取响应流的前几个字节。
- 通过检查图像格式的特定魔数来判断响应是否为图片格式。
这里列举了4中类型(jpgjpeg、png、gif)进行判断,可扩展。
到此这篇ueditor编辑器上传漏洞(ueditor在线编辑器)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!通过读取响应流的前几个字节来判断文件类型,实际上已经是一种相对较为安全和通用的方法,特别是在ContentType不可用或不可靠的情况下。这是因为文件头(或魔数)通常是标识文件类型的更直接和可靠的方式。
- UEditor 任意文件上传漏洞
- UEditor .Net版本任意文件上传漏洞
- UEditor编辑器任意文件上传漏洞分析
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/rfx/47369.html