TryHackMe Vulnversity

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.
Primeramente vamos a la pagina web ya que los demas puertos no hay mucho que hacer y vemos una pagina web simple.
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
Nos vamos a /internal, vemos que tenemos una subida de archivos.
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.
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.
Interceptamos la peticion la enviamos al intruder y le decimos que el payload lo queremos dentro de la palabra prueba.php.
En el punto uno nos vamos ah payload, luego en el punto dos escribimos varias extensiones que queremos probar y observar cual le gusta.
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.
Nos copiamos una rever shell que el parrot ya trae que esta bajo esa ruta que se observa en la imagen.
REVERSHELL
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.
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
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.
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
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
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
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.
Nos vamos al directorio /dev/shm y creamos un archivo llamado root.service y escribimos lo siguiente, tiene el enlace al EXPLOIT.
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.
Maquina resuelta.
Última actualización