hacktricks/linux-hardening/privilege-escalation/logstash.md
carlospolop 466ebcbb16 f
2023-06-05 20:30:03 +02:00

4.8 KiB

Información Básica

Logstash se utiliza para recopilar, transformar y emitir registros. Esto se logra mediante el uso de pipelines, que contienen módulos de entrada, filtro y salida. El servicio se vuelve interesante cuando se ha comprometido una máquina que está ejecutando Logstash como servicio.

Pipelines

El archivo de configuración de la canalización /etc/logstash/pipelines.yml especifica las ubicaciones de las canalizaciones activas:

# This file is where you define your pipelines. You can define multiple.
# For more information on multiple pipelines, see the documentation:
# https://www.elastic.co/guide/en/logstash/current/multiple-pipelines.html

- pipeline.id: main
  path.config: "/etc/logstash/conf.d/*.conf"
- pipeline.id: example
  path.config: "/usr/share/logstash/pipeline/1*.conf"
  pipeline.workers: 6

Aquí puedes encontrar las rutas a los archivos .conf, que contienen las tuberías configuradas. Si se utiliza el módulo de salida de Elasticsearch, es probable que las tuberías contengan credenciales válidas para una instancia de Elasticsearch. Esas credenciales suelen tener más privilegios, ya que Logstash tiene que escribir datos en Elasticsearch. Si se utilizan comodines, Logstash intenta ejecutar todas las tuberías ubicadas en esa carpeta que coincidan con el comodín.

Privesc con tuberías escribibles

Antes de intentar elevar tus propios privilegios, debes comprobar qué usuario está ejecutando el servicio de logstash, ya que este será el usuario que poseerás después. Por defecto, el servicio de logstash se ejecuta con los privilegios del usuario logstash.

Comprueba si tienes uno de los permisos necesarios:

  • Tienes permisos de escritura en un archivo .conf de una tubería o
  • /etc/logstash/pipelines.yml contiene un comodín y se te permite escribir en la carpeta especificada

Además, se debe cumplir uno de los siguientes requisitos:

  • Puedes reiniciar el servicio de logstash o
  • /etc/logstash/logstash.yml contiene la entrada config.reload.automatic: true

Si se especifica un comodín, intenta crear un archivo que coincida con ese comodín. El siguiente contenido se puede escribir en el archivo para ejecutar comandos:

input {
  exec {
    command => "whoami"
    interval => 120
  }
}

output {
  file {
    path => "/tmp/output.log"
    codec => rubydebug
  }
}

El parámetro interval especifica el tiempo en segundos. En este ejemplo, el comando whoami se ejecuta cada 120 segundos. La salida del comando se guarda en /tmp/output.log.

Si /etc/logstash/logstash.yml contiene la entrada config.reload.automatic: true, solo tienes que esperar a que se ejecute el comando, ya que Logstash reconocerá automáticamente los nuevos archivos de configuración de canalización o cualquier cambio en las configuraciones de canalización existentes. De lo contrario, debes reiniciar el servicio de Logstash.

Si no se utiliza un comodín, puedes aplicar esos cambios a una configuración de canalización existente. ¡Asegúrate de no romper nada!

Referencias

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥