Gitea Security

Support HackTricks

What is Gitea

Gitea ni ufumbuzi wa mwenyeji wa jamii unaosimamiwa kwa urahisi wa kuhifadhi msimbo ulioandikwa kwa Go.

Basic Information

Lab

Ili kuendesha mfano wa Gitea kwa ndani unaweza tu kuendesha kontena la docker:

docker run -p 3000:3000 gitea/gitea

Connect to port 3000 to access the web page.

You could also run it with kubernetes:

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

Uainishaji Usio na Uthibitisho

Kumbuka kwamba kwa kawaida Gitea inaruhusu watumiaji wapya kujiandikisha. Hii haitatoa ufikiaji wa kuvutia kwa watumiaji wapya juu ya repos za mashirika/watumiaji wengine, lakini mtumiaji aliyeingia anaweza kuwa na uwezo wa kuangalia repos au mashirika zaidi.

Ukatili wa Ndani

Kwa hali hii tunaenda kudhani kwamba umepata ufikiaji wa akaunti ya github.

Kwa Misingi ya Mtumiaji/Keki ya Mtandao

Ikiwa kwa namna fulani tayari una misingi ya mtumiaji ndani ya shirika (au umepora keki ya kikao) unaweza kuingia tu na kuangalia ni idhana gani unazo juu ya repos, katika timu zipi ulizo, orodhesha watumiaji wengine, na repos zimewezeshwaje.

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

Kumbuka kwamba ikiwa utafanikiwa kupora keki ya i_like_gitea (sasa imewekwa na SameSite: Lax) unaweza kujifanya kuwa mtumiaji bila kuhitaji misingi au 2FA.

Kwa Funguo ya SSH ya Mtumiaji

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

Kwa funguo hii unaweza kufanya mabadiliko katika hifadhi ambapo mtumiaji ana baadhi ya mamlaka, hata hivyo huwezi kuitumia kufikia gitea api ili kuainisha mazingira. Hata hivyo, unaweza kuainisha mipangilio ya ndani ili kupata taarifa kuhusu repos na mtumiaji ulionao ufikiaji:

# 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 hili kuthibitisha kuwa funguo binafsi ulizozipata zinaweza kutumika.

Funguo za SSH pia zinaweza kuwekwa katika hifadhi kama funguo za kutekeleza. Mtu yeyote mwenye ufikiaji wa funguo hii ataweza kuanzisha miradi kutoka kwenye hifadhi. Kawaida katika seva yenye funguo tofauti za kutekeleza, faili ya ndani ~/.ssh/config itakupa habari kuhusu funguo inayohusiana.

Funguo za GPG

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

Angalia kwa ndani ikiwa mtumiaji wa sasa ana funguo yoyote kwa:

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

Kwa Kutumia Token ya Mtumiaji

Kwa utangulizi kuhusu Token za Mtumiaji angalia taarifa za msingi.

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

Kwa Kutumia Oauth Application

Kwa utangulizi kuhusu Programu za Oauth za Gitea angalia taarifa za msingi.

Mshambuliaji anaweza kuunda Programu ya Oauth yenye uharibifu ili kupata data/hatua za kipaumbele za watumiaji wanaoweza kuzikubali kama sehemu ya kampeni ya uvuvi.

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

Kupita Ulinzi wa Tawi

Katika Github tuna github actions ambazo kwa default hupata token yenye ufikiaji wa kuandika juu ya repo ambayo inaweza kutumika kupita ulinzi wa tawi. Katika kesi hii hiyo haipo, hivyo kupita ni mdogo zaidi. Lakini hebu tuangalie kile kinachoweza kufanywa:

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

  • Orodha ya Pus h iliyozuiwa: Kwa njia ile ile, ikiwa wewe ni sehemu ya orodha hii sukuma kwenye tawi.

  • Washa Orodha ya Mchanganyiko: Ikiwa kuna orodha ya mchanganyiko, unahitaji kuwa ndani yake.

  • Hitaji idhini ni kubwa kuliko 0: Kisha... unahitaji kumaliza mtumiaji mwingine.

  • Zuia idhini kwa watumiaji waliotajwa: Ikiwa ni watumiaji waliotajwa pekee wanaweza kuidhinisha... unahitaji kumaliza mtumiaji mwingine aliye ndani ya orodha hiyo.

  • Futa idhini za zamani: Ikiwa idhini haziondolewa na komiti mpya, unaweza kuiba PR iliyothibitishwa tayari ili kuingiza msimbo wako na kuunganisha PR.

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

Kuorodhesha Webhooks

Webhooks zinaweza kutuma taarifa maalum za gitea mahali fulani. Unaweza kuwa na uwezo wa kuitumia mawasiliano hayo. Hata hivyo, kawaida siri ambayo huwezi kuipata imewekwa katika webhook ambayo itazuia watumiaji wa nje wanaojua URL ya webhook lakini si siri kuweza kuitumia webhook hiyo. Lakini katika matukio mengine, watu badala ya kuweka siri mahali pake, wanaweza kuweka katika URL kama parameter, hivyo kuangalia URLs kunaweza kukuruhusu kupata siri na maeneo mengine ambayo unaweza kuendeleza zaidi.

Webhooks zinaweza kuwekwa katika repo na katika kiwango cha org.

Baada ya Kutumia

Ndani ya seva

Ikiwa kwa namna fulani umeweza kuingia ndani ya seva ambapo gitea inafanya kazi unapaswa kutafuta faili ya usanidi wa gitea. Kwa default inapatikana 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:

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

  • sessions ndani ya folda za sessions: Ukikimbia 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 kupata/kubadilisha taarifa:

  • gitea dump itatoa gitea na kuunda faili .zip.

  • gitea generate secret INTERNAL_TOKEN/JWT_SECRET/SECRET_KEY/LFS_JWT_SECRET itaunda 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 pata token ya ufikiaji.

Support HackTricks

Last updated