编者注:利用 SSRF 探测内网中存在log4j影响的apache服务的默认端口,成功反弹shell。
SSRF 也可加 redis 未授权访问 getshell 。
总体的思路还是 redis + xxx,来getshell。
0x01 前言
某次项目中碰见了ueditor编辑器的net版本,存在任意文件上传的漏洞,也同样和其他版本一样存在ssrf的问题。
但是经过测试后发现,ueditor因为魔改过无法识别到版本信息,且回包为空不返回图片地址,还删除了listimage的action,导致任意文件上传无法突破。
最后使用了比较骚的姿势,利用get型的盲ssrf打内网的solr的log4j成功反弹shell。
0x02 原理
下载源码包分析,搜索版本号可以发现在\gbk-php\下面存在一个js文件中含有ueditor的版本信息,我们可以通过这个来判断是否存在一些漏洞,web中对应的链接便是 net\ueditor.all.js 文件查看即可看见UE.version,值得注意的是只有显示大版本号。
存在漏洞版本:
1 | net =1.3.6 || =1.5.0 || <=1.4.3 存在任意文件上传,也存在下面的漏洞 |
我们看已修复ssrf漏洞的版本,在抓取源的时候,会先去判断IP,进行过滤
但是在小于1.4.3版本的时候,是没有进行过滤的,进而造成了ssrf漏洞。
0x03 环境搭建
使用windows2016开启iis环境,在目录中拖入代码,文章篇幅有限,这里就不多赘述了,自行百度
右键文件夹转换为应用程序即可
下面建立一个图片马让ueditor抓取
感觉这里网上的文章大多都有错误,实测是建一个图片马就ok了,文件名也不用名称成乱七八糟的 1.gif?.ashx,因为url解析中?后面是get传参
也就是说这个漏洞根本不需要出网直接往服务器传一个图片马就ok了。(为什么需要图片马是因为会对图片进行校验)
命名成1.gif?.ashx,利用python起web服务是打不成功的。路由会404
0x04 任意文件上传 bypass waf
T00ls上的利用手段,抄了一下
0x05 骚思路 Ueditor SSRF+内网solr log4j 反弹shell
想必各位有经验的师傅,这个编辑器在hvv的目标中出现的次数想必是数不胜数了,而且这个ssrf漏洞 只在 1.4.3.1 1.4.3.2 1.4.3.3 的小版本的更新了修复。
仔细查阅代码发现 net 版本 1.5.0版本 是没有修复 ssrf漏洞的,而其他版本均做了修复
1.5.0版本的net依旧存在ssrf
但是一直是一个鸡肋的ssrf漏洞,该漏洞不支持302跳转,且php版本检测http开头
这时又想到了一个比较骚的思路 探测内网中存在log4j影响的apache服务的默认端口
运用于了实战中 成功反弹了shell
1 | 受log4j漏洞影响的apache服务如下 |
0x06 利用思路
ueditor探测 ip+端口 存在即返回200 不存在 即 返回500
例如:
source[]=http://10.10.10.1:80 200
source[]=http://10.10.10.1:81 500
使用bp可以轻易的进行端口扫描
探测到内网存在 solr的默认端口,直接一个poc打上去,成功反弹shell
0x07 笔者的一些失误记录
这边一直犯了一个错误(痛失shell),POST请求中需要有content-type字段才可以被服务器接收到 post数据,之前都是用bp抓的服务器get请求,手动改方法导致,老是报错 {“state”:”参数错误:没有指定抓取源”}
可以使用hackbar来快速发包测试,下面的catchimage就是一个正常的action,默认存在回显