Logstash

Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)!

Autres façons de soutenir HackTricks:

Logstash

Logstash est utilisé pour rassembler, transformer et envoyer des journaux à travers un système appelé pipelines. Ces pipelines sont composés d'étapes d'entrée, de filtre et de sortie. Un aspect intéressant se présente lorsque Logstash fonctionne sur une machine compromise.

Configuration du pipeline

Les pipelines sont configurés dans le fichier /etc/logstash/pipelines.yml, qui répertorie les emplacements des configurations de 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

Ce fichier révèle où se trouvent les fichiers .conf, contenant les configurations de pipeline. Lors de l'utilisation d'un module de sortie Elasticsearch, il est courant que les pipelines incluent des informations d'identification Elasticsearch, qui possèdent souvent des privilèges étendus en raison du besoin de Logstash d'écrire des données dans Elasticsearch. Les jokers dans les chemins de configuration permettent à Logstash d'exécuter tous les pipelines correspondants dans le répertoire désigné.

Élévation de privilèges via les pipelines inscriptibles

Pour tenter une élévation de privilèges, identifiez d'abord l'utilisateur sous lequel le service Logstash est en cours d'exécution, généralement l'utilisateur logstash. Assurez-vous de remplir l'un de ces critères :

  • Posséder un accès en écriture à un fichier de configuration de pipeline .conf ou

  • Le fichier /etc/logstash/pipelines.yml utilise un joker, et vous pouvez écrire dans le dossier cible

De plus, l'une de ces conditions doit être remplie :

  • Capacité à redémarrer le service Logstash ou

  • Le fichier /etc/logstash/logstash.yml a config.reload.automatic: true défini

Étant donné un joker dans la configuration, la création d'un fichier correspondant à ce joker permet l'exécution de commandes. Par exemple :

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

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

Voici, interval détermine la fréquence d'exécution en secondes. Dans l'exemple donné, la commande whoami s'exécute toutes les 120 secondes, avec sa sortie dirigée vers /tmp/output.log.

Avec config.reload.automatic: true dans /etc/logstash/logstash.yml, Logstash détectera et appliquera automatiquement les nouvelles configurations de pipeline modifiées sans nécessiter de redémarrage. En l'absence de joker, des modifications peuvent toujours être apportées aux configurations existantes, mais il est conseillé de faire preuve de prudence pour éviter les perturbations.

Références

Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)!

Autres façons de soutenir HackTricks:

Dernière mise à jour