hacktricks/linux-hardening/privilege-escalation/logstash.md

5.4 KiB

Aprende hacking en AWS de cero a héroe con htARTE (HackTricks AWS Red Team Expert)!

Otras formas de apoyar a HackTricks:

Información Básica

Logstash se utiliza para recopilar, transformar y emitir registros. Esto se realiza 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 del pipeline /etc/logstash/pipelines.yml especifica las ubicaciones de los pipelines activos:

# 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 pipelines configuradas. Si se utiliza el módulo de salida Elasticsearch, es probable que las pipelines contengan credenciales válidas para una instancia de Elasticsearch. Estas credenciales suelen tener más privilegios, ya que Logstash tiene que escribir datos en Elasticsearch. Si se utilizan comodines, Logstash intenta ejecutar todas las pipelines ubicadas en esa carpeta que coincidan con el comodín.

Privesc con pipelines escribibles

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

Comprueba si tienes uno de los derechos requeridos:

  • Tienes permisos de escritura en un archivo .conf de una pipeline o
  • /etc/logstash/pipelines.yml contiene un comodín y tienes permiso para escribir en la carpeta especificada

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

  • Eres capaz de 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 puede ser escrito en el archivo para ejecutar comandos:

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

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

El intervalo 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 hasta que se ejecute el comando, ya que Logstash reconocerá automáticamente nuevos archivos de configuración de pipeline o cualquier cambio en las configuraciones de pipeline existentes. De lo contrario, inicia de nuevo el servicio de logstash.

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

Referencias

Aprende hacking en AWS de cero a héroe con htARTE (HackTricks AWS Red Team Expert)!

Otras formas de apoyar a HackTricks: