Gitea Security
Last updated
Last updated
AWS Hacking öğrenin ve pratik yapın:HackTricks Eğitim AWS Kırmızı Takım Uzmanı (ARTE) GCP Hacking öğrenin ve pratik yapın: HackTricks Eğitim GCP Kırmızı Takım Uzmanı (GRTE)
Gitea, Go dilinde yazılmış kendinize ait, topluluk tarafından yönetilen hafif bir kod barındırma çözümüdür.
Yerel olarak bir Gitea örneği çalıştırmak için sadece bir docker konteyneri çalıştırabilirsiniz:
Port 3000'e bağlanarak web sayfasına erişebilirsiniz.
Ayrıca bunu kubernetes ile çalıştırabilirsiniz:
Genel repos: 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.
Bu senaryo için bir github hesabına erişim sağladığınızı varsayacağız.
Eğer bir şekilde bir organizasyondaki bir kullanıcı için kimlik bilgilerine sahipseniz (veya bir oturum çerezini çaldıysanız) 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.
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.
Gitea, kullanıcıların kendi adlarına kod dağıtmak için kimlik doğrulama yöntemi olarak kullanılacak SSH anahtarları ayarlaması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:
Eğer kullanıcı adını gitea kullanıcı adı olarak yapılandırmışsa, 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şlatabilecektir. Genellikle farklı dağıtım anahtarlarına sahip bir sunucuda, yerel dosya ~/.ssh/config
hangi anahtarın ilgili olduğu hakkında bilgi verecektir.
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:
Kullanıcı Token'ları hakkında temel bilgileri kontrol edin için bir giriş.
Bir kullanıcı token'ı, Gitea sunucusuna API üzerinden kimlik doğrulamak için şifre yerine kullanılabilir. Kullanıcı üzerinde tam erişim sağlar.
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ı kapsamında 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.
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 mevcut değildir, bu nedenle atlatmalar daha sınırlıdır. Ancak neler yapılabileceğine bir göz atalı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 listenin bir parçasıysanız dalına push yapın.
Birleştirme Beyaz Listesini Etkinleştir: Eğer birleştirme beyaz listesi varsa, onun içinde olmalısınız.
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 listeye alınmış kullanıcılar onay verebiliyorsa... o listedeki 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, belirli gitea bilgilerini bazı yerlere gönderebilir. Bu iletişimi istismar etme şansınız olabilir. 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, onu bir parametre olarak URL'ye yerleştirir, bu nedenle URL'leri kontrol etmek size gizli anahtarları bulma ve daha fazla istismar edebileceğiniz diğer yerleri bulma imkanı verebilir.
Webhook'lar repo ve org seviyesinde ayarlanabilir.
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 db kullanmıyorsa, bir sqlite db kullanacaktır.
oturumlar klasöründeki oturumlar: 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ünde
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 dump
gitea'yı dökerek bir .zip dosyası oluşturur.
gitea generate secret INTERNAL_TOKEN/JWT_SECRET/SECRET_KEY/LFS_JWT_SECRET
belirtilen 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-token
Yeni bir yönetici kullanıcı oluşturur ve bir erişim token'ı alır.
AWS Hacking Öğrenin & Pratik Yapın:HackTricks Eğitim AWS Kırmızı Takım Uzmanı (ARTE) GCP Hacking Öğrenin & Pratik Yapın: HackTricks Eğitim GCP Kırmızı Takım Uzmanı (GRTE)