Gitea Security
Last updated
Last updated
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Gitea is 'n self-gehoste gemeenskapsbestuurde liggewig kode hosting oplossing geskryf in Go.
Om 'n Gitea instansie plaaslik te laat loop, kan jy net 'n docker-container laat loop:
Verbind met poort 3000 om die webblad te bekom.
Jy kan dit ook met kubernetes uitvoer:
Publieke repos: http://localhost:3000/explore/repos
Geregistreerde gebruikers: http://localhost:3000/explore/users
Geregistreerde Organisasies: http://localhost:3000/explore/organizations
Let daarop dat Gitea standaard nuwe gebruikers toelaat om te registreer. Dit sal nie spesiaal interessante toegang aan die nuwe gebruikers oor ander organisasies/gebruiker repos gee nie, maar 'n ingelogde gebruiker mag in staat wees om meer repos of organisasies te visualiseer.
Vir hierdie scenario gaan ons veronderstel dat jy toegang tot 'n github rekening verkry het.
As jy op een of ander manier reeds kredensiale vir 'n gebruiker binne 'n organisasie het (of jy het 'n sessie koekie gesteel) kan jy net inlog en kyk watter toestemmings jy het oor watter repos, in watter spanne jy is, lys ander gebruikers, en hoe die repos beskerm word.
Let daarop dat 2FA gebruik mag word so jy sal slegs toegang tot hierdie inligting hê as jy ook daardie toets kan slaag.
Let daarop dat as jy slaag om die i_like_gitea
koekie te steel (huidiglik geconfigureer met SameSite: Lax) kan jy volledig die gebruiker naboots sonder om kredensiale of 2FA te benodig.
Gitea laat gebruikers toe om SSH sleutels in te stel wat as authentikasie metode gebruik sal word om kode namens hulle te ontplooi (geen 2FA word toegepas nie).
Met hierdie sleutel kan jy veranderings in repositories waar die gebruiker sekere voorregte het, uitvoer, egter kan jy dit nie gebruik om toegang tot die gitea api te verkry om die omgewing te enumerate nie. Jy kan egter lokale instellings enumerate om inligting oor die repos en gebruiker waartoe jy toegang het, te verkry:
As die gebruiker sy gebruikersnaam as sy gitea gebruikersnaam gekonfigureer het, kan jy toegang verkry tot die publieke sleutels wat hy in sy rekening ingestel het in https://github.com/<gitea_username>.keys, jy kan dit nagaan om te bevestig dat die private sleutel wat jy gevind het, gebruik kan word.
SSH sleutels kan ook in repositories as ontplooi sleutels ingestel word. Enigeen met toegang tot hierdie sleutel sal in staat wees om projekte vanaf 'n repository te begin. Gewoonlik in 'n bediener met verskillende ontplooi sleutels sal die plaaslike lêer ~/.ssh/config
jou inligting gee oor watter sleutel verband hou.
Soos verduidelik hier is dit soms nodig om die verbintenisse te teken of jy mag ontdek word.
Kontroleer plaaslik of die huidige gebruiker enige sleutel het met:
Vir 'n inleiding oor Gebruikerstokens kyk na die basiese inligting.
'n Gebruikerstoken kan gebruik word in plaas van 'n wagwoord om te verifieer teen die Gitea-bediener via API. Dit sal volledige toegang oor die gebruiker hê.
Vir 'n inleiding oor Gitea Oauth Toepassings kyk na die basiese inligting.
'n Aanvaller mag 'n kwaadwillige Oauth Toepassing skep om toegang te verkry tot bevoorregte data/aksies van die gebruikers wat hulle waarskynlik as deel van 'n phishing veldtog aanvaar.
Soos verduidelik in die basiese inligting, sal die toepassing volledige toegang oor die gebruikersrekening hê.
In Github het ons github aksies wat standaard 'n token met skrywe toegang oor die repo kry wat gebruik kan word om takbeskermings te omseil. In hierdie geval bestaan dit nie, so die omseilings is meer beperk. Maar kom ons kyk na wat gedoen kan word:
Aktiveer Push: As iemand met skrywe toegang na die tak kan push, push net daarna.
Whitelist Beperkte Push: Op dieselfde manier, as jy deel van hierdie lys is, push na die tak.
Aktiveer Samevoeg Whitelist: As daar 'n samevoeg whitelist is, moet jy binne dit wees.
Vereis goedkeuring is groter as 0: Dan... moet jy 'n ander gebruiker kompromitteer.
Beperk goedkeuring tot whitelisted: As slegs whitelisted gebruikers kan goedkeur... moet jy 'n ander gebruiker kompromitteer wat binne daardie lys is.
Verwerp verouderde goedkeuring: As goedkeuring nie verwyder word met nuwe verbintenisse nie, kan jy 'n reeds goedgekeurde PR oorneem om jou kode in te voeg en die PR te saamvoeg.
Let daarop dat as jy 'n org/repo admin is jy die beskermings kan omseil.
Webhooks is in staat om spesifieke gitea-inligting na sekere plekke te stuur. Jy mag in staat wees om daardie kommunikasie te benut. Echter, gewoonlik word 'n geheim wat jy nie kan herwin nie in die webhook gestel wat voorkom dat eksterne gebruikers wat die URL van die webhook ken maar nie die geheim nie, om daardie webhook te benut. Maar in sommige gevalle, in plaas daarvan om die geheim op sy plek te stel, stel mense dit in die URL as 'n parameter, so om die URL's na te gaan kan jou toelaat om geheime te vind en ander plekke wat jy verder kan benut.
Webhooks kan op repo en org vlak gestel word.
As jy op een of ander manier daarin geslaag het om binne die bediener waar gitea loop te kom, moet jy soek na die gitea konfigurasie lêer. Standaard is dit geleë in /data/gitea/conf/app.ini
In hierdie lêer kan jy sleutels en wagwoorde vind.
In die gitea pad (standaard: /data/gitea) kan jy ook interessante inligting vind soos:
Die sqlite DB: As gitea nie 'n eksterne db gebruik nie, sal dit 'n sqlite db gebruik.
Die sessies binne die sessies gids: Deur cat sessions/*/*/*
te loop, kan jy die gebruikersname van die ingelogde gebruikers sien (gitea kan ook die sessies binne die DB stoor).
Die jwt private sleutel binne die jwt gids.
Meer sensitiewe inligting kan in hierdie gids gevind word.
As jy binne die bediener is, kan jy ook die gitea
binêre gebruik om inligting te bekom/wysig:
gitea dump
sal gitea dump en 'n .zip lêer genereer.
gitea generate secret INTERNAL_TOKEN/JWT_SECRET/SECRET_KEY/LFS_JWT_SECRET
sal 'n token van die aangeduide tipe genereer (volharding).
gitea admin user change-password --username admin --password newpassword
Verander die wagwoord.
gitea admin user create --username newuser --password superpassword --email user@user.user --admin --access-token
Skep 'n nuwe admin gebruiker en kry 'n toegangstoken.
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)