Gitea 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.
Gitea Nedir
Gitea, Go dilinde yazılmış kendinize ait, topluluk tarafından yönetilen hafif bir kod barındırma çözümüdür.
.png)
Temel Bilgiler
Laboratuvar
Yerel olarak bir Gitea örneği çalıştırmak için sadece bir docker konteyneri çalıştırabilirsiniz:
docker run -p 3000:3000 gitea/gitea
Port 3000’e bağlanarak web sayfasına erişebilirsiniz.
Ayrıca bunu kubernetes ile çalıştırabilirsiniz:
helm repo add gitea-charts https://dl.gitea.io/charts/
helm install gitea gitea-charts/gitea
Kimlik Doğrulaması Olmadan Sayım
- Kamu reposu: http://localhost:3000/explore/repos
- Kayıtlı kullanıcılar: http://localhost:3000/explore/users
- Kayıtlı Organizasyonlar: http://localhost:3000/explore/organizations
Varsayılan olarak Gitea yeni kullanıcıların kayıt olmasına izin verir. Bu, yeni kullanıcılara diğer organizasyonlar/kullanıcılar reposu üzerinde özel bir erişim sağlamaz, ancak giriş yapmış bir kullanıcı daha fazla repo veya organizasyonu görüntüleyebilir.
Dahili Sömürü
Bu senaryoda bir github hesabına erişim sağladığınızı varsayacağız.
Kullanıcı Kimlik Bilgileri/Web Çerezi ile
Eğer bir şekilde bir organizasyon içindeki bir kullanıcı için kimlik bilgilerine (veya bir oturum çerezine) sahipseniz, sadece giriş yapabilir ve hangi izinlere sahip olduğunuzu, hangi reposlarda bulunduğunuzu, diğer kullanıcıları listeleyebilir ve reposların nasıl korunduğunu kontrol edebilirsiniz.
2FA kullanılabileceğini unutmayın, bu nedenle bu bilgilere yalnızca o kontrolü geçebiliyorsanız erişebilirsiniz.
Note
Eğer
i_like_giteaç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.
Kullanıcı SSH Anahtarı ile
Gitea, kullanıcıların kendi adlarına kod dağıtmak için kimlik doğrulama yöntemi olarak kullanılacak SSH anahtarları ayarlamalarına izin verir (2FA uygulanmaz).
Bu anahtar ile, kullanıcının bazı ayrıcalıklara sahip olduğu reposlarda değişiklikler yapabilirsiniz, ancak bunu gitea api’sine erişmek için kullanamazsınız. Ancak, erişiminiz olan reposlar ve kullanıcı hakkında bilgi almak için yerel ayarları sayabilirsiniz:
# Go to the the repository folder
# Get repo config and current user name and email
git config --list
Eğer kullanıcı adını gitea kullanıcı adı olarak yapılandırdıysa, hesabında ayarladığı açık anahtarları https://github.com/<gitea_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 ayarlanabilir. Bu anahtara erişimi olan herkes bir depodan projeleri başlatabilir. 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, Gitea sunucusuna şifre yerine kimlik doğrulamak için kullanılabilir API aracılığıyla. Kullanıcı üzerinde tam erişim sağlar.
Oauth Uygulaması ile
Gitea 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.
Temel bilgilerde açıklandığı gibi, uygulama kullanıcı hesabı üzerinde tam erişime sahip olacaktır.
Dal Koruma Atlatma
Github’da, varsayılan olarak repo üzerinde yazma erişimi olan bir token alan github actions bulunmaktadır. Bu, dal korumalarını atlatmak için kullanılabilir. Bu durumda böyle bir şey yok, bu nedenle atlatmalar daha sınırlıdır. Ancak neler yapılabileceğine bir bakalım:
- Push’u Etkinleştir: Yazma erişimi olan herhangi biri dalına push yapabiliyorsa, sadece push yapın.
- Kısıtlı Push’u Beyaz Listeye Al: Aynı şekilde, bu listeye dahil iseniz dalına push yapın.
- Birleştirme Beyaz Listesini Etkinleştir: Eğer birleştirme beyaz listesi varsa, onun içinde olmanız gerekir.
- Onay gereksinimi 0’dan büyük: O zaman… başka bir kullanıcıyı tehlikeye atmanız gerekir.
- Onayları beyaz listeye kısıtla: Eğer yalnızca beyaz listedeki kullanıcılar onay verebiliyorsa… o liste içinde olan başka bir kullanıcıyı tehlikeye atmanız gerekir.
- Eski onayları geçersiz kıl: Eğer onaylar yeni commitlerle kaldırılmıyorsa, onaylanmış bir PR’yi ele geçirip kodunuzu ekleyebilir ve PR’yi birleştirebilirsiniz.
Eğer bir org/repo yöneticisiyseniz korumaları atlatabileceğinizi unutmayın.
Webhook’ları Sayma
Webhook’lar, belirli gitea bilgilerini bazı yerlere gönderebilir. Bu iletişimi istismar edebilirsiniz.
Ancak genellikle, webhook içinde geri alınamaz bir gizli anahtar ayarlanır; bu, URL’sini bilen ancak gizli anahtarı bilmeyen dış kullanıcıların o webhook’u istismar etmesini önler.
Ancak bazı durumlarda, insanlar gizli anahtarı yerine URL’ye bir parametre olarak ayarlayabilir, bu nedenle URL’leri kontrol etmek size gizli anahtarları ve daha fazla istismar edebileceğiniz diğer yerleri bulma imkanı verebilir.
Webhook’lar repo ve org seviyesinde ayarlanabilir.
Sonrası İstismar
Sunucu İçinde
Eğer bir şekilde gitea’nın çalıştığı sunucuya girmeyi başardıysanız, gitea yapılandırma dosyasını aramalısınız. Varsayılan olarak /data/gitea/conf/app.ini konumundadır.
Bu dosyada anahtarlar ve şifreler bulabilirsiniz.
Gitea yolunda (varsayılan: /data/gitea) ayrıca ilginç bilgiler bulabilirsiniz:
- sqlite DB: Gitea harici bir veritabanı kullanmıyorsa, bir sqlite veritabanı kullanacaktır.
- oturumlar oturumlar klasörü içinde:
cat sessions/*/*/*komutunu çalıştırarak oturum açmış kullanıcıların kullanıcı adlarını görebilirsiniz (gitea ayrıca oturumları DB içinde de saklayabilir). - jwt özel anahtarı jwt klasörü içinde
- Bu klasörde daha fazla hassas bilgi bulunabilir.
Eğer sunucu içindeyseniz, bilgileri erişmek/değiştirmek için gitea ikili dosyasını de kullanabilirsiniz:
gitea dumpgitea’yı dökerek bir .zip dosyası oluşturur.gitea generate secret INTERNAL_TOKEN/JWT_SECRET/SECRET_KEY/LFS_JWT_SECRETbelirtilen türde bir token oluşturur (kalıcılık).gitea admin user change-password --username admin --password newpasswordŞifreyi değiştirir.gitea admin user create --username newuser --password superpassword --email user@user.user --admin --access-tokenYeni bir yönetici kullanıcı oluşturur ve bir erişim tokeni alır.
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

