Gitea Security
Gitea ni nini
Gitea ni suluhisho la mwenyeji wa msimbo linalosimamiwa na jamii lenye uzito mdogo lililoandikwa kwa Go.
Taarifa za Msingi
Basic Gitea InformationMaabara
Kuendesha Gitea instance kwa ndani unaweza tu kuendesha kontena la docker:
Unganisha na bandari 3000 kufikia ukurasa wa wavuti.
Unaweza pia kuiendesha na kubernetes:
Unauthenticated Enumeration
Repos za umma: http://localhost:3000/explore/repos
Watumiaji waliosajiliwa: http://localhost:3000/explore/users
Mashirika yaliyosajiliwa: http://localhost:3000/explore/organizations
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.
With User Credentials/Web Cookie
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:
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:
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 .zipgitea 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 nenosirigitea admin user create --username newuser --password superpassword --email user@user.user --admin --access-token
Unda mtumiaji mpya wa admin na upate token ya ufikiaji
Last updated