Gitea Security

Support HackTricks

Gitea ni nini

Gitea ni suluhisho la mwenyeji wa msimbo linalosimamiwa na jamii lenye uzito mdogo lililoandikwa kwa Go.

Taarifa za Msingi

Basic Gitea Information

Maabara

Kuendesha Gitea instance kwa ndani unaweza tu kuendesha kontena la docker:

docker run -p 3000:3000 gitea/gitea

Unganisha na bandari 3000 kufikia ukurasa wa wavuti.

Unaweza pia kuiendesha na kubernetes:

helm repo add gitea-charts https://dl.gitea.io/charts/
helm install gitea gitea-charts/gitea

Unauthenticated Enumeration

Kumbuka kwamba kwa chaguo-msingi Gitea inaruhusu watumiaji wapya kujisajili. Hii haitoi ufikiaji maalum kwa watumiaji wapya juu ya repos za mashirika/watumiaji wengine, lakini mtumiaji aliyeingia anaweza kuwa na uwezo wa kuona repos au mashirika zaidi.

Internal Exploitation

Kwa hali hii tunadhani kwamba umepata ufikiaji fulani kwa akaunti ya github.

Ikiwa kwa namna fulani tayari una sifa za mtumiaji ndani ya shirika (au umeiba cookie ya kikao) unaweza kuingia tu na kuangalia ni ruhusa gani unazo juu ya repos gani, katika vikundi gani uko, orodhesha watumiaji wengine, na jinsi repos zinavyolindwa.

Kumbuka kwamba 2FA inaweza kutumika hivyo utaweza tu kufikia taarifa hii ikiwa unaweza pia kupita ukaguzi huo.

Kumbuka kwamba ikiwa utaweza kuiba cookie ya i_like_gitea (kwa sasa imewekwa na SameSite: Lax) unaweza kumuiga mtumiaji kabisa bila kuhitaji sifa au 2FA.

With User SSH Key

Gitea inaruhusu watumiaji kuweka funguo za SSH ambazo zitatumika kama njia ya uthibitishaji kupeleka msimbo kwa niaba yao (hakuna 2FA inayotumika).

Kwa ufunguo huu unaweza kufanya mabadiliko katika repos ambapo mtumiaji ana ruhusa fulani, hata hivyo huwezi kuitumia kufikia gitea api kuorodhesha mazingira. Hata hivyo, unaweza kuorodhesha mipangilio ya ndani kupata taarifa kuhusu repos na mtumiaji unayefikia:

# Go to the the repository folder
# Get repo config and current user name and email
git config --list

Ikiwa mtumiaji ameweka jina lake la mtumiaji kama jina lake la gitea unaweza kufikia funguo za umma alizoweka kwenye akaunti yake katika https://github.com/<gitea_username>.keys, unaweza kuangalia hii kuthibitisha ufunguo wa faragha uliopata unaweza kutumika.

Funguo za SSH pia zinaweza kuwekwa kwenye hazina kama deploy keys. Mtu yeyote mwenye ufikiaji wa ufunguo huu ataweza kuanzisha miradi kutoka kwenye hazina. Kawaida kwenye seva yenye funguo tofauti za deploy faili la ndani ~/.ssh/config litakupa taarifa kuhusu ufunguo unahusiana.

Funguo za GPG

Kama ilivyoelezwa hapa wakati mwingine inahitajika kusaini commits au unaweza kugunduliwa.

Angalia ndani ya nchi kama mtumiaji wa sasa ana ufunguo wowote na:

gpg --list-secret-keys --keyid-format=long

Kwa Token ya Mtumiaji

Kwa utangulizi kuhusu User Tokens angalia taarifa za msingi.

Token ya mtumiaji inaweza kutumika badala ya nenosiri ili kuthibitisha dhidi ya seva ya Gitea kupitia API. itakuwa na ufikiaji kamili juu ya mtumiaji.

Kwa Oauth Application

Kwa utangulizi kuhusu Gitea Oauth Applications angalia taarifa za msingi.

Mshambulizi anaweza kuunda Oauth Application mbaya ili kupata data/hatua za watumiaji waliokubali, labda kama sehemu ya kampeni ya udukuzi.

Kama ilivyoelezwa katika taarifa za msingi, programu itakuwa na ufikiaji kamili juu ya akaunti ya mtumiaji.

Kuepuka Ulinzi wa Tawi

Katika Github tuna github actions ambazo kwa default hupata token yenye ufikiaji wa kuandika juu ya repo ambayo inaweza kutumika kuepuka ulinzi wa tawi. Katika kesi hii hiyo haipo, hivyo njia za kuepuka ni chache. Lakini tuangalie nini kinaweza kufanyika:

  • Wezesha Push: Ikiwa mtu yeyote mwenye ufikiaji wa kuandika anaweza kusukuma kwenye tawi, sukuma tu.

  • Whitelist Restricted Push: Vivyo hivyo, ikiwa wewe ni sehemu ya orodha hii sukuma kwenye tawi.

  • Wezesha Merge Whitelist: Ikiwa kuna orodha ya merge, unahitaji kuwa ndani yake.

  • Hitaji idhini ni kubwa kuliko 0: Basi... unahitaji kumkomboa mtumiaji mwingine.

  • Zuia idhini kwa walioorodheshwa: Ikiwa ni watumiaji walioorodheshwa tu wanaweza kuidhinisha... unahitaji kumkomboa mtumiaji mwingine aliye ndani ya orodha hiyo.

  • Ondoa idhini zilizopitwa na wakati: Ikiwa idhini haziondolewi na commits mpya, unaweza kuteka PR iliyokubaliwa tayari ili kuingiza msimbo wako na kuunganisha PR.

Kumbuka kwamba ikiwa wewe ni admin wa org/repo unaweza kuepuka ulinzi.

Tambua Webhooks

Webhooks zinaweza kutuma taarifa maalum za gitea kwa baadhi ya maeneo. Unaweza kuwa na uwezo wa kudukua mawasiliano hayo. Hata hivyo, kawaida siri ambayo huwezi kupata imewekwa katika webhook ambayo itazuia watumiaji wa nje wanaojua URL ya webhook lakini si siri kudukua webhook hiyo. Lakini katika baadhi ya matukio, watu badala ya kuweka siri mahali pake, wanaweka katika URL kama parameter, hivyo kuangalia URL kunaweza kukuruhusu kupata siri na maeneo mengine unayoweza kudukua zaidi.

Webhooks zinaweza kuwekwa katika repo na katika ngazi ya org.

Baada ya Udukuzi

Ndani ya seva

Ikiwa kwa namna fulani umeweza kuingia ndani ya seva ambapo gitea inaendesha unapaswa kutafuta faili ya usanidi wa gitea. Kwa default iko katika /data/gitea/conf/app.ini

Katika faili hii unaweza kupata funguo na nenosiri.

Katika njia ya gitea (kwa default: /data/gitea) unaweza pia kupata taarifa za kuvutia kama:

  • sqlite DB: Ikiwa gitea haitumii db ya nje itatumia sqlite db

  • sessions ndani ya folda ya sessions: Ukiendesha cat sessions/*/*/* unaweza kuona majina ya watumiaji walioingia (gitea inaweza pia kuhifadhi sessions ndani ya DB).

  • jwt private key ndani ya folda ya jwt

  • Taarifa zaidi nyeti zinaweza kupatikana katika folda hii

Ikiwa uko ndani ya seva unaweza pia kutumia gitea binary kufikia/kubadilisha taarifa:

  • gitea dump itadump gitea na kuzalisha faili ya .zip

  • gitea generate secret INTERNAL_TOKEN/JWT_SECRET/SECRET_KEY/LFS_JWT_SECRET itazalisha token ya aina iliyoonyeshwa (uhifadhi)

  • gitea admin user change-password --username admin --password newpassword Badilisha nenosiri

  • gitea admin user create --username newuser --password superpassword --email user@user.user --admin --access-token Unda mtumiaji mpya wa admin na upate token ya ufikiaji

Support HackTricks

Last updated