Gitea Security

AWS hacklemeyi sıfırdan kahraman olmak için htARTE (HackTricks AWS Kırmızı Takım Uzmanı) öğrenin!

HackTricks'i desteklemenin diğer yolları:

Gitea Nedir

Gitea, Go dilinde yazılmış kendine ait barındırılan topluluk yönetimli hafif kod barındırma çözümüdür.

Temel Bilgiler

pageBasic Gitea Information

Lab

Yerel bir Gitea örneğini çalıştırmak için sadece bir docker konteyneri çalıştırabilirsiniz:

docker run -p 3000:3000 gitea/gitea

Web sayfasına erişmek için 3000 numaralı porta bağlanın.

Ayrıca kubernetes ile çalıştırabilirsiniz:

helm repo add gitea-charts https://dl.gitea.io/charts/
helm install gitea gitea-charts/gitea

Kimlik Doğrulaması Yapılmamış Sıralama

Unutmayın ki varsayılan olarak Gitea yeni kullanıcıların kaydolmasına izin verir. Bu, yeni kullanıcılara diğer organizasyonlar/kullanıcılar depoları üzerinde özel erişim sağlamaz, ancak giriş yapmış bir kullanıcı daha fazla depo veya organizasyonu görebilir.

İçeriden Sızma

Bu senaryoda, bir github hesabına bazı erişimler elde ettiğinizi varsayacağız.

Kullanıcı Kimlik Bilgileri/Web Çerezi ile

Eğer bir organizasyon içindeki bir kullanıcının kimlik bilgilerine sahipseniz (veya bir oturum çerezi çaldıysanız), sadece giriş yapabilir ve hangi izinlere sahip olduğunuzu, hangi depolarda olduğunuzu, hangi takımlarda olduğunuzu, diğer kullanıcıları listeyebilir ve depoların nasıl korunduğunu kontrol edebilirsiniz.

Unutmayın ki 2FA kullanılabilir, bu nedenle bu bilgilere erişebilmeniz için bu kontrolü de geçebilmeniz gerekecektir.

Unutmayın ki, i_like_gitea çereziyi (şu anda SameSite: Lax ile yapılandırılmış) çalmayı başarırsanız, kimlik bilgilerine veya 2FA'ya ihtiyaç duymadan kullanıcıyı tamamen taklit edebilirsiniz.

Kullanıcı SSH Anahtarı ile

Gitea, kullanıcıların kimlik doğrulama yöntemi olarak kullanılacak SSH anahtarları belirlemelerine izin verir (2FA uygulanmaz).

Bu anahtarla, kullanıcının bazı ayrıcalıklara sahip olduğu depolarda değişiklikler yapabilirsiniz, ancak gitea api'ye erişmek için kullanamazsınız. Bununla birlikte, erişiminiz olan depolar ve kullanıcı hakkında bilgi almak için yerel ayarları sıralayabilirsiniz:

# Go to the the repository folder
# Get repo config and current user name and email
git config --list

Eğer kullanıcı kullanıcı adını gitea kullanıcı adı olarak yapılandırdıysa, hesabında ayarladığı genel anahtarları https://github.com/<gitea_kullanıcıadı>.keys adresinden erişebilirsiniz, bu şekilde bulduğunuz özel anahtarın kullanılabileceğini doğrulamak için bunu kontrol edebilirsiniz.

SSH anahtarları, dağıtım anahtarları olarak da depolarda ayarlanabilir. Bu anahtara erişimi olan herkes, bir depodan projeleri başlatabilir. Genellikle farklı dağıtım anahtarlarına sahip bir sunucuda yerel ~/.ssh/config dosyası size hangi anahtarın ilişkili olduğu hakkında bilgi verecektir.

GPG Anahtarları

Burada açıklandığı gibi bazen taahhütleri imzalamak gerekebilir veya 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ı Jetonu ile

Kullanıcı Jetonları hakkında temel bilgilere buradan bakabilirsiniz.

Kullanıcı jetonu, Gitea sunucusuna API aracılığıyla kimlik doğrulaması yapmak için bir şifre yerine kullanılabilir. Kullanıcı üzerinde tam erişime sahip olacaktır.

Oauth Uygulaması ile

Gitea Oauth Uygulamaları hakkında temel bilgilere buradan bakabilirsiniz.

Bir saldırgan, muhtemelen bir dolandırıcılık kampanyasının bir parçası olarak, kullanıcıların ayrıcalıklı veri/aksiyonlara 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.

Şube Koruma Atlatma

Github'da, varsayılan olarak, yazma erişimi olan bir jeton alan github eylemleri bulunur ve bu, şube korumalarını atlatmak için kullanılabilir. Bu durumda, bu tür bir şey yok, bu yüzden atlatmalar daha sınırlıdır. Ancak, neler yapabileceğimize bir göz atalım:

  • Push Etkinleştir: Yazma erişimi olan herhangi bir kişi şubeye itebilir, sadece itin.

  • Beyaz Liste Kısıtlı İtme: Aynı şekilde, bu listede yer alıyorsanız, şubeye itin.

  • Birleştirme Beyaz Listesini Etkinleştir: Bir birleştirme beyaz listesi varsa, içinde olmanız gerekiyor.

  • Onaylar 0'dan büyük olmalı: O zaman... başka bir kullanıcıyı ele geçirmeniz gerekiyor.

  • Onayları beyaz listeye al: Sadece beyaz listeye alınan kullanıcılar onay verebilirse... o zaman bu listede olan başka bir kullanıcıyı ele geçirmeniz gerekiyor.

  • Eski onayları reddet: Onaylar yeni taahhütlerle kaldırılmazsa, zaten onaylanmış bir PR'yi ele geçirerek kodunuzu enjekte edebilir ve PR'yi birleştirebilirsiniz.

Unutmayın ki bir org/repo yöneticisi olarak korumaları atlayabilirsiniz.

Webhook'ları Numaralandırma

Webhook'lar, belirli gitea bilgilerini bazı yerlere gönderebilir. Bu iletişimi sömürmek mümkün olabilir. Ancak genellikle, webhook'ta alınamayan bir gizli ayarlanır ve bu, webhook'un URL'sini bilen ancak gizliyi bilmeyen harici kullanıcıların webhook'u sömürmesini engeller. Ancak bazı durumlarda, insanlar gizliyi yerine URL'de bir parametre olarak ayarlarlar, bu nedenle URL'leri kontrol etmek, daha fazla sömürülebilecek gizli bilgiler ve diğer yerleri bulmanıza olanak sağlayabilir.

Webhook'lar repo ve org düzeyinde ayarlanabilir.

Son Aşama Sömürüsü

Sunucu İçinde

Herhangi bir şekilde gitea'nın çalıştığı sunucuya erişmeyi başarırsanız, gitea yapılandırma dosyasını aramalısınız. Varsayılan olarak /data/gitea/conf/app.ini konumunda bulunur.

Bu dosyada anahtarlar ve şifreler bulabilirsiniz.

Gitea yolunda (varsayılan olarak: /data/gitea), ayrıca aşağıdaki gibi ilginç bilgiler bulabilirsiniz:

  • sqlite DB: Gitea, harici bir veritabanı kullanmıyorsa, bir sqlite veritabanı kullanı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 oturumları ayrıca DB içinde kaydedebilir).

  • jwt klasörü içindeki jwt özel anahtarı

  • Bu klasörde daha fazla hassas bilgi bulunabilir

Sunucu içindeyseniz, bilgilere erişmek/değiştirmek için gitea ikili dosyasını kullanabilirsiniz:

  • gitea dump gitea'yı döker ve bir .zip dosyası oluşturur

  • gitea generate secret INTERNAL_TOKEN/JWT_SECRET/SECRET_KEY/LFS_JWT_SECRET belirtilen türde bir belirteç 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 yönetici kullanıcı oluşturur ve bir erişim belirteci alır

AWS hacklemeyi sıfırdan kahraman olmak için htARTE (HackTricks AWS Red Team Expert)!

HackTricks'i desteklemenin diğer yolları:

Last updated