一、初步侦察与服务识别

1.1 端口扫描

首先对目标主机 192.168.122.41 进行全端口扫描,以发现其上开放的网络服务。

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


图1: Nmap扫描结果,显示开放22, 8090, 和 8091端口

扫描结果显示,目标开放了三个端口:SSH (22)、HTTP (8090) 和另一个未知服务 (8091)。我们的攻击重点将首先放在 8090 端口上运行的 Web 服务。

1.2 Web应用识别

我们优先访问 http://192.168.122.41:8090 上的Web服务。通过检查页面页脚的版权信息,可以明确识别出该应用为 Confluence,其版本号为 7.13.6


图2: Web服务首页,识别为Confluence 7.13.6

二、漏洞利用与初始访问

2.1 历史漏洞查询

针对已识别的 Confluence 7.13.6 版本,我们进行公开漏洞库查询。很快,我们发现一个编号为 CVE-2022-26134 的远程代码执行(RCE)漏洞,该漏洞影响了多个Confluence 7.x 版本,包括目标正在使用的版本。


图3: Confluence 历史漏洞查询结果

2.2 RCE漏洞利用

从 GitHub 上获取针对 CVE-2022-26134 的公开漏洞利用脚本(EXP)。执行该脚本后,我们成功在目标服务器上获得了反弹 shell,取得了对系统的初步访问权限。


图4: 成功利用EXP获得反弹shell

检查当前用户身份和系统中的用户列表,确认我们当前处于一个名为 confluence 的普通用户权限下,这也是运行该Web服务的用户。


图5: 确认当前为普通用户权限

三、本地信息收集与提权分析

3.1 发现可疑的备份脚本

获得初始访问权限后,我们在应用的根目录下进行文件搜寻,试图发现配置文件、凭证或其他可利用的信息。在此过程中,我们发现了一个名为 log-backup.sh 的shell脚本。


图6: 在项目根目录发现 log-backup.sh 脚本

从脚本名称和内容推断,其功能是将应用日志备份到 /root/logs 目录下。值得注意的是,目标目录位于 root 用户的家目录下,这意味着执行此脚本需要 root 权限。

3.2 提权路径分析

检查该脚本的文件权限,发现当前我们所处的 confluence 用户对此脚本拥有写入权限。


图7: 检查发现当前用户对脚本有写权限

基于以上两点发现,一个清晰的提权路径浮现出来:

  1. 脚本需要 root 权限才能成功执行。
  2. confluence 用户可以修改该脚本内容。
  3. 这极有可能意味着系统存在一个以 root 身份运行的定时任务(Cron Job),用于周期性地执行此备份脚本。
3.3 验证定时任务

为了验证我们的猜想,我们将进程监控工具 pspy 上传到目标服务器并执行。pspy 可以非侵入式地监控系统上的所有进程活动。很快,pspy 的输出证实了我们的判断:一个由 root 用户启动的定时任务每隔一段时间就会执行 log-backup.sh 脚本。


图8: pspy监控到root权限的定时任务正在执行该脚本

四、利用定时任务实现权限提升

4.1 修改脚本并植入后门

既然提权路径已经确认,我们便可以利用 confluence 用户对脚本的写权限,向其中植入提权命令。我们选择的命令是为 /bin/bash 程序设置 SUID 位。当一个可执行文件被设置了 SUID 位后,任何用户执行它时,都会临时获得该文件所有者(在这里是 root)的权限。

使用 echo 命令将提权代码追加到脚本末尾:

echo 'chmod u+s /bin/bash' >> log-backup.sh
4.2 获取Root权限

命令写入后,我们只需等待下一次定时任务的触发。当 root 用户执行被我们修改过的 log-backup.sh 脚本时,我们的 chmod u+s /bin/bash 命令也会以 root 权限被执行。

稍等片刻后,我们执行 /bin/bash -p 命令(-p 参数用于在启动bash时保持有效用户ID,这是利用SUID的关键),成功获得了一个 root 权限的 shell,完成了最终的提权。


图9: 植入SUID后门,成功提权至root

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

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

相关文章

【Leetcode】随笔

文章目录题目一:路径总和 II(LeetCode 113)题目分析:解题思路:示例代码:代码解析:题目二:颜色分类(LeetCode 75)题目分析:解题思路:示…

深入 FastMCP 源码:认识 tool()、resource() 和 prompt() 装饰器

在使用 FastMCP 开发 MCP 服务器时经常会用到 mcp.tool() 等装饰器。虽然它们用起来很简单,但当作黑匣子总让人感觉"不得劲"。接下来我们将深入相关的源码实现,别担心,不会钻没有意义的“兔子洞”,你可以通过这篇文章了…

Spring Boot 2.0 升级至 3.5 JDK 1.8 升级至 17 全面指南

一、版本升级背景升级动机 Spring Boot 2.0 到 3.5 的重大更新(如Jakarta EE 9包路径变更、GraalVM支持等)JDK 1.8 到 17 的语言特性升级(如sealed class、record等)安全性与性能优化需求升级目标 兼容性验证依赖库版本适配代码兼…

级数学习笔记

级数学习笔记 一、数学基础 1. 数项级数(Number Series) 数项级数是指形如: ∑(n1 to ∞) aₙ a₁ a₂ a₃ ...的无穷和。 1.1 收敛性判别法 比较判别法比值判别法根值判别法积分判别法莱布尼茨判别法(交错级数) 2…

Linux811 YUM;SHELL:if else fi,for

vsftpdok [rootweb ~]# vim vsftpdok.sh 您在 /var/spool/mail/root 中有新邮件 [rootweb ~]# cat vsftpdok.sh rpm -ql vsftpd >/dev/null 2>&1 if [ $? -eq 0 ];then echo "OK" else yum install vsftpd -y if [ $? -eq 0 ];then echo "install o…

运维学习Day20——MariaDB数据库管理

文章目录MariaDB 数据库管理介绍 MariaDB数据库介绍数据库种类关系数据库MariaDB 介绍部署 MariaDB安装 MariaDB加固 MariaDB连接 MariaDB配置 MariaDBMariaDB 中 SQL描述 SQL连接数据库数据库操作查询数据库列表使用数据库创建数据库删除数据库表操作环境准备查询表查询表列表…

itertools:迭代器函数

文章目录一、合并和分解迭代器1、chain:首尾相接2、zip / zip_longest:对齐取数3、islice:切片4、tee:分裂二、转换输入1、map / starmap:函数映射三、生成新值1、count:生成连续整数2、repeat:…

【AI论文】序列标注任务广义化研究(SFT广义化):基于奖励修正的强化学习视角

摘要:我们针对大语言模型(Large Language Model,LLM)的监督微调(Supervised Fine-Tuning,SFT)提出了一种简单但具有理论依据的改进方法,以解决其与强化学习(Reinforcemen…

(已解决)Mac 终端上配置代理

说明:为了便于理解,本文描述略显“抽象”与“潦草”,为了过审,仅供学习交流使用。🚀 简洁流程版启动工具 点击图标,复制它给出的终端命令将这段内容粘贴进你的配置文件中(~/.zshrc 或 ~/.bash_p…

Anti-Aliasing/Mip-NeRF/Zip-NeRF/multi-scale representation

前言 CSDN的文章写太多,都不记得之前写的有什么了,但习惯了在这里记录,先写上吧。关于multi-scale representation又是看着忘着,还是写下点什么比较啊。时看时新,还是想吐槽自己看论文太不认真了。下面直接按照文章顺序…

板块三章节3——NFS 服务器

NFS 服务器 NFS 服务介绍 NFS 是Network File System的缩写,即网络文件系统,最早由Sun公司开发,**用来在UNIX&Linux系统间实现磁盘文件共享的一种方法。**它的主要功能是通过网络让不同的主机系统之间可以共享文件或目录。NFS客户端&…

数学建模——最大最小化模型

1.概念最大最小化模型(Maximin Model)是一种优化方法,旨在最大化最坏情况下的收益或最小化最坏情况下的损失。常见的现实问题有:求最大值的最小化问题最大风险的最低限度最小化最坏情况下的损失等2.一般数学模型 (找最大值里面最小…

【JAVA】使用系统音频设置播放音频

代码直接可以运行 import javax.sound.sampled.*; import java.io.File; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.nio.charset.StandardCharsets;public class SystemDefaultAudioPlayer {// 强制使用的通用音频格式private st…

[CSP-J 2021] 小熊的果篮

题目 12代码 #include <bits/stdc.h> using namespace std; const int N2e55; struct node{int pre,//上一个水果块(对于水果就是上个水果)l,//块开始的序号&#xff0c;左边界 d,//块类型&#xff0c;0/1id,//水果序号 r,//块结束的序号&#xff0c;右边界 next;//下一块…

【C++】STL二叉搜索树——map与set容器的基础结构

目录 前言 1.二叉搜索树的概念 1.1基本结构 1.2性能分析 2.二叉搜索树的实现 2.1创建 2.2插入 2.3查找与遍历 2.4删除 3.二叉搜索树类代码 前言 C中STL的map与set容器广泛应用于实践过程中&#xff0c;本文将详细分析容器最基础的二叉搜索树结构&#xff0c;为后续map…

基于Spring Boot和SSE的实时消息推送系统

一、SSE技术深度解析 1.1 协议工作原理 #mermaid-svg-u7ZBlEsXcn68R5a8 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-u7ZBlEsXcn68R5a8 .error-icon{fill:#552222;}#mermaid-svg-u7ZBlEsXcn68R5a8 .error-text{fi…

Day 40 训练和测试的规范写法

知识点回顾&#xff1a; 彩色和灰度图片测试和训练的规范写法&#xff1a;封装在函数中展平操作&#xff1a;除第一个维度batchsize外全部展平dropout操作&#xff1a;训练阶段随机丢弃神经元&#xff0c;测试阶段eval模式关闭dropout 作业&#xff1a;仔细学习下测试和训练代…

分析代码并回答问题

代码 <template><div>Counter: {{ counter }}</div><div>Double Counter: {{ doubleCounter }}</div> </template><script setup lang"ts"> import { ref, computed } from "vue";const counter ref(0);const …

在macOS上扫描192.168.1.0/24子网的所有IP地址

在macOS上扫描192.168.1.0/24子网的所有IP地址&#xff0c;可以通过终端命令实现。以下是几种常用方法&#xff1a; 使用ping命令循环扫描 打开终端执行以下脚本&#xff0c;会逐个ping测试192.168.1.1到192.168.1.254的地址&#xff0c;并过滤出有响应的IP&#xff1a; for i …

Java基础05——类型转换(本文为个人学习笔记,内容整理自哔哩哔哩UP主【遇见狂神说】的公开课程。 > 所有知识点归属原作者,仅作非商业用途分享)

Java基础05——类型转换 类型转换 由于Java是强类型语言&#xff0c;所以要进行有些运算的时候&#xff0c;需要用到类型转换。 如&#xff1a;byte(占1个字节)&#xff0c;short(占2个字节)&#xff0c;char(占2个字节)→int(4个字节)→long(占8个字节)→float(占4个字节)→do…