SNMP (RCE Linux)
Obtener ejecución de código remoto mediante SNMP.
Última actualización
Obtener ejecución de código remoto mediante SNMP.
Última actualización
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.
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.
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:
La forma más rápida y automatizada de hacerlo es con la siguiente herramienta en Python:
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