- 23 Eyl 2022
- 42
- 52
DOM Nedir?
Belge Nesne Modeli (DOM), bir web tarayıcısının sayfadaki öğelerin hiyerarşik temsilidir. Web siteleri, DOM'un düğümlerini ve nesnelerini ve bunların özelliklerini değiştirmek için JavaScript'i kullanabilir. DOM manipülasyonu kendi başına bir problem değildir. Aslında, modern web sitelerinin nasıl çalıştığının ayrılmaz bir parçasıdır. Ancak, verileri güvenli olmayan bir şekilde işleyen JavaScript, çeşitli saldırılara olanak sağlayabilir. DOM tabanlı güvenlik açıkları, bir web sitesi, kaynak olarak bilinen, saldırgan tarafından kontrol edilebilen bir değeri alan ve bunu havuz olarak bilinen tehlikeli bir işleve aktaran JavaScript içerdiğinde ortaya çıkar.
Temel olarak, DOM tabanlı güvenlik açıkları, bir web sitesi verileri bir kaynaktan bir havuza aktardığında ortaya çıkar ve bu havuz daha sonra verileri müşterinin oturumu bağlamında güvenli olmayan bir şekilde işler.
En yaygın kaynak, genellikle nesneyle erişilen URL'dir. Saldırgan, kurbanı savunmasız bir sayfaya sorgu dizesinde ve URL'nin parçalanmış kısımlarında bir yük ile göndermek için bir bağlantı oluşturabilir. Aşağıdaki kodu göz önünde bulundurun:
JavaScript:
goto = location.hash.slice(1)
if (goto.startsWith('https:')) {
location = goto;
}
Kaynak güvenli olmayan bir şekilde işlendiğinden, bu , DOM tabanlı açık yeniden yönlendirmeye karşı savunmasızdır . 'location.hashURL', ile başlayan bir karma parça içeriyorsa https:, bu kod özelliğin değerini çıkarır. Saldırgan, aşağıdaki URL'yi oluşturarak bu güvenlik açığından yararlanabilir: Bir kurban bu URL'yi ziyaret ettiğinde, JavaScript özelliğin değerini 'location' kurbanı 'https://www.evil-user.netotomatik/' olarak kötü amaçlı siteye yönlendiren olarak ayarlar. Bu davranış, örneğin bir kimlik avı saldırısı oluşturmak için kolayca kullanılabilir.
DOM Tabanlı Açıklar Nasıl Önlenir?
DOM tabanlı saldırı tehdidini tamamen ortadan kaldırmak için yapabileceğiniz tek bir işlem yoktur. Bununla birlikte, genel olarak konuşursak, DOM tabanlı güvenlik açıklarından kaçınmanın en etkili yolu, güvenilmeyen herhangi bir kaynaktan gelen verilerin herhangi bir havuza iletilen değeri dinamik olarak değiştirmesine izin vermekten kaçınmaktır.
Uygulamanın istenen işlevselliği, bu davranışın kaçınılmaz olduğu anlamına geliyorsa, istemci tarafı kodu içinde savunmalar uygulanmalıdır. Birçok durumda ilgili veriler, yalnızca güvenli olduğu bilinen içeriğe izin verilerek beyaz liste bazında doğrulanabilir. Diğer durumlarda, verileri sterilize etmek veya kodlamak gerekli olacaktır. Bu, karmaşık bir görev olabilir ve verilerin ekleneceği bağlama bağlı olarak, uygun sırayla JavaScript çıkışı, HTML kodlaması ve URL kodlamasının bir kombinasyonunu içerebilir.
DOM Hırsızlığı
DOM gizleme, DOM'u manipüle etmek ve sonuç olarak web sitesindeki JavaScript davranışını değiştirmek için bir sayfaya HTML enjekte ettiğiniz gelişmiş bir tekniktir. DOM gizlemenin en yaygın biçimi, genel bir değişkenin üzerine yazmak için bir bağlantı öğesi kullanır ve bu daha sonra uygulama tarafından güvenli olmayan bir şekilde, örneğin dinamik komut dosyası URL'si oluşturmak gibi kullanılır.
Konumu okuduğunuz için çok teşekkür ederim seviliyorsunuz Turk Hack Team üyeleri
KAYNAK
DOM-based vulnerabilities | Web Security Academy