[repost] MÚLTIPLES VULNERABILIDADES ( ICS ) - SCHNEIDER ELECTRIC - 6
Tratando con servicios SNMP, durante un tiempo me plantee como poder 'Sacarle Jugo' a aquellos OID, con privilegios de escritura.
Y de esa inquietud nace lo que mas tarde nombre con el nombre de 'Cross Protocol Injection'.
Pero de antes de hablar de Vulnerabilidades y otras hierbas, algunas aclaraciones:
SNMP - WALK & SET -
Por norma general al dar con servicios SNMP con 'community' como 'private' nos encontraremos ante la POSIBILIDAD de setear ciertos string. En la mayoría de estos casos, se podrá editar aquellos campos ubicados en los siguientes OID:
iso.3.6.1.2.1.1.4.0 ( System Contact )
iso.3.6.1.2.1.1.5.0 ( System Name )
Con seguridad encontraremos muchos mas, pero por hoy quedemos con estos 3, como prueba de concepto.
Para consultar estos oid siempre podremos hacer usos de herramientas como SNMPWALK.
Una simple búsqueda en sobre Shodan, nos da la increíble suma de: 2,633,664 host INDEXADOS, corriendo snmp.
Tomemos al azar uno de esos 2.633.664 host y...
Siendo un poco mas objetivo, con respecto al OID que nos interesa
Para editar algun campo (siempre y cuando los permisos habilitados correspondan a los de escritura), nos pasaramemos a la herramienta SNMPSET. Como veremos su uso es bien sencillo.
Editamos el OID correspondiente al campo 'System Name'
En caso de no tener los privilegios correcto sobre ese OID, al intentar setear algún cambio, con snmpset, tendríamos por consola un lindo mensaje de error. Muestra suficiente para entender que el cambio no se a realizado.
Por otro lado, para estar suficientemente seguro de que el cambio realizado a surgido efecto, volveremos a consultar al OID correspondiente.
Como no podía ser de otra forma, en una primera instancia la respuesta la obtuvimos de la mano de varios dispositivo de la firma 'Schneider Electric' (Ahora si,entrando en el tema en cuestión )
Desde entonces hablo de una técnica a la que llamo :
CROSS PROTOCOL INJECTION
Dispositivos como 'PowerLogic' de Schneider cumplen esas condiciones.
El fallo radica frente a la posibilidad de explotar un XSS inyectando un tag HTML con llamadas a eventos propios de javcascript. Si estoy hablando de un clasico XSS
HTTP
Los inputs tienen este aspecto

SNMP
1,2,3, POC
Con los elementos antes expuestos ya es posible deducir como explotar la vulnerabilidad
PAYLOAD: '"onmouseover="alert(2)'
Inyectaremos nuestro Payload JS sobre el OID 1.3.6.1.2.1.1.5.0
esta inyección quedara reflejada permanentemente sobre el campo 'System Name' .
<input class="pm5560Input" type="text" id="systemName" name="sysName" value=" { HERE INJECTION } " maxlength="16" originalvalue=" ">
Como resultado de nuestra prueba de concepto, al pasar el cursos sobre el input, se disparara el evento 'alert'.
y de esta manera conseguimos ejecutar JS, inyectado a través de un protocolo como es SNMP.
El input resultante quedaria asi:
<input class="pm5560Input" type="text" id="systemName" name="sysName" value=" " onmouseover="alert(2)" maxlength="16" originalvalue=" ">
Nota final
Claramente el mismo xss lo podremos explotar inyectando directamente sobre el input, pero la intención de este post es presentar como novedad la posibilidad de hacerlo inyectando a través un protocolo conocido, como es SNMP.
Saludos,
@Capitan_Alfa
Comentarios
Publicar un comentario