0x01 实战环境
分享一个有意思的实战环境
站点如上 打完可以直接提交cnvd
首先按照网上的poc来打
然后框里填入你自己的vps地址
发数据包
意思说我url不合法呗,因为我有源码,我直接就去源码里全局搜索这句话,看看他要干啥
可以看到这里有个
这个函数,跟一下,看看咋回事
这函数也看不明白啊,直接实验一下
明白了,其实就是判断是ip样式的还是dns样式的,然后继续往下看
有一个这样的函数,跟下去
就是看看你这玩意是不是本地ip,因为这个漏洞是一个远程文件下载漏洞,他还真是远程,如果文件在本地启的一个http服务,还真不能行,行吧,那我把ip搞成公网vps的ip。这样就行了
也不报错了,非常的牛皮
打开网页看一下
卧槽 这什么意思 我马明明上去了呀 再传一次
什么意思?又报错了 再去网页上看一下
卧槽 马又没了 真牛逼我凭借我微弱的渗透的经验判定,这指定是有人在杀我,而且这个aspx的马不同于java的内存马,一次加载可以一直使用,他是脚本文件没了就连不上了,条件竞争也没啥用,因此需要使用一个免杀马。拿出我修改过的冰蝎免杀马做一张图片马出来
然后挂到vps上,继续重复上述远程下载的步骤,然后尝试连接
这不就有了吗,我倒要看看是什么进程在杀我
嘿嘿,原来是阿里云盾,小辣鸡,跟我玩 o了,游戏结束。这里再插入一个小tips前面我提到,因为判定这个ueditor判定文件后缀名是根据conent-type来判定的但是!经过我的实验,发现了一些问题这里假设我直接传aspx文件,会是这个样子
关注下这句话,放到代码里全局搜索
妈的批,明明写的就是ConotentType,这里我尝试做一个txt,然后把文件名改成了jpg,像这样
这里面是不含有jpg文件头的,然后我尝试放到payload里
这也成了,真牛逼,说明本质上还是在判断文件名,然后我们的payload 是1.jpg?.aspx,为什么能达到getshell的效果呢,细心的同学可以发现我们输入了这串payload之后可以直接把文件保存为aspx,为什么输入了1.jpg?.aspx前端依旧还会识别为图片文件呢,
这里看源码
那么也就是说,也就是控制response的类型为image类型就可以了,然后这个payload
http://www.baidu.com/1.jpg?.asp
这里就是会被浏览器当成图片来识别,因为?后面通常是跟参数,浏览器认为后面的就是参数,就不是文件,因此欺骗了上述代码中的一系列request和response步骤,从而成功绕过了判断文件名后缀的问题。至于最终文件为什么会保存为aspx文件,可以参考第一篇ueditor,里面写了文件名保存的方法。以上,组合成了这个漏洞。
文章来源: 感觉文章质量不错 故转载给大家学习
https://github.com/biggerduck/RedTeamNotes
-仅供学习安全技术研究使用 勿用于违法用途
原文始发于微信公众号(0x00实验室):Ueditor漏洞实战 | 安全研究
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论