当前位置: 首页 > news >正文

PG靶机 - Flu

一、初步侦察与服务识别

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.dtcms.com/a/326742.html

相关文章:

  • 常见鱼饵制作方式
  • 在 X86_64(amd64) 平台上的docker支持打包构建多环境镜像并推送镜像到Harbor
  • AI Coding 概述及学习路线图
  • uploader组件,批量上传怎么设置实时滚动
  • Anti-Aliasing/Mip-NeRF/Zip-NeRF/multi-scale representation
  • 2.一维码+二维码+字符识别
  • OpenHarmony概述与使用
  • 基于大数据的个性化学习环境构建的研究与应用
  • Java前后端交互核心技术:Servlet与JSP深度解析
  • 【Altium designer】一键给多个器件添加参数
  • 2025年渗透测试面试题总结-13(题目+回答)
  • 如何选择一家靠谱的开发公司开发项目呢?
  • sql select语句
  • Python 高阶函数:filter、map、reduce 详解
  • WebMCP 技术文档——让 AI 助手与 Web 应用无缝交互的轻量级框架
  • 基于cursor工具与AI大模型,规范驱动的全自然语言软件开发工作流实现路径
  • 导入CSV文件到MySQL
  • webpark》》
  • STM32CubeMX + HAL 库:用硬件IIC接口实现AT24C02 EEPROM芯片的读写操作
  • Kubernetes部署apisix的理论与最佳实践(一)
  • 【OpenGL】LearnOpenGL学习笔记06 - 坐标系统、MVP变换、绘制立方体
  • 用 t-SNE 把 KSC 高光谱“变成可转动的 3D 影像”——从零到会,逐段读懂代码并导出旋转 GIF
  • 二叉树进阶 之 【模拟实现二叉搜索树】(递归、非递归实现查找、插入、删除功能)
  • 跨平台RTMP推流SDK vs OBS:技术差异与行业落地解析
  • 01数据结构-十字链表和多重邻接表
  • Lwip深度阅读-网络架构
  • 【代码随想录day 17】 力扣 654.最大二叉树
  • 贪心----2.跳跃游戏
  • 区块链技术原理(5)-网络
  • Docker部署MySQL完整指南:从入门到实践