TryHackMe Vulnversity

  • nmap1

Ahora hacemos un reconocimiento con nmap para detectar que puertos estan abiertos en el host.

sS: Indica a Nmap que realice un escaneo de tipo SYN, también conocido como "escaneo stealth". 

-Pn: Esta opción indica a Nmap que ignore la detección de host y realice el escaneo de todas formas. 

-n: Indica a Nmap que no realice la resolución de nombres DNS. Esto acelera el escaneo.

--open: Esta opción muestra solo los puertos que están abiertos.

-vvv: Habilita la salida detallada y verbosa de Nmap.

--min-rate 500: Establece la tasa mínima de envío de paquetes a 500 por segundo. Esto ayuda a acelerar el escaneo al aumentar la velocidad.

# Nmap 7.93 scan initiated Mon Jul 10 18:42:15 2023 as: nmap -sCV -p21,22,139,445,3128,3333 -oN targeted 10.10.232.111
Nmap scan report for 10.10.232.111
Host is up (0.17s latency).

PORT     STATE SERVICE     VERSION
21/tcp   open  ftp         vsftpd 3.0.3
22/tcp   open  ssh         OpenSSH 7.2p2 Ubuntu 4ubuntu2.7 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   2048 5a4ffcb8c8761cb5851cacb286411c5a (RSA)
|   256 ac9dec44610c28850088e968e9d0cb3d (ECDSA)
|_  256 3050cb705a865722cb52d93634dca558 (ED25519)
139/tcp  open  netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
445/tcp  open  netbios-ssn Samba smbd 4.3.11-Ubuntu (workgroup: WORKGROUP)
3128/tcp open  http-proxy  Squid http proxy 3.5.12
|_http-server-header: squid/3.5.12
|_http-title: ERROR: The requested URL could not be retrieved
3333/tcp open  http        Apache httpd 2.4.18 ((Ubuntu))
|_http-title: Vuln University
|_http-server-header: Apache/2.4.18 (Ubuntu)
Service Info: Host: VULNUNIVERSITY; OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel

Host script results:
| smb-os-discovery: 
|   OS: Windows 6.1 (Samba 4.3.11-Ubuntu)
|   Computer name: vulnuniversity
|   NetBIOS computer name: VULNUNIVERSITY\x00
|   Domain name: \x00
|   FQDN: vulnuniversity
|_  System time: 2023-07-10T12:42:46-04:00
|_clock-skew: mean: 1h20m06s, deviation: 2h18m34s, median: 5s
| smb-security-mode: 
|   account_used: guest
|   authentication_level: user
|   challenge_response: supported
|_  message_signing: disabled (dangerous, but default)
| smb2-security-mode: 
|   311: 
|_    Message signing enabled but not required
| smb2-time: 
|   date: 2023-07-10T16:42:46
|_  start_date: N/A
|_nbstat: NetBIOS name: VULNUNIVERSITY, NetBIOS user: <unknown>, NetBIOS MAC: 000000000000 (Xerox)

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at Mon Jul 10 18:42:43 2023 -- 1 IP address (1 host up) scanned in 27.97 seconds

Ahora lanzamos una nmap para ver que versiones y servicios corren para estos puertos que encontramos abiertos.

-sCV: Indica a Nmap que realice un escaneo de versión y detección de servicios. 
-p: Especifica el puerto que deseas escanear. 

80

Primeramente vamos a la pagina web ya que los demas puertos no hay mucho que hacer y vemos una pagina web simple.


WFUZZ

wfuzz

Usando wfuzz vamos a enumerar directorios dentro de la pagina web y vemos que encontramos varias pero vamos a ver que hay en Internal


Internal

Nos vamos a /internal, vemos que tenemos una subida de archivos.


php

Nos creamos un archivo php de prueba para ver si lo podemos subir a la web y asi subir un archivo malicioso que nos envie una rever shell.


php

Intentamos subir el archivo de prueba.php pero no lo podemos subir, vemos que nos dice Extension not alloweb. Vamos a interceptar esta peticion con BurpSuite para observar que tipo de extension acepta.


Burp

Interceptamos la peticion la enviamos al intruder y le decimos que el payload lo queremos dentro de la palabra prueba.php.


bupr

En el punto uno nos vamos ah payload, luego en el punto dos escribimos varias extensiones que queremos probar y observar cual le gusta.


bupr

En el punto uno vemos todas las extensiones probadas y observamos que la extension .phtml tiene una longitud diferente 723 diferente a las demas lo que hace pensar que la web acepta subida de archivos .phtml.

En el punto dos y observando la respuesta que obtenemos, vemos que en la respuesta obtenemos un Success, lo cual confirma que podemos subir archivos con la extension .phtml.


php

Nos copiamos una rever shell que el parrot ya trae que esta bajo esa ruta que se observa en la imagen.


REVERSHELL

nano

Y ahora con nano vamos a editar el archivo, hacemos los cambios que debemos hacer la direccion IP que se fue asignada cuando te conectas a la VPN y por ultimo el puerto por donde te quieres poner en escucha.


re

Guardado el archivo y con los cambios ya hechos, vamos a cambiarle el nombre a la extension que la pagina acepta, y lo pasamos de .php a .phtml. Ahora ya podriamos subir archivos a la pagina


succes

Ahora observamos que si podemos subir archivos y que ah subido correctamente nuestro archivo malicioso el cual nos dara una shell a nuestra maquina atacante.


uploads

Nos vamos a la ruta /uploads que normalmente en las subidas de archivo es esa o esta /upload, no necesitas usar ni Gobuster,Wfuzz o otra vaina.


NETCAT NC

netcat

Ahora ya con el archivo malicioso subido, vamos pa dentro

En el punto uno nos podemos en escucha con netcat por el puerto 443.

Ahora en el punto dos con curl hacemos una peticion a la ruta donde se encuentra subido el archivo .phtml, vemos por la parte de arriba que ganamos acceso y que si hacemos un whoami somos www-data.

Ahora hacemos un tratamiento de la TTY si no sabes como hacerlo pincha TTY


Home

Nos vamos al /home/bill y vemos que tenemos la primera flag la del user.txt, ahora solo falta la de root.


ESCALADA DE PRIVILEGIOS

es

Ahora nos dirigimos a la raiz y buscamos binarios SUID para tratar de pasar de ser www-data a root y vemos que systemctl tiene permisos SUID lo cual es de ayuda.

QUE ES SYSTEMCTL

Systemctl es un comando en los sistemas operativos basados en Linux que se utiliza para controlar y administrar el servicio del sistema, también conocido como el init system. Es parte del proyecto systemd, que es un sistema de inicio y administración de servicios ampliamente utilizado en distribuciones de Linux modernas.

Algunos comandos comunes de systemctl incluyen:

  • systemctl start : Inicia un servicio específico.

  • systemctl stop : Detiene un servicio específico.

  • systemctl restart : Reinicia un servicio específico.

  • systemctl enable : Configura un servicio para que se inicie automáticamente en el arranque del sistema.

  • systemctl disable : Desactiva la ejecución automática de un servicio en el arranque del sistema.

  • systemctl status : Muestra el estado actual de un servicio, incluyendo si está en ejecución o detenido.

Esto nos quiere decir que si podemos reiniciar el servicio podemos incluir nuestras propias ordenes.


root

Nos vamos al directorio /dev/shm y creamos un archivo llamado root.service y escribimos lo siguiente, tiene el enlace al EXPLOIT.


ser

Ahora como punto numero uno hacemos un systemctl enable a la ruta donde creamos nuestro root.service recuerde lo que hace este comando es Configura un servicio para que se inicie automáticamente en el arranque del sistema.

En el punto dos hacemos un systemctl start y le pasamos el archivo que queremos que en este caso es root.service. recuerde lo que hace el comando systemctl start Inicia un servicio específico.

Ahora en el punto tres en la parte de abajo nos ponemos en escuha por Netcat por el puerto 9999 y vemos que si hacemos un whoami somos root y no www-data

Ahora como cuarto punto nos vamos /root para ver la ultima flag que es la de root y asi completar la maquina, le hacemos un cat al archivo root.txt y listo maquina resuelta.


con

Maquina resuelta.

Última actualización