🟢Photographer

Write-up de la máquina Photographer de Proving Grounds #writeup #walkthrough

Enumeración

Puertos abiertos

Como siempre, comenzamos enumerando los servicios abiertos de la máquina objetivo.

nmap -p- --open --min-rate 500 -Pn -n -vvv 192.168.96.76

5 servicios disponibles: 22,80,139,445 y 8000. El siguiente paso será la enumeración exhaustiva de estos servicios.

nmap -p22,80,139,445,8000 -Pn -n -sVC -vvv 192.168.96.76

Puertos abiertos:

  • Puerto 22 -> SSH -> OpenSSH 7.2

  • Puerto 80 -> HTTP -> Apache httpd 2.4.18

  • Puerto 139 -> SMB ->

  • Puerto 445 -> SMB ->

  • Puerto 8000 -> HTTP -> Apache httpd 2.4.18

Enumeración Web

Existen son servicios Web ejecutandose en los puertos 80 y 8000. Vamos a enumerar su contenido.

Encontramos un posible nombre de usuario.

En el puerto 8000, vemos el nombre del CMS que se está utilizando para ese sitio Web.

Seguimos enumerando los directorios y archivos disponibles.

dirsearch -u http://192.168.96.76/ -i200,301 -e txt,html,php -w '/home/elhackeretico/Documentos/directory-list-2.3-small.txt' 
dirsearch -u http://192.168.96.76:8000/ -i200,301 -e txt,html,php -w '/home/elhackeretico/Documentos/directory-list-2.3-small.txt' 

Después de enumerar el contenido de cada uno de ellos, no encontramos nada interesante.

Vemos la presencia de un directorio /admin, que puede ser interesante. Veamos su contenido.

Llegamos a un formulario de inicio de sesión. Sigamos enumerando.

Enumeración SMB

Otro servicio disponible en la máquina es SMB (139 y 445). Veamos si podemos extraer información interesante.

smbclient -N -L \\192.168.96.76

smbclient \\192.168.96.76\sambashare

Así que, al parecer, tenemos acceso a sambashare. Procedamos a ingresar en él.

Hemos hallado dos archivos en sambashare llamados mailsent.txt y wordpress.bkp.zip, los cuales descargaremos en nuestro equipo para llevar a cabo una revisión más exhaustiva utilizando el comando get.

El documento mailsent.txt parece intrigante. Vamos a leerlo y averiguar si contiene información valiosa para nosotros.

Bien, contamos con datos relevantes en nuestro poder. Hemos obtenido dos nombres de usuario: Daisa y Agi.

Notamos que Agi menciona un secreto en la conversación. En este punto, creemos que podría tratarse de una pista vinculada a las credenciales, así que conservaremos esta información para emplearla en un momento posterior.

Explotación

El servidor ejecutado en el puerto 8000 parece estar utilizando el sistema de gestión de contenidos Koken. Procedamos a buscar en Google un exploit público. Al parecer, hemos hallado uno.

Al examinar el exploit, aparenta ser un exploit de subida de archivos autenticado, lo cual implica que requerimos ciertas credenciales.

Tras varios intentos fallidos, seguimos sin poder acceder al sistema. Parece un obstáculo complicado. Sin embargo, todavía no hemos intentado usar las credenciales que conseguimos previamente.

Recordemos que extrajimos dos nombres de usuario, Daisa y Agi, del archivo mailsent.txt. Procedamos a probar con estos nombres de usuario.

¡Genial! Logramos ingresar exitosamente utilizando las credenciales siguientes:

[email protected] : babygirl

Ahora vamos a cargar nuestra terminal PHP, la cual ya se encuentra disponible en Kali. Para hacer esto, seguiremos las instrucciones proporcionadas en el enlace de ExploitDB. Empezamos seleccionando la opción "Import content".

Actualmente, hemos recibido un mensaje que nos indica cómo cargar nuestro shell, como se muestra a continuación.

Antes de subir nuestro shell reverso de PHP, necesitamos añadirle una extensión .jpg para sortear el filtro de extensiones según el exploit.

Pero primero, configuramos la IP y puerto de escucha.

Subimos la shell y la interceptamos con Burp.

Necesitamos pulsar la pestaña de Forward dos o tres veces tras efectuar las modificaciones. Acto seguido, conseguimos un shell inverso en nuestro receptor netcat.

Una vez obtenido el shell inverso, primero crearemos el shell utilizando el comando:

python -c "import pty;pty.spawn('/bin/bash')"

Luego de crear nuestro shell, modificaremos el directorio actual al de "daisa". Al estar en el directorio "daisa", procederemos a abrir el archivo local.txt. Al acceder al archivo, descubrimos la bandera de usuario, la cual se visualiza en la imagen siguiente.

Elevación de privilegios

Comenzamos enumerando los binarios SUID.

¿Qué es un binario SUID?

"Un binario SUID es un archivo ejecutable en sistemas Unix y Linux que, al ser ejecutado, adquiere los permisos del propietario del archivo en lugar de los permisos del usuario que lo está ejecutando. SUID es un mecanismo de control de acceso especial que permite a los usuarios ejecutar programas con los privilegios de otro usuario, generalmente el superusuario o root.

El propósito principal de los binarios SUID es permitir a los usuarios realizar tareas que requieren privilegios más altos de los que normalmente tienen.

Sin embargo, los binarios SUID pueden ser un riesgo de seguridad si no se gestionan correctamente, ya que un usuario malintencionado podría explotarlos para elevar sus privilegios en el sistema y obtener acceso no autorizado a recursos protegidos. Por esta razón, es importante controlar y restringir el uso de binarios SUID cuando sea posible."

find / -perm -u=s -type f 2>/dev/null

Consultamos GTFOBins../php -r "pcntl_exec('/bin/sh', ['-p']);"

./php -r "pcntl_exec('/bin/sh', ['-p']);"

Solo quedará buscar la flag proof.txt

Last updated