SNMP RCE
SNMP RCE
SNMP può essere sfruttato da un attaccante se l'amministratore trascura la sua configurazione predefinita sul dispositivo o server. Sfruttando la comunità SNMP con permessi di scrittura (rwcommunity) su un sistema operativo Linux, l'attaccante può eseguire comandi sul server.
Estendere i servizi con comandi aggiuntivi
Per estendere i servizi SNMP e aggiungere comandi extra, è possibile aggiungere nuove righe alla tabella "nsExtendObjects". Ciò può essere ottenuto utilizzando il comando snmpset
e fornendo i parametri necessari, inclusi il percorso assoluto dell'eseguibile e il comando da eseguire:
Iniezione di Comandi per l'Esecuzione
L'iniezione di comandi da eseguire sul servizio SNMP richiede l'esistenza e l'eseguibilità del binario/script chiamato. Il NET-SNMP-EXTEND-MIB
richiede di fornire il percorso assoluto dell'eseguibile.
Per confermare l'esecuzione del comando iniettato, è possibile utilizzare il comando snmpwalk
per enumerare il servizio SNMP. L'output mostrerà il comando e i relativi dettagli, inclusi il percorso assoluto:
Esecuzione dei comandi iniettati
Quando il comando iniettato viene letto, viene eseguito. Questo comportamento è noto come run-on-read()
. L'esecuzione del comando può essere osservata durante la lettura di snmpwalk.
Ottenere una shell del server con SNMP
Per ottenere il controllo del server e ottenere una shell del server, può essere utilizzato uno script Python sviluppato da mxrch disponibile su https://github.com/mxrch/snmp-shell.git.
In alternativa, è possibile creare manualmente una reverse shell iniettando un comando specifico in SNMP. Questo comando, attivato da snmpwalk, stabilisce una connessione reverse shell alla macchina dell'attaccante, consentendo il controllo sulla macchina vittima. È possibile installare il prerequisito per eseguire questo:
Oppure una shell inversa:
Riferimenti
Last updated