一、 初步侦察与服务探测

1.1 端口扫描与服务识别

首先,对目标主机 192.168.163.98 进行全面的端口扫描,以识别所有开放的服务。

sudo nmap 192.168.163.98 -p- --min-rate=5000 -A


图 1: Nmap 扫描结果,显示多个开放端口

扫描结果表明,目标主机开放了多个端口,包括 SMB (445)、ZooKeeper (2181) 和一个运行在 8080 端口上的 Jetty Web 服务器。值得注意的是,8080 端口上运行着一个名为 Exhibitor 的应用,这是一个用于 ZooKeeper 的监控和管理工具。

1.2 服务枚举与信息收集

SMB 服务

尝试对 SMB 服务进行枚举,以发现可能存在的共享目录或敏感信息,但未获得有价值的发现。

enum4linux-ng 192.168.163.98


图 2: SMB 枚举未发现有用信息

Exhibitor Web 应用

接着,访问 http://192.168.163.98:8080 上的 Exhibitor 应用。从界面右上角可以识别出其版本号为 1.0。


图 3: Exhibitor Web 界面,版本号为 1.0

二、 Exhibitor 漏洞利用与初始访问

2.1 漏洞识别与验证

针对已识别的 Exhibitor 版本,搜索相关的历史漏洞。很快,一个编号为 CVE-2019-5029 的远程代码执行(RCE)漏洞引起了注意。 该漏洞影响版本为 1.0.9 至 1.7.1 的 Exhibitor,描述指出攻击者可以通过在配置界面中注入恶意命令来实现 RCE。 尽管目标版本为 1.0,低于受影响的最低版本 1.0.9,不管怎样,先试试再说。


图 4: CVE-2019-5029 漏洞信息

2.2 漏洞利用获取 Shell

根据漏洞描述,该 RCE 通过在 Exhibitor 的配置页面中注入由反引号或 $() 包裹的 Shell 命令来触发。 当 Exhibitor 进程启动 ZooKeeper 时,这些命令会被执行。

在 Exhibitor 的 “Config” 选项卡中,找到可以插入命令的配置项,并填入反弹 Shell 的 payload,然后提交配置。


图 5: 在 Exhibitor 配置中插入反弹 Shell 命令

成功触发漏洞,在本地监听的端口上接收到来自目标主机的 Shell,当前用户为 charles


图 6: 成功获取 charles 用户的反弹 Shell

三、 信息收集与权限提升

3.1 Sudo 权限分析

获得初始 Shell 后,首要任务是检查当前用户的 sudo 权限,以寻找提权的途径。

sudo -l


图 7: charles 用户的 sudo 权限

sudo -l 的输出显示,用户 charles 可以免密以 root 权限执行 /usr/bin/gcore 命令。

3.2 gcore 命令功能与提权思路

通过搜索得知,gcore 是一个用于生成正在运行进程的核心转储文件(core dump)的工具。 这些转储文件是进程在某一时刻的内存快照,通常包含大量敏感信息,如密码、密钥或配置文件内容。 利用 sudo 权限执行 gcore,意味着我们可以转储系统上任何用户的任何进程的内存。


图 8: gcore 命令功能说明

GTFOBins 的提权辅助网站也提供了利用 gcore 进行提权的方法,其原理正是通过转储高权限进程的内存来获取敏感数据。

图 9: GTFOBins 上关于 gcore 的提权方法

3.3 锁定目标进程并转储内存

提权的关键在于找到一个内存中可能包含 root 凭据的进程。通过 ps aux 命令查看系统当前所有进程,发现一个名为 password-store 的可疑进程。 “password-store” 是一款遵循 Unix 哲学的密码管理器,它通常会将密码加密后存储。 这使得转储其内存以获取明文密码成为可能。


图 10: 发现可疑的 password-store 进程

确定目标进程的 PID(本例中为 513)后,使用 sudo gcore 命令对其进行内存转储。该命令会生成一个名为 core.513 的文件。

sudo gcore 513
strings core.513

使用 strings 命令在转储文件中查找可读字符串,很快便发现了 root 用户的密码:ClogKingpinInning731


图 11: 从内存转储中获取 root 密码

四、 切换用户并获取 Root 权限

4.1 切换至 Root 用户

使用刚刚获取的密码,通过 su 命令尝试切换到 root 用户。

su root


图 12: 成功切换到 root 用户,完成提权

输入密码 ClogKingpinInning731 后,成功切换为 root 用户,至此完成了对目标系统的完全控制。

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

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

相关文章

【1】Transformers快速入门:自然语言处理(NLP)是啥?

第一章:自然语言处理(NLP)是啥?一句话解释: NLP 教电脑听懂人话、说人话的技术 (比如让手机听懂你说话、让翻译软件变聪明)NLP发展史:电脑学人话的 “翻车史” 第一阶段&#xff08…

微软发布五大AI Agent设计模式 推动企业自动化革新

今日,微软在官网正式公布了企业级AI智能体(Agent)的五大核心设计模式,旨在通过模块化架构与自适应能力,帮助企业构建具备推理、协作与自主进化能力的"数字员工团队"。这一技术框架突破传统RPA(机…

如何根据本地是有GPU安装对应CUDA版本的PyTorch

要在本地安装与您的NVIDIA GPU匹配的CUDA版本PyTorch,请按以下步骤操作: 步骤1:确定GPU型号和驱动信息 1.按 Win X选择 ​设备管理器​2.展开 ​显示适配器​ → 记录您的NVIDIA显卡型号(如RTX 3060)3.打开命令提示…

在FP32输入上计算前向传播需要多长时间?FP16模型的实例与之前的模型相比,它快了多少?

下面的 MixedModel 类使用作为参数提供的数据类型创建了一个非常简单的两层模型: class MixedModel(nn.Module): def init (self, dtype): super(). init

嵌入式硬件中MOS管图形详解

第一:MOS管电子元器件分析 MOS管全称叫金属氧化物半导体场效应晶体管,是一种压控器件。 MOS管属于场效应晶体管。 1、进入饱和区,若想加大电流该怎么做? 答:增加栅极电压,以扩大沟道宽度,此时到沟道再次被夹断所通过的电流也会增大。 2、MOS管的特性 答:(1)MOS管…

介绍java中atomic及相关类

文章目录一、Atomic 类的核心原理二、常见 Atomic 类及用法1. 基本类型原子类(1)AtomicInteger(原子更新 int)(2)AtomicLong(原子更新 long)(3)AtomicBoolean…

消费级显卡分布式智能体协同:构建高性价比医疗AI互动智能体的理论与实践路径

摘要: 本文系统探讨了基于消费级显卡集群(NVIDIA 30/40系列)的分布式小模型(1.5B-7B)协同机制,构建医疗互动智能网的理论基础与实践路径。文章从医疗AI的特殊性出发,提出“异构智能体协同计算”范式,通过模型分片、动态任务调度、联邦学习等核心技术,解决医疗场景中数…

C++进阶:特殊类

目录1. 不能被拷贝的类2. 只能在堆上创建的类3. 只能在栈上创建的类4. 不能被继承的类5. 类的设计模式(单例模式)5.1 饿汉模式设计5.2 懒汉模式设计特殊类的概念: 特殊类是一些具有特殊行为、用途,用特殊方法设计而出的类。1. 不…

【论文阅读】基于卷积神经网络和预提取特征的肌电信号分类

Myoelectric Signal Classification Using Convolutional Neural Networks with Pre-Extracted Features 原文:DOI: 10.1109/ICICS55353.2022.9811218 2022 翻译:靠岸学术 目录 摘要 1引言 2背景 A. 卷积神经网络 B. 特征工程 3材料与方法 A. CN…

珠海社保缴费记录如何打印

珠海社保掌上办(微信小程序) 进入“珠海社保掌上办”—“资料打印”— 选择养老工伤失业个人缴费证明,可选择 全部缴费记录打印或自选时段打印: 长按图片保存后打印。

AM32电调学习-使用Keil编译uboot

目前的AM32的APP固件包含了keil工程,但是uboot还没看到,对于习惯使用keil的新用户,调试起来会有些不习惯,本文将简单描述怎么新建一个keil的uboot工程,以AT32F421为例。一、新建目录新建一个目录Keil_Projects二、新建…

【大文件上传】分片上传+断点续传+Worker线程计算Hash

/*** 文件分片上传管理器* 提供文件分片、哈希计算、并发上传和断点续传功能*/ class FileChunkUploader {/*** 构造函数* param {File} file - 要上传的文件对象* param {Object} options - 配置选项* param {number} [options.chunkSize5MB] - 每个分片的大小(字节…

-bash: ./restart.sh: /bin/bash^M: 坏的解释器: 没有那个文件或目录

这是典型的Windows换行符(CRLF)导致的脚本不能在Linux/Unix环境下正常执行的问题。Linux 期望的是 LF (\n),而 Windows 是 CRLF (\r\n),所以脚本文件的第一行解释器路径后多了一个不可见的 ^M(回车符)&…

芯伯乐1MHz高频低功耗运放芯片MCP6001/2/4系列,微安级功耗精密信号处理

前言在工业控制、通信设备、家用电器等领域,信号处理是核心环节之一,其中运算放大器(运放)是实现信号处理的核心器件,其选型参数直接决定了信号链路的性能和输出信号的质量,是确保信号正常、精确输出的关键…

智能的数学原理

智能的数学原理可以分成几个层次来看——从最底层的数学基础,到支撑“智能”表现的数学模型,再到连接数学与现实认知的理论框架。 分成 五个核心板块 来梳理:1. 信息与表示的数学 智能的第一步是“能表示信息”,这涉及&#xff1a…

FPGA即插即用Verilog驱动系列——SPI发送模块

实现功能:按字节以spi模式3发送数据,如果要stm32接收,请在cubemx中将对应的spi接口设置为模式3,详情见代码开头注释// spi_byte_master.v // 经过优化的SPI主设备模块,每次使能发送一个字节。 // 它实现了SPI模式3 (CP…

C++ 排序指南

在 C 中&#xff0c;std::sort 是一个非常强大且常用的函数&#xff0c;用于对容器或数组中的元素进行排序。它定义在 <algorithm> 头文件中。 std::sort 的基本语法 std::sort 的基本语法有以下几种形式&#xff1a;默认升序排序&#xff1a; std::sort(first, last);fi…

RS232串行线是什么?

RS232串行线是什么&#xff1f;RS232串行线是一种用于串行通信的标准化接口&#xff0c;广泛应用于早期计算机、工业设备、仪器仪表等领域的短距离数据传输。以下是其核心要点解析&#xff1a;1. 基本定义 全称&#xff1a;RS232&#xff08;Recommended Standard 232&#xff…

k8s-scheduler 解析

学习文档 官网的k8s上关于scheduler的文档基本可以分为这两部分 介绍 scheduler 的基本概念 介绍 scheduler 的配置 KubeSchedulerConfiguration 的参数 介绍 scheduler 的命令行参数 调度框架解析 Scheduling-framework 解析 kube-scheduler 选择 node 通过下面这两步…

前端简历1v1修改: 优化项目经验

今天有人找我优化前端简历&#xff0c;分享一下如何优化项目经验描述。这是修改前的版本&#xff1a;项目为Web前端开发&#xff0c;但描述为APP应用&#xff0c;包含某某功能。起初我感到困惑&#xff0c;因为前端技术栈使用Vue&#xff0c;为何项目类型是APP&#xff1f;后来…