Posts Tryhackme - Anonymous
Post
Cancel

Tryhackme - Anonymous

LULZ

Introducción

En este write up, veremos la máquina Anonymous que está enfocada a principiantes, sin embargo en mi opinión personal creo que es muy útil para ir practicando metodologías e ir progresando en cuanto a pruebas de penetración a sistemas.

Reconocimiento

Primero ejecutaremos un escaneo con Nmap, para ello escribimos en la terminal sudo nmap -sS -sV -n IP el output que nos muestra es el siguiente:

LULZ

Podemos observar que hay 4 puertos abiertos, si utilizamos searchsploit para buscar vulnerabilidades en las versiones de los puertos abiertos solo encontraremos una enumeración de usuario para SSH, aunque por ahí no es donde nos queremos enfocar, por ende continuaremos con los otros puertos (FTP, SMB).

Con el comando smbmap -H IP veremos que recursos compartidos están disponibles en la máquina

LULZ

Actualmente hay un recurso que es de lectura solamente y se llama “pics”, así que para poder accesar a este recurso, intentaremos ver que hay en FTP así que utilizaremos el comando ftp IP para poder ingresar al sistema, si empleamos un poco de lógica podemos suponer que las credenciales para FTP son “anonymous:anonymous” aunque estas credenciales son bastante usuales para manejar un FTP Anónimo.

LULZ

Ahora que hemos accesado al FTP de la máquina, procedemos a indagar más en los directorios disponibles.

LULZ

Examinando las carpetas disponibles, nos fijamos en una carpeta llamada “scripts” al ingresar en ella hay 3 archivos interesantes, así que utilizaremos el comando mget * para obtener todos los archivos del directorio actual.

LULZ

Vamos punto por punto, primero analizamos el archivo “clean.sh” para poder saber que es lo que hace, primero se crea una variable llamada “tmp_files” y se le asigna un valor a 0 luego en el “if” si ese valor es igual a 0 entonces hace un echo en el log “removed_file.log”, en caso de lo contrario (else) borra el archivo y escribe otro mensaje.

LULZ

Si revisamos el otro archivo “removed_files.log” podemos ver el output que genera “clean.sh”, dada la información entregada podemos deducir que esto es un CronJob así que vamos a sobreescribir “clean.sh” para obtener una reverse shell con bash

Obteniendo shell

En la terminal de arriba, ponemos una reverse shell para bash y aquí les dejo una cheatsheet de PentestMonkey para Bash y la terminal de abajo, es para ver la ip que vamos a utilizar para nuestra carga útil.

LULZ

Ahora que tenemos listo nuestro script, lo vamos a subir al servidor FTP para reemplazar el que ya está en el directorio, para ellos utilizaremos el comando put clean.sh clean.sh que se muestra en la terminal izquierda, luego de reemplazar el archivo nos pondremos a la escucha con netcat, yo utilicé rlwrap que me permite utilizar las teclas, pero de igual manera se puede hacer una Shell full TTY.

LULZ

Ya que esto es un cronjob, solo tendremos que esperar a que se ejecute “clean.sh” en el servidor FTP, si todo salió bien deberíamos tener una conexión reversa.

LULZ

Escalación de privilegios

Primero vamos a buscar binarios SUID con el comando find / -perm -u=s -type f 2>/dev/null .

LULZ

Luego de enumerar los binarios, observamos que “/usr/bin/env” tiene permisos SUID.

LULZ

Para poder explotar este binario nos dirigimos a la página GTFOBins y así nos dará información de cómo sacar provecho de esta vulnerabilidad.

LULZ

El primer comando de GTFOBins no nos sirve, ya que nuestro binario SUID ya existe por ende ejecutamos el comando env /bin/sh -p.

LULZ

Y ahora somos r00t ;)

This post is licensed under CC BY 4.0 by the author.