Hata avcılığımda otomasyon yok, sqlmap, sublist3r veya jsparser yok. Denedim ama bana uymuyorlar. Ara sıra bir poc oluşturmak için belirli uç noktalara kaba kuvvet uygulamama yardımcı olan bir VPS sunucusu dışında, sahip olduğum tek şey MBP’de Burp Pro lisansı. Bu yüzden benden çok fazla araç paylaşımı veya metodoloji paylaşımı görmüyorsunuz, paylaşmak istemediğimden değil, bende bunlara sahip olmadığımdandır.
site:uber.com site:uberinternal.com site:yahoo.com benim hobimdir; Burp’ta günde 15 bin isteği incelemek günlük bir iştir. Yüzüme çarpması dışında yansıtıcı xss’in veya depolanmış xss’in peşinden gitmiyorum. Sitenin beni nereye götürdüğünü test edin, site oauth kullanıyorsa 10 yönlendirme_uri varyasyonunu kontrol edin. Bulgularımın çoğu düzensiz ve spontane; umarım bu, farklı kanallardan aldığım sorulara cevap verebilir.
Ama bu düzensizlikler arasında paylaşabileceğim şey, bulgunun ta kendisi, daha az bilinen bir Facebook’u paylaşıyorum. yönlendirme_uri bugün hile.
2016’da Uber, hem login.uber.com hem de auth.uber.com’da FB girişine izin veriyordu; sayfadaki Facebook ile giriş yap düğmesine tıkladığımızda akış şöyleydi:
https://facebook.com/xxxx?client_id=xxxxxx&redirect_uri=https%3a%2f%2fauth.uber.com%2flogin%3fnex t_url=https%3A%2F%2Frush.uber.com%2Flogin%2F&state=m7QWxxPRNII4VGsCSog0xLJ2KF7e8ynpC2c_OAKkQQk%3D
https://auth.uber.com/login?next_url=https%3A%2F%2Frush.uber.com%2Flogin%2F&state=m7QWxxPRNII4VGsCSog0xLJ2KF7e8ynpC2c_OAKkQQk%3D#access_toekn=xxxx
https://rush.uber.com/login?…;.#access_token=xxxx
İlk bakışta sorunu tespit etmek zordur (bazı eğitimli gözler için belki kolay olabilir), akıştaki olay şudur: Giriş uç noktası, tarayıcı güvenliğinin çalışma şekli, 302 konum başlığı nedeniyle *.uber.com’a daha fazla yönlendirmeye izin verir yönlendirme, URL’deki karmadan sonraki her şeyi koruyacaktır. Bu, açık yönlendirmeyi bulmanın mümkün olup olmadığı sonucuna varılmasına yol açmaktadır. sonraki_url parametresini kullanır ve kullanıcıyı *.uber.com’a, ardından saldırganın kontrolündeki siteye yönlendirir, ardından URL’deki erişim belirtecini çalabiliriz.
Çünkü Uber artık açık yönlendirmeyi geçerli gönderim olarak kabul etmiyor, bir tane bulmak o kadar da zor değil, bugün hala çalışan bir açık yönlendirme https://login.uber.com/logout
Tabanı Yönlendiren başlığına yönlendirir, kendiniz deneyin.
<a href="https://login.uber.com/logout">Click to seea>
Dikkat ediyorsanız artık bu bilgileri Uber’de FB ATO’ya ulaşmak için bir istismarı anlamak için kullanabilmelisiniz. Kendi istismarınızı yazın ve aşağıda aynı düşünceleri paylaşıp paylaşmadığımızı görmeye çalışın.
İşte benim istismarım.
Click to leakalert(location.hash)
Belki adım adım bir açıklama istersiniz, ancak bunu anlamanız için bunu size saklamayı tercih ederim, bu eğitimi ve önceki tüm yazılarımı tamamladıktan sonra buraya geri dönün ve istismarın neden işe yaramadığını anlayabilirsiniz. (Bu öğrenme süreci, bu blog yazısında her şeyi açıklamaktan çok daha iyidir, çünkü bu konuda zaten tartışılan düzinelerce makale vardır)
Bu durum 2016’nın sonlarında rapor edildi. Derhal düzeltildi ve düzeltme iyi, bunu kendi başınıza nasıl düzelttiklerini görmelisiniz. 2017’nin başına kadar geriye bakmadım.
Geriye dönüp baktığımda, Uber FB girişinin hala beyaz listeye alınmış iki yönlendirme_uri’ye ev sahipliği yaptığını anladım; bunlar https://auth.uber.com/login ve https://login.uber.com/login
Teorik olarak, açık yönlendirme hatasını zaten düzelttikleri için bunlardan faydalanmak zor olmalı, kullanıcıyı tekrar https://login.uber.com/logout adresine yönlendirmemin bir yolu yok.
İşte iş gerçekten ilginçleşmeye başlıyor, hadi facebook yönlendirme_uri’ye bir göz atalım, diyelim ki, beyaz listeye alınmış URL olarak https://www.example.com/directory’niz var. O zaman yönlendirme_uri’nin çeşitliliği şöyle olmalıdır:
yönlendirme_uri=https%3a%2f%2fwww.example.com%2fdizin -> Başarılı
yönlendirme_uri=https%3a%2f%2fwww.example.com%2fdirectory%3fparameter%3dvalue -> Başarılı
yönlendirme_uri=https%3a%2f%2fwww.example.com%2fdirectory%3fparameter%3dvalue%23 -> URL’nin sonunda %23’ten bu yana başarısız oldu
yönlendirme_uri=https%3a%2f%2fwww.example.com%2fdirectory%2f..%2f..%2f -> Dizinden kaçmak için ../ kullanıldığından başarısız oldu
Yukarıdaki yönlendirme_uri varyasyonunun tümü iyi biliniyor ve beklenen sonuçlara sahip. Uber’e karşı istismar etmeyi faydalı bulduğum bir şeye bakalım.
yönlendirme_uri=https%3a%2f%2fwww.example.com%2fdirectory%252f..%252f..%252fescaped -> BAŞARILI!!
302 yanıtındaki kod çözüldükten sonra Konum başlığı artık
https://www.example.com/directory%2f..%2f..%2fescaped
Şimdi sunucunun %2f kodlu eğik çizgiyi kabul edip etmediğini görmenin zamanı geldi, genellikle sunucu bunu kabul etmeyecek ve düz 400 yasak veya 404 bulunamadı ifadesini döndürecektir. Şans eseri, login.uber.com bunu sunucu tarafındaki dizinin normalleştirilmesi olarak memnuniyetle kabul etti
yani
https://login.uber.com/login -> mevcut giriş sayfası
https://login.uber.com/logout -> mevcut çıkış sayfası
https://login.uber.com/login%2f..%2f..%2flogout -> mevcut çıkış sayfası
Dolayısıyla, Uber’in sunucu tarafı normalleştirme davranışını ve Facebook’un çift url kodlu eğik çizgiyi kabul etmesini birleştirirsek, Uber’in FB hesabını ele geçirmenin başka bir yolunu buluruz.
Click to leakalert(location.hash)
Bu sorun, beyaz liste yönlendirme_uri’si olan login.uber.com’un kaldırılmasıyla düzeltildi.
Okuduğunuz için teşekkürler.