¿Implicaciones de la inyección de Elastisearch NoSQL?

1

Estoy probando una aplicación web y he encontrado un parámetro que es vulnerable a la inyección NoSQL (Elastisearch). El parámetro se llama nombre de usuario y es el único parámetro en la solicitud HTTP. Como respuesta, solo recibo un mensaje verdadero / falso dependiendo de si el nombre de usuario existe.

Según los mensajes de error que recibo si inserto una comilla doble en el nombre de usuario, he llegado a la conclusión de que la inyección se produce aquí:

  

[{"size": 1000, "query": {"query_string": {"query": "username: INJECTION_POINT " "," lowercase_expanded_terms ": true}}}]]]

Puedo usar esto para extraer valores de campos a los que no tengo acceso al realizar una inyección NoSQL basada en Boolean, por ejemplo, proporcionando el siguiente valor: victim_username AND phone = 0 * (resultaría en un mensaje "verdadero" si el número de teléfono de las víctimas comienza con 0).

¿Pero hay algo más que pueda intentar? ¿Hay alguna posibilidad de enumerar los nombres de los campos? ¿Hay alguna posibilidad de realizar RCE utilizando la inyección NoSQL en Elastisearch? ¿Alguna otra idea?

El servidor Elastisearch no está expuesto directamente, pero supongo que la aplicación que estoy probando está realizando las consultas NoSQL en un servidor interno.

    
pregunta pineappleman 01.03.2017 - 00:00
fuente

0 respuestas

Lea otras preguntas en las etiquetas