Gitea Sekuriteit
Tip
Leer & oefen AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Leer & oefen Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subscription plans!
- Sluit aan by die 💬 Discord group of die telegram group of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking tricks deur PRs in te dien by die HackTricks en HackTricks Cloud github repos.
Wat is Gitea
Gitea is ’n self-hosted gemeenskapsbestuurde liggewig kode hosting oplossing geskryf in Go.
.png)
Basiese Inligting
Laboratorium
Om ’n Gitea-instansie plaaslik te laat loop, kan jy net ’n docker-container uitvoer:
docker run -p 3000:3000 gitea/gitea
Verbind met poort 3000 om toegang tot die webblad te verkry.
Jy kan dit ook met kubernetes uitvoer:
helm repo add gitea-charts https://dl.gitea.io/charts/
helm install gitea gitea-charts/gitea
Ongeauthentiseerde Enumerasie
- 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.
Interne Exploitatie
Vir hierdie scenario gaan ons veronderstel dat jy toegang tot ’n github rekening verkry het.
Met Gebruiker Kredensiale/Web Koekie
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 aanmeld 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.
Note
Let daarop dat as jy slaag om die
i_like_giteakoekie te steel (huidiglik geconfigureer met SameSite: Lax) kan jy volledig die gebruiker naboots sonder om kredensiale of 2FA te benodig.
Met Gebruiker SSH Sleutel
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:
# Go to the the repository folder
# Get repo config and current user name and email
git config --list
As die gebruiker sy gebruikersnaam as sy gitea gebruikersnaam gekonfigureer het, kan jy toegang verkry tot die publieke sleutels wat hy gestel het in sy rekening op 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 deploy sleutels gestel word. Enigeen met toegang tot hierdie sleutel sal in staat wees om projekte vanaf ’n repository te begin. Gewoonlik in ’n bediener met verskillende deploy sleutels sal die plaaslike lêer ~/.ssh/config jou inligting gee oor watter sleutel verband hou.
GPG Sleutels
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:
gpg --list-secret-keys --keyid-format=long
Met Gebruikerstoken
Vir ’n inleiding oor Gebruikerstokens kyk na die basiese inligting.
’n Gebruikerstoken kan gebruik word in plaas van ’n wagwoord om teen die Gitea-bediener te verifieer via API. Dit sal volledige toegang oor die gebruiker hê.
Met Oauth Toepassing
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 phishingveldtog aanvaar.
Soos in die basiese inligting verduidelik, sal die toepassing volle toegang oor die gebruikersrekening hê.
Takbeskerming Omseiling
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 Merge Whitelist: As daar ’n samensmeltings-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 meng.
Let daarop dat as jy ’n org/repo admin is jy die beskermings kan omseil.
Enumereer Webhooks
Webhooks is in staat om spesifieke gitea-inligting na sekere plekke te stuur. Jy mag in staat wees om daardie kommunikasie te benut.
E however, 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, daardie webhook kan 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 te kontroleer kan jou toelaat om geheime en ander plekke te vind wat jy verder kan benut.
Webhooks kan op repo en org vlak gestel word.
Post Exploitatie
Binne die bediener
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 dumpsal gitea dump en ’n .zip-lêer genereer.gitea generate secret INTERNAL_TOKEN/JWT_SECRET/SECRET_KEY/LFS_JWT_SECRETsal ’n token van die aangeduide tipe genereer (volharding).gitea admin user change-password --username admin --password newpasswordVerander die wagwoord.gitea admin user create --username newuser --password superpassword --email user@user.user --admin --access-tokenSkep ’n nuwe admin gebruiker en kry ’n toegangstoken.
Tip
Leer & oefen AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Leer & oefen Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subscription plans!
- Sluit aan by die 💬 Discord group of die telegram group of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking tricks deur PRs in te dien by die HackTricks en HackTricks Cloud github repos.
HackTricks Cloud

