ssrf+log4j=getshell

admin 2022年1月14日11:00:50评论171 views字数 2103阅读7分0秒阅读模式

ssrf+log4j=getshell


一些同学一直认为ssrf漏洞比较鸡肋,是否能够进步利用需要看运气,如能够支持什么协议,是否支持跳转等,所以一般测试出来ssrf,就放一边没有深入利用。在本次实战项目中利用ssrf+log4j组合拳,成功getshell。ps:实战内容均是经过授权的渗透测试,并且相关漏洞均已修复。

0x01 前言

某次项目中碰见了ueditor编辑器的net版本,存在任意文件上传的漏洞,也同样和其他版本一样存在ssrf的问题。
但是经过测试后发现,ueditor因为魔改过无法识别到版本信息,且回包为空不返回图片地址,还删除了listimage的action,导致任意文件上传无法突破。
最后使用了比较骚的姿势,利用get型的盲ssrf打内网的solr的log4j成功反弹shell。
ssrf+log4j=getshell

0x02 原理

下载源码包分析,搜索版本号可以发现在gbk-php下面存在一个js文件中含有ueditor的版本信息,我们可以通过这个来判断是否存在一些漏洞,web中对应的链接便是 netueditor.all.js 文件查看即可看见UE.version,值得注意的是只有显示大版本号。
存在漏洞版本:
ssrf+log4j=getshell

net  =1.3.6 || =1.5.0  || <=1.4.3 存在任意文件上传,也存在下面的漏洞php  <=1.4.3 存在盲ssrf、存在xml上传导致xss漏洞jsp    <=1.4.3 存在盲ssrf、存在xml上传导致xss漏洞

我们看已修复ssrf漏洞的版本,在抓取源的时候,会先去判断IP,进行过滤
ssrf+log4j=getshell
但是在小于1.4.3版本的时候,是没有进行过滤的,进而造成了ssrf漏洞。
ssrf+log4j=getshell

0x03 环境搭建

使用windows2016开启iis环境,在目录中拖入代码,文章篇幅有限,这里就不多赘述了,自行百度
ssrf+log4j=getshell
右键文件夹转换为应用程序即可
ssrf+log4j=getshell
下面建立一个图片马让ueditor抓取
ssrf+log4j=getshell

感觉这里网上的文章大多都有错误,实测是建一个图片马就ok了,文件名也不用名称成乱七八糟的 1.gif?.ashx,因为url解析中?后面是get传参

也就是说这个漏洞根本不需要出网直接往服务器传一个图片马就ok了。(为什么需要图片马是因为会对图片进行校验)
ssrf+log4j=getshell

命名成1.gif?.ashx,利用python起web服务是打不成功的。路由会404
ssrf+log4j=getshell

0x04 任意文件上传 bypass waf

T00ls上的利用手段,抄了一下
ssrf+log4j=getshell

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开头
ssrf+log4j=getshell
这时又想到了一个比较骚的思路 探测内网中存在log4j影响的apache服务的默认端口
运用于了实战中 成功反弹了shell

受log4j漏洞影响的apache服务如下Apche OFBiz影响版本OFBiz < v18.12.03Apache Solr影响版本v7.4.0 <= Solr <= v7.7.3v8.0.0 <= Solr < v8.11.1Apache DruidApache JSPWiki影响版本JSPWiki = V2.11.0Apache Filnk影响版本四个系列:< v1.14.2, < v1.13.5, < v1.12.7, < v1.11.6Apache SkyWalking影响版本SkyWalking < v8.9.1poc就不放这里了,又兴趣的可以看大神的公众号https://mp.weixin.qq.com/s?src=11&timestamp=1641703846&ver=3547&signature=2lMGQil4y52dVorugQJChxXYc3RU4yBzhxroqI8MTNQ5T8EDbYRYjDVcltsPEG6eDzM49*eWrOB6pq3wtKUgauIvhUcqzjiUkxKKvZNCTbJSpdVd2KRz-MUg*if19OWN&new=1

0x06 利用思路

ueditor探测 ip+端口 存在即返回200 不存在 即 返回500
例如:
source[]=
http://10.10.10.1:80 200
source[]=
http://10.10.10.1:81 500

使用bp可以轻易的进行端口扫描
ssrf+log4j=getshell

探测到内网存在 solr的默认端口,直接一个poc打上去,成功反弹shell
ssrf+log4j=getshell
ssrf+log4j=getshell
ssrf+log4j=getshell

0x07 笔者的一些失误记录

这边一直犯了一个错误(痛失shell),POST请求中需要有content-type字段才可以被服务器接收到 post数据,之前都是用bp抓的服务器get请求,手动改方法导致,老是报错 {“state”:”参数错误:没有指定抓取源”}

可以使用hackbar来快速发包测试,下面的catchimage就是一个正常的action,默认存在回显
ssrf+log4j=getshell





END

ssrf+log4j=getshell


原文始发于微信公众号(网络侦查研究院):ssrf+log4j=getshell

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年1月14日11:00:50
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   ssrf+log4j=getshellhttps://cn-sec.com/archives/736650.html

发表评论

匿名网友 填写信息