Apache Airflow Security
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Apache Airflow služi kao platforma za orchestraciju i zakazivanje podataka ili radnih tokova. Termin "orchestracija" u kontekstu podataka označava proces organizovanja, koordinacije i upravljanja složenim radnim tokovima podataka koji potiču iz različitih izvora. Primarna svrha ovih orkestriranih radnih tokova podataka je da obezbede obrađene i upotrebljive skupove podataka. Ovi skupovi podataka se široko koriste u mnogim aplikacijama, uključujući, ali ne ograničavajući se na alate za poslovnu inteligenciju, modele podataka i mašinskog učenja, koji su svi osnovni za funkcionisanje aplikacija velikih podataka.
U suštini, Apache Airflow će vam omogućiti da zakazujete izvršenje koda kada se nešto (događaj, cron) dogodi.
Možete koristiti docker-compose konfiguracioni fajl sa https://raw.githubusercontent.com/apache/airflow/main/docs/apache-airflow/start/docker-compose.yaml da pokrenete kompletnu apache airflow docker sredinu. (Ako ste na MacOS-u, obavezno dodelite najmanje 6GB RAM-a docker VM-u).
Jedan jednostavan način da pokrenete apache airflow je da ga pokrenete sa minikube:
Airflow može čuvati osetljive informacije u svojoj konfiguraciji ili možete pronaći slabe konfiguracije:
Airflow ConfigurationPre nego što počnete da napadate Airflow, trebali biste razumeti kako funkcionišu dozvole:
Airflow RBACAko imate pristup web konzoli, možda ćete moći da pristupite nekim ili svim sledećim informacijama:
Varijable (Prilagođene osetljive informacije mogu biti sačuvane ovde)
Konekcije (Prilagođene osetljive informacije mogu biti sačuvane ovde)
Pristupite im na http://<airflow>/connection/list/
Konfiguracija (Osetljive informacije kao što su secret_key
i lozinke mogu biti sačuvane ovde)
Lista korisnika i uloga
Kod svakog DAG-a (koji može sadržati zanimljive informacije)
Varijable se mogu čuvati u Airflow-u tako da DAG-ovi mogu pristupiti njihovim vrednostima. Slično je tajnama drugih platformi. Ako imate dovoljno dozvola, možete im pristupiti u GUI-u na http://<airflow>/variable/list/
.
Airflow po defaultu prikazuje vrednost varijable u GUI-u, međutim, prema ovome, moguće je postaviti listu varijabli čija će se vrednost pojaviti kao zvezdice u GUI-u.
Međutim, ove vrednosti se i dalje mogu pribaviti putem CLI (morate imati pristup bazi podataka), izvršavanjem proizvoljnog DAG-a, API pristupom tački varijabli (API mora biti aktiviran), i čak i samim GUI-em! Da biste pristupili tim vrednostima iz GUI-a, jednostavno izaberite varijable kojima želite da pristupite i kliknite na Akcije -> Izvezi. Drugi način je da izvršite bruteforce na skrivenoj vrednosti koristeći filtriranje pretrage dok je ne dobijete:
Ako je konfiguracija expose_config
postavljena na True, iz uloge Korisnik i naviše mogu čitati konfiguraciju na web-u. U ovoj konfiguraciji se pojavljuje secret_key
, što znači da svaki korisnik sa ovim važećim može napraviti svoj potpisani kolačić da bi se pretvarao da je bilo koji drugi korisnički nalog.
Ako imate pristup za pisanje na mestu gde se DAG-ovi čuvaju, možete jednostavno napraviti jedan koji će vam poslati obrnuti shell. Imajte na umu da će ovaj obrnuti shell biti izvršen unutar airflow radničkog kontejnera:
Ako postavite nešto da bude izvršeno u korenu koda, u trenutku pisanja ovog teksta, biće izvršeno od strane scheduler-a nakon nekoliko sekundi nakon što ga stavite unutar DAG-ove fascikle.
Ako uspete da kompromitujete mašinu unutar DAG klastera, možete kreirati nove DAG skripte u dags/
folderu i one će biti replicirane na ostalim mašinama unutar DAG klastera.
Kada izvršavate DAG iz GUI-a, možete proslediti argumente njemu. Stoga, ako DAG nije pravilno kodiran, mogao bi biti ranjiv na Injekciju Komandi. To se desilo u ovom CVE: https://www.exploit-db.com/exploits/49927
Sve što treba da znate da počnete da tražite injekcije komandi u DAG-ovima je da se parametri pristupaju sa kodom dag_run.conf.get("param_name")
.
Štaviše, ista ranjivost može se javiti sa varijablama (imajte na umu da sa dovoljno privilegija možete kontrolisati vrednost varijabli u GUI-u). Varijable se pristupaju sa:
Ako se koriste, na primer, unutar bash komande, mogli biste izvršiti injekciju komande.
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)