Gitea 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)
Gitea je rešenje za hostovanje koda koje se lako upravlja i koje se može samostalno hostovati, napisano u Go.
Da biste pokrenuli Gitea instancu lokalno, možete jednostavno pokrenuti docker kontejner:
Povežite se na port 3000 da biste pristupili veb stranici.
Takođe možete da ga pokrenete sa kubernetes:
Javne repozitorije: http://localhost:3000/explore/repos
Registrovani korisnici: http://localhost:3000/explore/users
Registrovane organizacije: http://localhost:3000/explore/organizations
Imajte na umu da podrazumevano Gitea omogućava novim korisnicima da se registruju. Ovo neće pružiti posebno zanimljiv pristup novim korisnicima u odnosu na druge organizacije/korisnike repozitorije, ali prijavljeni korisnik može biti u mogućnosti da vidi više repozitorija ili organizacija.
Za ovaj scenario pretpostavićemo da ste dobili neki pristup github nalogu.
Ako nekako već imate akreditive za korisnika unutar organizacije (ili ste ukrali kolačić sesije) možete samo da se prijavite i proverite koje dozvole imate nad kojim repozitorijama, u kojim timovima se nalazite, lista drugih korisnika, i kako su repozitoriji zaštićeni.
Imajte na umu da se 2FA može koristiti tako da ćete moći da pristupite ovim informacijama samo ako takođe možete proći tu proveru.
Imajte na umu da ako uspete da ukradete i_like_gitea
kolačić (trenutno konfigurisan sa SameSite: Lax) možete potpuno imitirati korisnika bez potrebe za akreditivima ili 2FA.
Gitea omogućava korisnicima da postave SSH ključeve koji će se koristiti kao metoda autentifikacije za implementaciju koda u njihovo ime (2FA se ne primenjuje).
Sa ovim ključem možete izvršiti promene u repozitorijima gde korisnik ima neka prava, međutim ne možete ga koristiti za pristup gitea API-ju da enumerišete okruženje. Međutim, možete enumerisati lokalne postavke da dobijete informacije o repozitorijima i korisniku kojem imate pristup:
Ako je korisnik konfigurisao svoje korisničko ime kao svoje gitea korisničko ime, možete pristupiti javnim ključevima koje je postavio na svom nalogu na https://github.com/<gitea_username>.keys, možete proveriti ovo da potvrdite da li se privatni ključ koji ste pronašli može koristiti.
SSH ključevi se takođe mogu postaviti u repozitorijume kao deploy ključevi. Svako ko ima pristup ovom ključiću moći će da pokrene projekte iz repozitorijuma. Obično, na serveru sa različitim deploy ključevima, lokalna datoteka ~/.ssh/config
će vam dati informacije o tome kojem ključu pripada.
Kao što je objašnjeno ovde, ponekad je potrebno potpisati commit-e ili biste mogli biti otkriveni.
Proverite lokalno da li trenutni korisnik ima neki ključ sa:
Za uvod o korisničkim tokenima proverite osnovne informacije.
Korisnički token može biti korišćen umesto lozinke za autentifikaciju protiv Gitea servera putem API-ja. Imaće potpun pristup korisniku.
Za uvod o Gitea Oauth aplikacijama proverite osnovne informacije.
Napadač može kreirati malicious Oauth aplikaciju da bi pristupio privilegovanim podacima/akcijama korisnika koji je verovatno prihvataju kao deo phishing kampanje.
Kao što je objašnjeno u osnovnim informacijama, aplikacija će imati potpun pristup korisničkom nalogu.
U Github-u imamo github akcije koje po defaultu dobijaju token sa pristupom za pisanje nad repozitorijumom koji se može koristiti za zaobilaženje zaštite grana. U ovom slučaju to ne postoji, tako da su zaobilaženja ograničenija. Ali hajde da pogledamo šta može da se uradi:
Omogući Push: Ako bilo ko sa pristupom za pisanje može da pošalje na granu, samo pošaljite na nju.
Whitelist Restriktivni Push: Na isti način, ako ste deo ove liste, pošaljite na granu.
Omogući Merge Whitelist: Ako postoji whitelist za spajanje, morate biti unutar nje.
Zahtevajte odobrenja veće od 0: Tada... morate kompromitovati drugog korisnika.
Ograničite odobrenja na whitelisted: Ako samo whitelisted korisnici mogu odobriti... morate kompromitovati drugog korisnika koji je unutar te liste.
Odbaci zastarela odobrenja: Ako odobrenja nisu uklonjena novim commit-ima, mogli biste preuzeti već odobren PR da ubacite svoj kod i spojite PR.
Napomena: ako ste admin org/repo možete zaobići zaštite.
Webhook-ovi su sposobni da pošalju specifične gitea informacije na neka mesta. Možda ćete moći da iskoristite tu komunikaciju. Međutim, obično se postavlja tajna koju ne možete dobiti u webhook-u koja će sprečiti spoljne korisnike koji znaju URL webhook-a, ali ne i tajnu, da iskoriste taj webhook. Ali u nekim prilikama, ljudi umesto da postave tajnu na njeno mesto, postavljaju je u URL kao parametar, tako da proveravanje URL-ova može omogućiti da pronađete tajne i druga mesta koja biste mogli dalje iskoristiti.
Webhook-ovi se mogu postaviti na repo i na org nivou.
Ako ste nekako uspeli da uđete u server na kojem Gitea radi, trebali biste potražiti Gitea konfiguracioni fajl. Po defaultu se nalazi u /data/gitea/conf/app.ini
U ovom fajlu možete pronaći ključeve i lozinke.
U Gitea putanji (po defaultu: /data/gitea) možete pronaći i zanimljive informacije kao što su:
sqlite DB: Ako Gitea ne koristi eksternu bazu podataka, koristiće sqlite bazu.
sesije unutar foldera sesija: Pokretanjem cat sessions/*/*/*
možete videti korisnička imena prijavljenih korisnika (Gitea takođe može sačuvati sesije unutar DB).
jwt privatni ključ unutar jwt foldera.
Više osetljivih informacija može se pronaći u ovom folderu.
Ako ste unutar servera, takođe možete koristiti gitea
binarni fajl za pristup/modifikaciju informacija:
gitea dump
će dumpovati gitea i generisati .zip fajl.
gitea generate secret INTERNAL_TOKEN/JWT_SECRET/SECRET_KEY/LFS_JWT_SECRET
će generisati token naznačenog tipa (persistence).
gitea admin user change-password --username admin --password newpassword
promenite lozinku.
gitea admin user create --username newuser --password superpassword --email user@user.user --admin --access-token
kreirajte novog admin korisnika i dobijte pristupni token.
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)