Webview Attacks
Last updated
Last updated
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Eğitim AWS Kırmızı Takım Uzmanı (ARTE) GCP Hacking'i öğrenin ve pratik yapın: HackTricks Eğitim GCP Kırmızı Takım Uzmanı (GRTE)
Android geliştirmesinin kritik bir yönü, WebView'ların doğru bir şekilde yönetilmesidir. Bu rehber, WebView kullanımına ilişkin riskleri azaltmak için ana yapılandırmaları ve güvenlik uygulamalarını vurgulamaktadır.
Varsayılan olarak, WebView'lar dosya erişimine izin verir. Bu işlevsellik, Android API seviyesi 3 (Cupcake 1.5) itibarıyla mevcut olan setAllowFileAccess()
yöntemiyle kontrol edilir. android.permission.READ_EXTERNAL_STORAGE iznine sahip uygulamalar, dosya URL şeması (file://path/to/file
) kullanarak harici depolamadan dosyaları okuyabilir.
Dosya URL'lerinden Evrensel Erişim: Bu kaldırılan özellik, dosya URL'lerinden çapraz kaynak isteklerine izin veriyordu ve potansiyel XSS saldırıları nedeniyle önemli bir güvenlik riski oluşturuyordu. Varsayılan ayar, Android Jelly Bean ve daha yeni sürümleri hedefleyen uygulamalar için devre dışıdır (false
).
Bu ayarı kontrol etmek için getAllowUniversalAccessFromFileURLs()
kullanın.
Bu ayarı değiştirmek için setAllowUniversalAccessFromFileURLs(boolean)
kullanın.
Dosya URL'lerinden Dosya Erişimi: Bu özellik de kaldırılmıştır ve diğer dosya şeması URL'lerinden içeriğe erişimi kontrol ediyordu. Evrensel erişimde olduğu gibi, varsayılan ayarı güvenliği artırmak için devre dışıdır.
Kontrol etmek için getAllowFileAccessFromFileURLs()
ve ayarlamak için setAllowFileAccessFromFileURLs(boolean)
kullanın.
Varlıklara ve kaynaklara erişirken dosya sistemi erişimini devre dışı bırakmak için setAllowFileAccess()
yöntemi kullanılır. Android R ve üzeri için varsayılan ayar false
'dır.
getAllowFileAccess()
ile kontrol edin.
setAllowFileAccess(boolean)
ile etkinleştirin veya devre dışı bırakın.
WebViewAssetLoader sınıfı, yerel dosyaları yüklemek için modern bir yaklaşımdır. Yerel varlıklara ve kaynaklara erişmek için http(s) URL'lerini kullanır ve Aynı Kaynak politikası ile uyumlu olarak CORS yönetimini kolaylaştırır.
Bu, bir webview'da rastgele URL'leri yüklemek için kullanılan yaygın bir işlevdir:
Tabii ki, potansiyel bir saldırganın bir uygulamanın yükleyeceği URL'yi asla kontrol edememesi gerekir.
JavaScript: WebView'larda varsayılan olarak devre dışıdır, setJavaScriptEnabled()
ile etkinleştirilebilir. JavaScript'i uygun korumalar olmadan etkinleştirmenin güvenlik açıkları oluşturabileceği için dikkatli olunmalıdır.
Intent Şeması: WebView'lar intent
şemasını işleyebilir, dikkatli yönetilmezse istismar durumlarına yol açabilir. Bir örnek güvenlik açığı, çapraz site betikleme (XSS) saldırılarını gerçekleştirmek için istismar edilebilecek "support_url" adlı bir WebView parametresinin açığa çıkmasıydı.
adb kullanarak istismar örneği:
Android, JavaScript'in bir WebView içinde yerel Android uygulama fonksiyonlarını çağırmasına olanak tanıyan bir özellik sunar. Bu, JavaScript'i yerel Android işlevleriyle entegre eden addJavascriptInterface
yönteminin kullanılmasıyla gerçekleştirilir ve buna WebView JavaScript köprüsü denir. Dikkatli olunması önerilir çünkü bu yöntem, WebView içindeki tüm sayaların kayıtlı JavaScript Arayüz nesnesine erişmesine izin verir ve bu arayüzler aracılığıyla hassas bilgilerin ifşa edilmesi durumunda bir güvenlik riski oluşturur.
Aşırı dikkat gereklidir çünkü 4.2'nin altındaki Android sürümlerini hedefleyen uygulamalar, kötü niyetli JavaScript aracılığıyla uzaktan kod yürütme açığına sahip olabilir.
JavaScript arayüzleri, bir sınıf yönteminin JavaScript'e açıldığı örneklerde olduğu gibi, yerel kodla etkileşimde bulunabilir:
JavaScript Köprüsü, WebView'a bir arayüz ekleyerek etkinleştirilir:
JavaScript aracılığıyla potansiyel istismar, örneğin, bir XSS saldırısı yoluyla, açığa çıkarılmış Java yöntemlerinin çağrılmasını sağlar:
Riskleri azaltmak için, JavaScript köprü kullanımını APK ile gönderilen kodla sınırlayın ve uzaktan kaynaklardan JavaScript yüklenmesini engelleyin. Eski cihazlar için minimum API seviyesini 17 olarak ayarlayın.
Belirli bir yükü çalıştırarak RCE elde etmeyi sağlayan belgelenmiş bir yöntem vardır. Ancak, @JavascriptInterface
notasyonu yetkisiz yöntem erişimini engelleyerek saldırı yüzeyini sınırlar.
Uzaktan hata ayıklama, Chrome Geliştirici Araçları ile mümkündür ve WebView içeriğinde etkileşim ve keyfi JavaScript çalıştırma imkanı sağlar.
Bir uygulama içindeki tüm WebView'ler için uzaktan hata ayıklama şu şekilde etkinleştirilebilir:
Uygulamanın hata ayıklanabilir durumuna bağlı olarak hata ayıklamayı koşullu olarak etkinleştirmek için:
XMLHttpRequest kullanarak rastgele dosyaların dışarı sızdırılmasını gösterir:
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)