ueditor漏洞利用&源码分析详细版
2022-12-16 17:7:45 Author: 雷石安全实验室(查看原文) 阅读量:12 收藏

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

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

利用参考

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

这里主要讲源码的部分。

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

里面这个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类未对文件类型进行检验,导致了任意文件上传。升级可以防止这个漏洞产生。

往期回顾

01
frida inlinehook 巧解Android逆向题
02
无回显的任意文件上传

03

frida hook native层巧解Android逆向题

雷石安全实验室

商务咨询:

0571-87031601

商务邮箱:

[email protected]


文章来源: http://mp.weixin.qq.com/s?__biz=MzI5MDE0MjQ1NQ==&mid=2247517024&idx=1&sn=e459dc9828f848c19c502f61b5783925&chksm=ec26a2f8db512bee19119e35271fcf50fa4901104ae5b78bae5eb6c4d8ef3d8d72f51f1ccc9c#rd
如有侵权请联系:admin#unsafe.sh