<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
Elasticsearch es un motor de búsqueda y análisis **distribuido**, de **código abierto** para **todo tipo de datos**. Es conocido por su **velocidad**, **escalabilidad** y **API REST simple**. Construido sobre Apache Lucene, fue lanzado por primera vez en 2010 por Elasticsearch N.V. (ahora conocido como Elastic). Elasticsearch es el componente principal de Elastic Stack, una colección de herramientas de código abierto para ingestión, enriquecimiento, almacenamiento, análisis y visualización de datos. Esta pila, comúnmente conocida como ELK Stack, también incluye Logstash y Kibana, y ahora tiene agentes ligeros de envío de datos llamados Beats.
Un **índice** de Elasticsearch es una colección de **documentos relacionados** almacenados como **JSON**. Cada documento consta de **claves** y sus correspondientes **valores** (cadenas, números, booleanos, fechas, matrices, geolocalizaciones, etc.).
Elasticsearch utiliza una estructura de datos eficiente llamada **índice invertido** para facilitar búsquedas de texto completo rápidas. Este índice lista cada palabra única en los documentos e identifica los documentos en los que aparece cada palabra.
Durante el proceso de indexación, Elasticsearch almacena los documentos y construye el índice invertido, lo que permite búsquedas casi en tiempo real. El **API de índice** se utiliza para agregar o actualizar documentos JSON dentro de un índice específico.
El protocolo utilizado para acceder a Elasticsearch es **HTTP**. Cuando accedes a él a través de HTTP encontrarás información interesante: `http://10.10.10.115:9200/`
**Por defecto, Elasticsearch no tiene la autenticación habilitada**, por lo que por defecto puedes acceder a todo dentro de la base de datos sin usar credenciales.
curl -X GET "ELASTICSEARCH-SERVER:9200/_xpack/security/user"
{"error":{"root_cause":[{"type":"exception","reason":"Security must be explicitly enabled when using a [basic] license. Enable security by setting [xpack.security.enabled] to [true] in the elasticsearch.yml file and restart the node."}],"type":"exception","reason":"Security must be explicitly enabled when using a [basic] license. Enable security by setting [xpack.security.enabled] to [true] in the elasticsearch.yml file and restart the node."},"status":500}
```
**Sin embargo**, si envías una solicitud a `/` y recibes una respuesta como la siguiente:
```bash
{"error":{"root_cause":[{"type":"security_exception","reason":"missing authentication credentials for REST request [/]","header":{"WWW-Authenticate":"Basic realm=\"security\" charset=\"UTF-8\""}}],"type":"security_exception","reason":"missing authentication credentials for REST request [/]","header":{"WWW-Authenticate":"Basic realm=\"security\" charset=\"UTF-8\""}},"status":401}
Esto significa que la autenticación está configurada y **necesitas credenciales válidas** para obtener información de Elasticsearch. Luego, puedes [**intentar hacer fuerza bruta**](../generic-methodologies-and-resources/brute-force.md#elasticsearch) (utiliza autenticación básica HTTP, por lo que cualquier herramienta de fuerza bruta para autenticación básica HTTP puede ser utilizada).\
Aquí tienes una **lista de nombres de usuario predeterminados**: _**elastic** (superusuario), remote\_monitoring\_user, beats\_system, logstash\_system, kibana, kibana\_system, apm\_system,_ \_anonymous\_.\_ Las versiones antiguas de Elasticsearch tienen la contraseña predeterminada **changeme** para este usuario.
Estos puntos finales fueron [**tomados de la documentación**](https://www.elastic.co/guide/en/elasticsearch/reference/current/rest-apis.html) donde puedes **encontrar más**.\
Para obtener **información sobre qué tipo de datos se guarda dentro de un índice** puedes acceder a: `http://host:9200/<index>` por ejemplo en este caso `http://10.10.10.115:9200/bank`
Si deseas **volcar todo el contenido** de un índice puedes acceder a: `http://host:9200/<index>/_search?pretty=true` como `http://10.10.10.115:9200/bank/_search?pretty=true`
_Tómate un momento para comparar el contenido de cada documento (entrada) dentro del índice bank y los campos de este índice que vimos en la sección anterior._
Así, en este punto puedes notar que **hay un campo llamado "total" dentro de "hits"** que indica que se encontraron **1000 documentos** dentro de este índice pero solo se recuperaron 10. Esto se debe a que **por defecto hay un límite de 10 documentos**.\
Pero, ahora que sabes que **este índice contiene 1000 documentos**, puedes **volcar todos ellos** indicando el número de entradas que deseas volcar en el parámetro **`size`**: `http://10.10.10.115:9200/quotes/_search?pretty=true&size=1000`asd\
_Nota: Si indicas un número mayor, todas las entradas se volcarán de todos modos, por ejemplo podrías indicar `size=9999` y sería extraño si hubiera más entradas (pero deberías verificar)._
Para volcar todo simplemente puedes ir al **mismo camino que antes pero sin indicar ningún índice**`http://host:9200/_search?pretty=true` como `http://10.10.10.115:9200/_search?pretty=true`\
Recuerda que en este caso se aplicará el **límite predeterminado de 10** resultados. Puedes usar el parámetro `size` para volcar una **mayor cantidad de resultados**. Lee la sección anterior para más información.
Si estás buscando alguna información puedes hacer una **búsqueda en bruto en todos los índices** yendo a `http://host:9200/_search?pretty=true&q=<término_de_búsqueda>` como en `http://10.10.10.115:9200/_search?pretty=true&q=Rockwell`
Si solo deseas **buscar en un índice** puedes simplemente **especificarlo** en la **ruta**: `http://host:9200/<index>/_search?pretty=true&q=<término_de_búsqueda>`
Ese comando creará un **nuevo índice** llamado `bookindex` con un documento de tipo `books` que tiene los atributos "_bookId_", "_author_", "_publisher_" y "_name_"
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).