Airflow Configuration

Erlernen Sie AWS-Hacking von Grund auf mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

Konfigurationsdatei

Apache Airflow generiert eine Konfigurationsdatei auf allen Airflow-Maschinen namens airflow.cfg im Home-Verzeichnis des Airflow-Benutzers. Diese Konfigurationsdatei enthält Konfigurationsinformationen und kann interessante und sensible Informationen enthalten.

Es gibt zwei Möglichkeiten, auf diese Datei zuzugreifen: Durch Kompromittierung einer Airflow-Maschine oder Zugriff auf die Webkonsole.

Beachten Sie, dass die Werte innerhalb der Konfigurationsdatei möglicherweise nicht die verwendeten Werte sind, da Sie sie überschreiben können, indem Sie Umgebungsvariablen wie AIRFLOW__WEBSERVER__EXPOSE_CONFIG: 'true' setzen.

Wenn Sie Zugriff auf die Konfigurationsdatei im Webserver haben, können Sie die tatsächliche laufende Konfiguration auf derselben Seite überprüfen, auf der die Konfiguration angezeigt wird. Wenn Sie Zugriff auf eine Maschine innerhalb der Airflow-Umgebung haben, überprüfen Sie die Umgebung.

Einige interessante Werte, die beim Lesen der Konfigurationsdatei überprüft werden sollten:

[api]

  • access_control_allow_headers: Dies gibt die erlaubten Header für CORS an

  • access_control_allow_methods: Dies gibt die erlaubten Methoden für CORS an

  • access_control_allow_origins: Dies gibt die erlaubten Ursprünge für CORS an

  • auth_backend: Gemäß der Dokumentation können einige Optionen konfiguriert werden, wer auf die API zugreifen kann:

  • airflow.api.auth.backend.deny_all: Standardmäßig kann niemand auf die API zugreifen

  • airflow.api.auth.backend.default: Jeder kann darauf ohne Authentifizierung zugreifen

  • airflow.api.auth.backend.kerberos_auth: Zur Konfiguration der Kerberos-Authentifizierung

  • airflow.api.auth.backend.basic_auth: Für die grundlegende Authentifizierung

  • airflow.composer.api.backend.composer_auth: Verwendet die Komponistenauthentifizierung (GCP) (von hier).

  • composer_auth_user_registration_role: Dies gibt die Rolle an, die der Komponistenbenutzer in Airflow erhält (Op standardmäßig).

  • Sie können auch Ihre eigene Authentifizierungsmethode mit Python erstellen.

  • google_key_path: Pfad zum GCP-Dienstkonto-Schlüssel

[atlas]

  • password: Atlas-Passwort

  • username: Atlas-Benutzername

[celery]

  • flower_basic_auth : Anmeldeinformationen (Benutzer1:Passwort1,Benutzer2:Passwort2)

  • result_backend: Postgres-URL, die Anmeldeinformationen enthalten kann.

  • ssl_cacert: Pfad zum CACert

  • ssl_cert: Pfad zum Zertifikat

  • ssl_key: Pfad zum Schlüssel

[core]

  • dag_discovery_safe_mode: Standardmäßig aktiviert. Beim Entdecken von DAGs werden Dateien ignoriert, die die Zeichenfolgen DAG und airflow nicht enthalten.

  • fernet_key: Schlüssel zum Speichern verschlüsselter Variablen (symmetrisch)

  • hide_sensitive_var_conn_fields: Standardmäßig aktiviert, versteckt sensible Informationen von Verbindungen.

  • security: Welches Sicherheitsmodul verwendet werden soll (z. B. Kerberos)

[dask]

  • tls_ca: Pfad zum CA

  • tls_cert: Teil zum Zertifikat

  • tls_key: Teil zum TLS-Schlüssel

[kerberos]

  • ccache: Pfad zur CCache-Datei

  • forwardable: Standardmäßig aktiviert

[logging]

  • google_key_path: Pfad zu GCP JSON-Credentials.

[secrets]

  • backend: Vollständiger Klassenname des Secrets-Backends, um es zu aktivieren

  • backend_kwargs: Der backend_kwargs-Parameter wird in ein Dictionary geladen und an init der Secrets-Backend-Klasse übergeben.

[smtp]

  • smtp_password: SMTP-Passwort

  • smtp_user: SMTP-Benutzer

[webserver]

  • cookie_samesite: Standardmäßig ist es Lax, daher ist es bereits der schwächstmögliche Wert

  • cookie_secure: Setzt das Sicherheitsflag auf das Sitzungscookie

  • expose_config: Standardmäßig ist es False, wenn true, kann die Konfiguration aus der Webkonsole gelesen werden

  • expose_stacktrace: Standardmäßig ist es True, es zeigt Python-Tracebacks an (potenziell nützlich für einen Angreifer)

  • secret_key: Dies ist der Schlüssel, den Flask zum Signieren der Cookies verwendet (wenn Sie diesen haben, können Sie jeden Benutzer in Airflow darstellen)

  • web_server_ssl_cert: Pfad zum SSL-Zertifikat

  • web_server_ssl_key: Pfad zum SSL-Schlüssel

  • x_frame_enabled: Standardmäßig True, daher ist Clickjacking standardmäßig nicht möglich

Web-Authentifizierung

Standardmäßig wird die Web-Authentifizierung in der Datei webserver_config.py angegeben und konfiguriert als

AUTH_TYPE = AUTH_DB

Was bedeutet, dass die Authentifizierung gegen die Datenbank überprüft wird. Es sind jedoch auch andere Konfigurationen möglich, wie z.B.

AUTH_TYPE = AUTH_OAUTH

Um die Authentifizierung an Drittanbieterdienste zu überlassen.

Es gibt jedoch auch die Möglichkeit, anonymen Benutzern Zugriff zu gewähren, indem der folgende Parameter auf die gewünschte Rolle gesetzt wird:

AUTH_ROLE_PUBLIC = 'Admin'
Erlernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

Last updated