首页
社区
课程
招聘
[原创]ueditor漏洞利用&源码分析详细版
发表于: 2023-3-31 16:56 7017

[原创]ueditor漏洞利用&源码分析详细版

2023-3-31 16:56
7017

漏洞简介

大家都说这个漏洞是上传漏洞,其实这个不是上传漏洞,是远程文件下载漏洞。

思路类似于我们打内网的时候远程wget或者certutil直接把payload或者exe下载到目标机器上,然后运行上线。

利用参考

https://www.cnblogs.com/hei-zi/p/13394764.html

这里主要讲源码的部分。



ueditorC#版本源码解析

  • 下载好漏洞组件,进行查看

图片

里面这个controller.ashx相当于一个控制器,也就是入口点,类似于mvc架构中的controller,和thinkphp那种模式有点类似。

  • 打开看一下这个代码

图片


不同的case,就是不同的条件跳转,参数从前台用?action=config等方式传入,然后进入后台,对应不同的case,即进入不同的逻辑。

别的我们先不看,先看漏洞产生的逻辑语句。

  • 直接定位到漏洞的逻辑语句

图片

然后这里看到有个CrawlerHandler,是new出来的

图片

crtl键按住查看

图片

非常好,啥也没有,这里我对c#也不是很了解,于是我又打开原本的那个文件来看

图片

这里就找到了对应的cs文件

图片

cs文件就是c#文件的源码,c sharp = cs

然后打开看一下

图片

看不明白,但是结合之前

图片

这一行,是在实体话crawlwerhander new时候通常要调用一个构造方法,也就是和CrawlerHandler同名的一个构造方法。

这个构造方法在这里

图片

也没啥用,然后又看回去,发现一行

图片

这里调用了一个Process方法,每一个对应的cs文件中都有一个Process方法,前台参数,后台接受参数并使用。

图片

这里有个fetch方法,跟一下

图片

poc中有个特殊的的点,网上很多文章没讲清楚

传过去的参数是

1.gif?.aspx

之所以为什么是1.gif?.aspx才能生效,这里还得看源码

首先这里写明了response中的content-Type是image

也就是返回包的部分

图片

所以上传的东西必须是一个具有image文件头的东西

其次后台对于文件名的判定是通过.来判定

也就是这一行代码

图片

就用的是这个GetFileName方法

这个方法经过我的测试

图片

这个payload会被当成一个名为1.gif?的文件,但是后缀还是.asp,也就是按照asp来做解析

而这个文件,在前台1.gif?xxxxx按照浏览器的逻辑,?后面就是参数,因此前台解析这个http://127.0.0.1/xxx/1.gif?.asp

是当成图片文件来做解析的

该漏洞是由于上传文件时,使用CrawlerHandler类未对文件类型进行检验,导致了任意文件上传。升级可以防止这个漏洞产生。



[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 1
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//