> For the complete documentation index, see [llms.txt](https://rodgar.gitbook.io/rodgar/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://rodgar.gitbook.io/rodgar/plataformas/tryhackme/tryhackme-vulnversity.md).

# TryHackMe Vulnversity

<figure><img src="/files/E1013CGIT8GgL7i3PdYV" alt=""><figcaption></figcaption></figure>

* ![nmap1](https://drive.google.com/uc?id=1wcv4m6ooFMQphkLe2Y_BLz8MevPkbwlU)

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.
```

***

```javascript
# 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.

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

***

![80](https://drive.google.com/uc?id=14cKT-ZMLz3AiSyKdANz1_yQEK-opo_MT)

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

***

WFUZZ

![wfuzz](https://drive.google.com/uc?id=1rtBqrlOixD5HbrMIH18F1elY9QtlSO1S)

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](https://drive.google.com/uc?id=18-HFVU1YWWTVVVGcuOwJuYj__LEAqE95)

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

***

![php](https://drive.google.com/uc?id=1FnBXKM6NDgX_U5rkvzM0KEQrMosmEb_T)

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](https://drive.google.com/uc?id=12aAsdZnuUUHzHO1A-6m5oCVo2uuOuO3C)

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](https://drive.google.com/uc?id=1XS5FaZ0cuNRt_IZPnER48oXEpAz_JXkg)

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

***

![bupr](https://drive.google.com/uc?id=1cj_WsAhmflqSwmPfW3YUpoe4T1bnBCFV)

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](https://drive.google.com/uc?id=1YTQ4eL838HsvSFzka5r-2xdekJ-5uG_0)

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](https://drive.google.com/uc?id=1I87lONzdu_TbMlYhpak8VnS6GJWB-IMk)

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

***

**REVERSHELL**

![nano](https://drive.google.com/uc?id=1CJ-rTyw4kGTpWnLn_xvq-RJT64-HGf2r)

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](https://drive.google.com/uc?id=1aJ1cqeSQclmV2j4wo5isImm6mR56Ixqj)

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](https://drive.google.com/uc?id=1e4YaF79eDkoITDeo72Krm_L3KkWD50Xq)

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](https://drive.google.com/uc?id=1cCbssPOkomrKyBMPjNnFKm_sZ8Sw6gGl)

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](https://drive.google.com/uc?id=1XeJMzlP8Y6JG88RUqaKDki9vLpHRqd20)

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](https://rodgarrr.github.io/Tratamiento-de-la-Terminal/)

***

![Home](https://drive.google.com/uc?id=1BGPKPOApwKwy1K3Qp1Y73zd6X0m5q0_F)

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](https://drive.google.com/uc?id=1rsx4BNxA7zd3LoA2P0SBqiAknWo2VNuB)

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.

***

![](https://drive.google.com/uc?id=1T9lhkQHSEmDhxSJqONjf9vMwL6z7HRxp) ![root](https://drive.google.com/uc?id=1sjBoc35wBwGc02Rn8q1TXyg2LfJYnw8l)

Nos vamos al directorio **/dev/shm** y creamos un archivo llamado root.service y escribimos lo siguiente, tiene el enlace al [EXPLOIT](https://gist.github.com/A1vinSmith/78786df7899a840ec43c5ddecb6a4740).

***

![ser](https://drive.google.com/uc?id=1OE_ztnADfL29e0QCsmzP1XmyBEHrvS2w)

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](https://drive.google.com/uc?id=1kPMa3jN9OwX0hme94mHPPpt-yZwSB6Mc)

Maquina resuelta.
