Ve Kredi Kartı Numarası da
Güvenlik sorunlarının peşinde koşarken, keşfedilmemiş varlıkların ve belirsiz uç noktaların peşinde koşmak çoğu zaman odağın bariz ama yine de kritik olan işlevsellikten uzaklaşmasıyla sonuçlanır.
Bir hedefe, üzerinde güvenlik değerlendirmesi yapan ilk kişiymişsiniz gibi yaklaşırsanız ve her şeyi iyice kontrol ederseniz, yeni bir şey bulacağınıza inanıyorum; özellikle de test ettiğiniz kod bir süredir sürekli olarak geliştiriliyorsa .
Bu, muhtemelen PayPal’ın en çok ziyaret edilen sayfalarından biri olan giriş formunu etkileyen yüksek önemdeki bir hatanın hikayesidir.
İlk keşif
PayPal’ın ana kimlik doğrulama akışını araştırırken CSRF jetonu ve oturum kimliği gibi görünen bir javascript dosyası fark ettim:
Bu hemen dikkatimi çekti, çünkü geçerli bir javascript dosyası içinde herhangi bir tür oturum verisi sağlamak genellikle bu verilerin saldırganlar tarafından alınmasına olanak tanıyor.
Siteler arası komut dosyası ekleme (XSSI) saldırısı olarak bilinen saldırıda, kötü amaçlı bir web sayfası bir HTML kullanabilir. etiketini kullanarak bir komut dosyası çapraz kökenini içe aktarın ve dosyanın içerdiği tüm verilere erişmesini sağlayın.
Elbette hızlı bir test, XSSI güvenlik açığını doğruladı ve her istekte değişken adlarını rastgele hale getirmek için bir javascript gizleme aracı kullanılmış olmasına rağmen, ilginç tokenler yine de oldukça öngörülebilir konumlara yerleştirildi ve bu da onları biraz ekstra çalışmayla geri almayı mümkün kıldı. .
Ancak bir sır ancak ona verebileceğin zarar kadar iyidir. Tam olarak ne olduğunu öğrenmek için hemen yola çıktım. _csrf
Ve _sessionID
gerçek bir saldırıda gerçekten kullanılıp kullanılamayacaklarıydı.
Daha fazla kazma
PayPal platformundaki kimliği doğrulanmış taleplerin içindeki normal CSRF jetonlarını şu değerle değiştirmeye yönelik sayısız denemeden sonra: _csrf
bu özel belirteci kullanarak klasik bir siteler arası istek sahteciliği saldırısının mümkün olmadığı sonucuna vardım. Aynı şekilde mağdurun _sessionID
ne yazık ki PayPal’ın sitesinde onları taklit etmek yeterli değildi.
Daha sonra savunmasız senaryoya geri döndüm ve jetonların gerçekte ne için kullanıldığını bulmak için onları takip ettim. Bu, PayPal’ın kaba kuvvet saldırılarını önlemek için kullanılan ana koruma mekanizmalarından biri olan PayPal’ın derinlemesine incelenmesine yol açtı. güvenlik sorunu. Bu işlevsellik birçok yerde kullanılıyor olsa da ben ana giriş formuna odaklanacağım.
Fikir oldukça basit: Birkaç başarısız giriş denemesinden sonra, tekrar denemeden önce bir reCAPTCHA sorununu çözmeniz gerekiyor. Ancak uygulama bazı şüpheleri uyandırabilir.
Olası bir kaba kuvvet girişiminin tespit edilmesi üzerine, bir sonraki kimlik doğrulama girişimine verilen yanıt, Google captcha’sından başka hiçbir şey içermeyen bir sayfadır. Captcha kullanıcı tarafından çözülürse, bir HTTP POST isteği /auth/validatecaptcha
başlatılır.