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

发现两个文件:

  1. id_rsa - SSH私钥
  2. 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. 总结与防御建议

渗透路径总结:

  1. 通过Web源代码泄露获取FTP凭据
  2. 通过FTP获取SSH私钥和用户名
  3. 利用sudo权限不当升级到selena用户
  4. 利用docker组成员身份实现最终提权

防御建议:

  1. 避免在源代码中存储敏感信息
  2. 加强FTP服务安全配置
  3. 限制sudo权限,遵循最小权限原则
  4. 严格控制docker组用户,避免普通用户加入
  5. 定期审计系统权限配置

7. 技术要点备忘

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