Bir Ay Boyunca GitHub'ı Hackledik
giriiş
Uzun bir aradan sonra yeni bir yazı ile karşınızdayız. Diğer taahhütler nedeniyle genellikle hata ödül programlarına katılmamamıza rağmen, bir ay boyunca GitHub'ı hackleme görevini üstlendik ve bulgularımızı paylaşmaktan heyecan duyuyoruz. Her şey Kasım ayında Shivam Singh'in (Bay Rajput Hacker) bana ulaşıp bug bounty'yi denemem için beni cesaretlendirmesiyle başladı. GitHub'ın bir yan kuruluşu olan npmjs.com'a odaklanmaya karar verdik. GitHub'ın büyük bir şirket olmasına ve bug bounty programının HackerOne'da herkese açık olmasına rağmen, denemeye değer olduğunu düşündük.
Keşif
Th3Pr0xyB0y (Vansh Devgan) ve Bay Rajput Hacker (Shivam Singh), npmjs.com'daki güvenlik açıklarını bulma arayışımıza bir keşif operasyonu yürüterek başladılar. IP adresleri, açık bağlantı noktaları, ekran görüntüleri ve uç noktalar dahil olmak üzere olabildiğince fazla bilgi toplamak için şirket içi ürünümüz X'i (CyberXplore paketinin bir parçası) kullandık. Bulut bilgi işlemin gücüyle keşif süreci hızlı ve verimliydi.
Ancak, toplanan bilgileri inceledikten sonra, hedef olan npmjs.com ve npmjs.org'a sınırlı saldırı alanı olduğunu gördük. Şirket içi ürünümüz X , keşif sürecini çok kolaylaştırdı ve özel beta sürümünün yakında genel kullanıma açılacağını duyurmaktan heyecan duyuyoruz .
İş Mantığına Odaklanmak
Bay Rajput Hacker ve ben, yalnızca uygulamadaki iş mantığı hatalarına odaklanmaya karar verdik. Aramamıza başlamadan önce, uygulamayı tamamen anladığımızdan emin olduk. Bu, Burp Suite'in minimum düzeyde kullanılmasını ve uygulamanın temel işlevlerini ve süreçlerini anlamaya odaklanmayı içeriyordu. Amacımız, iş mantığında potansiyel olarak istismar edilebilecek herhangi bir zayıflık bulmaktı. Araç setimizi sınırlandırarak ve uygulamayı anlamaya odaklanarak benzersiz veya gözden kaçan güvenlik açıklarını ortaya çıkarmayı amaçladık. npmjs.com görece küçük bir uygulama olduğundan, anlamamız ve notlarımızı tamamlamamız iki saatten az sürdü.
Güvenlik Açıkları Keşfedildi
Bildirilmekte olan 9 Güvenlik Açığı'ndan bahsetmiş olsak da, bugün burada aşağıda verilen 3 tanesini yazacağız:
- npmjs.com'da Giriş Doğrulama Atlaması
- npmjs.com'da Ön Hesap Devri
- Education.github.com'da Erişim Kontrolü Sorunu
Tanım -
npmjs.com'un kimlik doğrulama bölümünü ve e-posta adresini güncelleme ve profil güncelleme işlevleri gibi genel işlevleri gözden geçirirken, gözümüze çarpan bir uygulama hakkında, e-posta doğrulama bağlantısı, şifre sıfırlama bağlantısı ve gönderilen bağlantı biçimi olan garip bir davranış bulduk. e-posta adresini güncellemek için.
Bağlantı , şifre sıfırlama, e-posta doğrulama bağlantısı veya herhangi bir amaçla bu sitedeki herhangi bir XYZ bağlantısı gibi tüm işlevler için https://npmjs.com/verify/{some_random_token_here} şeklinde biçimlendirilmiştir . Daha sonra, uygulamaya her giriş yaptığınızda, kayıtlı e-posta adresinize bir doğrulama kodu gönderdiğini ve hesaba başarılı bir şekilde giriş yapmak için bunu giriş doğrulama özelliğinin bir parçası olarak (e-postadaki 2FA/MFA kodu türü) girmeniz gerektiğini gözlemledik. . daha sonra bu işlevi atlamayı denedik ve başarılı bir şekilde atlattık çünkü son 2 saat içinde bir uygulamayı tamamen kullandık, her bir işlevi biliyorduk, böylece ilişki kurabildik ve nasıl yaptığımızı görmek için yeniden oluşturmak üzere baypasın aşağıdaki adımları okumasını sağladık. yaptı
Kimlik doğrulama sürecini ve npmjs.com'un e-posta adreslerini ve profillerini güncelleme gibi ortak işlevlerini incelerken, e-posta doğrulama bağlantılarının biçiminde tuhaf bir davranış keşfettik, Bir Ay Boyunca Hacked GitHub: İşte Bulduklarımız, kelime sıfırlama bağlantılarını yapıştırın, ve e-posta adreslerini güncellemek için gönderilen bağlantılar. Bu bağlantılar https://npmjs.com/verify/{random_token} olarak biçimlendirildi ve parola sıfırlama, e-posta doğrulama ve diğerleri dahil olmak üzere tüm işlevler için kullanıldı.
Ayrıca, bir kullanıcı uygulamaya her giriş yaptığında, kayıtlı e-posta adresine bir doğrulama kodu gönderildiğini fark ettik. Bu doğrulama kodu, iki faktörlü bir kimlik doğrulama biçimi olarak hareket ederek oturum açma işlemini tamamlamak için gerekliydi. Fark ettiğimiz ikinci şey, npmjs'de bir e-posta adresini güncellerken, güncelleme işlemi parola onayı gerektirmeden gerçekleşiyordu. Hem eski hem de yeni e-posta adreslerine bir e-posta gönderilir. Eski adrese gönderilen e-posta, alıcıya, değişiklik kendileri tarafından yapılmadıysa, değişikliği geri almak ve eski adreslerini yapmak için bir bağlantıya (https://npmjs.com/verify/{some_random_token_here}) tıklayabileceklerini bildirir. şu anki Yeni adrese gönderilen e-posta, yeni e-postayı doğrulamak ve az önce güncellenen hesaba bağlamak için bir bağlantı içerecektir.
Profil sayfasındaki e-posta adresini güncelledikten sonra bir hesaba giriş yapmaya çalışırken şaşırtıcı bir sorunla karşılaştık. Ne eski ne de yeni e-postadaki herhangi bir bağlantıyı onaylamamış veya tıklamamış olmasına rağmen, sistem yeni, doğrulanmamış adrese bir doğrulama kodunun gönderildiğini belirten bir mesaj görüntüledi. Bu, oturum açamayacağımızı gösteriyor gibiydi. Ancak, daha yakından inceledikten sonra, eski adresimize gönderilmiş ve hesabın kilitlenmesini önlemek için değişikliği geri almamızı isteyen bir e-posta keşfettik. Sağlanan bağlantıya tıkladığınızda ( https://npmjs.com/verify/{random_token}) e-postayı geri almak için giriş sayfasına yönlendirildik. Şaşırtıcı bir şekilde, kimlik bilgilerimizi girdiğimizde, sistem doğrulama kodunu sormadı ve bunun yerine giriş yapmamıza ve e-posta değişikliğini geri almamıza izin verdi.
Ancak, daha fazla araştırma yaptıktan sonra, bu işlevi başarılı bir şekilde atlatabildik. Özelliklerine alışmak için iki saat harcayarak elde ettiğimiz uygulama hakkındaki derin anlayışımız, farklı işlevleri ilişkilendirmemize ve bypass'ı bulmamıza izin verdi. Bypass'ı yeniden oluşturma adımları aşağıda bulunabilir.
Buraya tıklayın veya ziyaret edinhttps://blog.cyberxplore.com/we-hacked-github-for-a-month-heres-what-we-found/CyberXplore Blogunda Yayınlanan Tüm Blogun Tamamını Okumak İçin .
Güvenlik Araştırmacılarımızı Takip Etmeyi Unutmayın –
Okuyan Herkese Teşekkürler Beğendiyseniz Alkış Atmayı Unutmayın.
Bizi takip edin -
Twitter → @ MrRajputHacker @ Th3Pr0xyB0y
Instagram → @ MrRajputHacker @ vanshdevgan
Linkedin → MrRajputHacker @ th3pr0xyb0y
Orta → @ mrrajputhacker @ th3pr0xyb0y

![Bağlantılı Liste Nedir? [Bölüm 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































