渗透测试|ssrf+log4j=getshell

渗透测试|ssrf+log4j=getshell

9aadecf84ef1d9171b9277cdb629a30b0x01 前言

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

0x02 原理

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

  1. net =1.3.6 || =1.5.0 || <=1.4.3 存在任意文件上传,也存在下面的漏洞
  2. php <=1.4.3 存在盲ssrf、存在xml上传导致xss漏洞
  3. 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

  1. log4j漏洞影响的apache服务如下
  2. Apche OFBiz
  3. 影响版本
  4. OFBiz < v18.12.03
  5. Apache Solr
  6. 影响版本
  7. v7.4.0 <= Solr <= v7.7.3v8.0.0 <= Solr < v8.11.1
  8. Apache Druid
  9. Apache JSPWiki
  10. 影响版本
  11. JSPWiki = V2.11.0
  12. Apache Filnk
  13. 影响版本
  14. 四个系列:< v1.14.2, < v1.13.5, < v1.12.7, < v1.11.6
  15. Apache SkyWalking
  16. 影响版本
  17. SkyWalking < v8.9.1
  18. poc就不放这里了,又兴趣的可以看大神的公众号
  19. 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=getshelle1e96219645d2c0658973305cfc640ec-1

本文来自投稿,不代表安强科技社区立场,如若转载,请注明出处:https://community.anqiangkj.com/archives/2788

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022年1月16日 下午12:51
下一篇 2022年1月16日 下午12:51

相关推荐

发表回复

您的电子邮箱地址不会被公开。