8 ~ Vulnversity - Linux
Última actualización
Última actualización
Lo primero que haremos será realizar un ping a la maquina para saber 2 cosas, la primera es para saber si tenemos comunicación con la maquina y la segunda para conocer el tipo de sistema operativo que tiene.
En este caso el ttl es 63 siendo una maquina Linux, pero el ttl real seria 64, esto es debido a que salta por varios nodos intermediarios.
Esta maquina he tenido que realizar un escaneo de puertos diferente, debido a que no encontraba todos los puertos necesarios para poder explotarla.
Descripción de los parámetros:
-p- : Escanea los puertos especificados, en este caso escanea los 65535 puertos.
--open : Muestra solo los puertos abiertos.
-sS : Escanea mediante TCP SYN.
--min-rate : Envía paquetes no mas lentos que el número indicado por segundo en nuestro caso 1000.
-Pn : Omite el descubrimiento de host.
-n : No realiza resolución DNS.
-vvv : Muestra la información mientras se esta realizando el escaneo.
IP : La IP que queremos escanear.
-oG : Guarda la salida del escaneo en un formato grepeable.
Ahora vamos a realizar un escaneo mas exhaustivo.
Descripción de los parámetros:
-p : Escanea los puertos especificados.
-sC : Lanza varios scripts defaults de nmap.
-sV : Determina los servicios que están corriendo en los puertos además de información extra.
IP : La IP que queremos escanear.
-oN : Guarda la salida en el formato de nmap.
Después de escanear todos los puertos de la maquina, empezamos a recolectar información de ellos.
Vemos que tenemos el servicio samba en la maquina, para buscar información en el, utilizaremos la herramienta enum4linux.
Descripción de los parámetros:
-a : Realiza la enumeración simple.
Donde tras acabar el escaneo, nos da un posible usuario.
Lo primero que se me ocurre es realizar fuerza bruta al servicio ssh, y lo dejaremos en segundo plano para ver si nos saca alguna credencial valida.
El siguiente puerto que donde podemos sacar algo de información es el puerto 3333 que aloja un servicio apache.
Entramos en la pagina web y buscamos algún tipo de información útil, tras un rato mirando vemos que no hay nada, y usamos la herramienta gobuster para ver si hay alguna ruta que nos pueda interesar.
Descripción de los parámetros:
dir : Utiliza el modo de enumeración de directorios/archivos.
-u : Le indicamos que le vamos a pasar una url.
URL : La url objetivo.
-w : Le indicamos que vamos a usar un diccionario.
/PATH/ : Le indicamos la ruta del diccionario a usar.
-t 50 : Le indicamos el numero de peticiones hacia el servidor.
--no-error : No muestra errores por pantalla.
-z : No muestra la barra de progresos por pantalla.
-o : Guarda la salida en un archivo.
Y tenemos una ruta llamada /internal, que si accedemos a ella, nos da la opción de subir archivos, probamos subir un archivo php y nos da un error.
Toca abrir Burpsuite y ver que extensión es permitida para poder subir una reverse shell.
Tras interceptar una petición con burpsutie.
La mandamos al intruder donde limpiaremos todo lo marcado y marcaremos solo la extensión.
Ahora buscamos en internet extensiones php y las introducimos en Payload Options [Simple List]
Y filtramos el error en options > Grep -Extract para saber cual extensión es valida.
Iniciamos el ataque:
El problema de burpsuite community es que lanza una petición por segundo, siendo algo lento, pero en nuestro caso son pocas peticiones.
Tras pasar un rato vemos que tenemos un "Success".
Ahora tenemos que ejecutar la reverse_shell .phtml, buscamos en internet reverse shell php y nos la descargamos y modificamos los parámetros correspondientes, además de la extensión valida.
Luego de modificarla y subirla, nos ponemos en escucha con la herramienta nc.
Descripción de los parámetros:
-n : Solo direcciones de IP numéricas.
-I : Modo de escucha, para conexiones entrantes.
-v : Muestra información por pantalla.
-p : Numero del puerto.
PUERTO : El puerto que se pondrá en escucha.
Y vamos a buscar la reverse_shell.phtml.
Y tenemos una reverse shell.
Lo primero es buscar la flag del usuario.
Luego procedemos a realizar un escaneo del sistema y al buscar permisos suid, detectamos algo bastante critico.
Descripción de los parámetros:
-perm : Le indicamos que vamos a buscar permisos.
-u=s : le indicamos que vamos a buscar permisos de usuario setuid.
2>/dev/null : Mandamos los errores al /dev/null.
Tenemos un permiso suid en /bin/systemctl, vamos a buscar en la pagina GTFOBINS y a ver si podemos hacer algo y se puede hacer algo.
En este caso tenemos que sustituir es el comando a ejecutar (id > /tmp/output) a (chmod +s /bin/bash) o el que prefieran. Ejecutamos bash -p y listo.
Y SOMOS ROOT!