SNMP (RCE Linux)

Obtener ejecución de código remoto mediante SNMP.

INTRODUCCIÓN

Fuente
Fuente

El servicio SNMP es muchas veces olvidado por el administrador del equipo o servidor, dejandolo con la configuración por defecto.

Un servicio SNMP con permisos de escritura (rwcommunity) en un sistema Linux puede ser explotado para ganar acceso y ejecutar comandos en el servidor.

EXTENDER SERVICIOS

Aunque no tienes permisos para modificar las entradas existentes en el snmpd.conf, si que es posible añadir comandos adicionales de SNMP por qué el permiso "MAX-ACCESS" en el MIB es "read-create".

Añadir un nuevo comando básicamente funciona añadiendo una fila extra a la tabla "nsExtendObjects":

Al injectar un comando que ejecutar en el servicio SNMP, NET-SNMP-EXTEND-MIB necesita que utilices la ruta completa al ejecutable. El binario o script llamado tambien debe existir y ser ejecutable.

Funciona

Podemos ejecutar el comando que hemos injectado enumerándolo con snmpwalk.

Vemos que el comando es /bin/echo:

El comando se ejecuta cuando es leído. run-on-read()

El comando fué ejecutado finalmente durante snmpwalk:

OBTENER UNA SHELL CON NET-SNMP EXTEND

La forma más rápida y automatizada de hacerlo es con la siguiente herramienta en Python:

Fuente

Manualmente

Tambien se puede crear una shell reversa manualmente inyectando el siguiente comando en SNMP:

Ejecutamos snmpwalk para activar la ejecución del comando:

Por último, nuestro netcat recibe la reverse shell y obtenemos control sobre el objetivo

Última actualización

¿Te fue útil?