hacktricks/linux-hardening/privilege-escalation/logstash.md
2023-06-06 18:56:34 +00:00

4.8 KiB

Informações Básicas

O Logstash é usado para coletar, transformar e produzir logs. Isso é realizado usando pipelines, que contêm módulos de entrada, filtro e saída. O serviço se torna interessante quando se compromete uma máquina que está executando o Logstash como serviço.

Pipelines

O arquivo de configuração da pipeline /etc/logstash/pipelines.yml especifica as localizações das pipelines ativas:

# 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

Aqui você pode encontrar os caminhos para os arquivos .conf, que contêm as pipelines configuradas. Se o módulo de saída do Elasticsearch for usado, as pipelines provavelmente contêm credenciais válidas para uma instância do Elasticsearch. Essas credenciais geralmente possuem mais privilégios, já que o Logstash precisa escrever dados no Elasticsearch. Se curingas forem usados, o Logstash tenta executar todas as pipelines localizadas naquela pasta que correspondem ao curinga.

Privesc com pipelines graváveis

Antes de tentar elevar seus próprios privilégios, você deve verificar qual usuário está executando o serviço do logstash, já que este será o usuário que você possuirá posteriormente. Por padrão, o serviço do logstash é executado com os privilégios do usuário logstash.

Verifique se você tem um dos direitos necessários:

  • Você tem permissões de escrita em um arquivo .conf de pipeline ou
  • /etc/logstash/pipelines.yml contém um curinga e você tem permissão para escrever na pasta especificada

Além disso, um dos requisitos deve ser atendido:

  • Você é capaz de reiniciar o serviço do logstash ou
  • /etc/logstash/logstash.yml contém a entrada config.reload.automatic: true

Se um curinga for especificado, tente criar um arquivo que corresponda a esse curinga. O seguinte conteúdo pode ser escrito no arquivo para executar comandos:

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

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

O intervalo especifica o tempo em segundos. Neste exemplo, o comando whoami é executado a cada 120 segundos. A saída do comando é salva em /tmp/output.log.

Se /etc/logstash/logstash.yml contém a entrada config.reload.automatic: true, você só precisa esperar até que o comando seja executado, já que o Logstash reconhecerá automaticamente novos arquivos de configuração de pipeline ou quaisquer alterações nas configurações de pipeline existentes. Caso contrário, acione uma reinicialização do serviço do logstash.

Se nenhum caractere curinga for usado, você pode aplicar essas alterações a uma configuração de pipeline existente. Certifique-se de não quebrar as coisas!

Referências

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