Client Side Prototype Pollution
Otomatik Araçlar Kullanarak Keşfetme
https://github.com/dwisiswant0/ppfuzz, https://github.com/kleiton0x00/ppmap ve https://github.com/kosmosec/proto-find araçları, prototype kirliliği zafiyetlerini bulmak için kullanılabilir.
Ayrıca, tarayıcı eklentisi PPScan kullanarak eriştiğiniz sayfalarda otomatik olarak prototype kirliliği zafiyetlerini taramanız mümkün.
Bir özelliğin nerede kullanıldığını hata ayıklama
Prototype Kirliliğinin Kök Nedenini Bulma
Herhangi bir araç tarafından tanımlanan bir prototype kirliliği zafiyeti bulunduğunda ve kod aşırı karmaşık değilse, location.hash
, decodeURIComponent
veya location.search
gibi anahtar kelimeleri Chrome Geliştirici Araçları'nda aratarak zafiyeti bulabilirsiniz. Bu yaklaşım, JavaScript kodunun savunmasız bölümünü belirlemenizi sağlar.
Daha büyük ve karmaşık kod tabanları için, savunmasız kodu keşfetmenin basit bir yöntemi şu adımları içerir:
Bir zafiyeti tanımlamak ve bir özelliği oluşturmak için tasarlanmış bir yük elde etmek için bir araç kullanın. Örneğin, ppmap tarafından sağlanan bir örnek şöyle görünebilir:
constructor[prototype][ppmap]=reserved
.Sayfada çalışacak olan JavaScript kodunun ilk satırında bir kesme noktası belirleyin. Yük ile sayfayı yenileyerek bu kesme noktasında yürütmeyi duraklatın.
JavaScript yürütme duraklatıldığında, aşağıdaki betiği JS konsolunda çalıştırın. Bu betik, 'ppmap' özelliği oluşturulduğunda sinyal verecek ve kökenini bulmanıza yardımcı olacaktır:
Kaynaklar sekmesine geri dönün ve "Betik yürütümünü devam ettir"i seçin. JavaScript yürütmeye devam edecek ve 'ppmap' özelliği beklenildiği gibi kirlenecektir. Sağlanan kod parçasını kullanarak 'ppmap' özelliğinin kirlendiği tam konumu belirlemek kolaylaşır. Çağrı Yığınını inceleyerek, kirlenmenin meydana geldiği farklı yığınlar gözlemlenebilir.
Hangi yığını inceleyeceğinize karar verirken, genellikle JavaScript kütüphane dosyalarıyla ilişkilendirilen yığınlara odaklanmak faydalı olur, çünkü prototip kirliliği sıklıkla bu kütüphanelerde meydana gelir. Kirlenme oluşan yığınları hedeflemek için, kütüphane dosyalarına bağlı olan ilgili yığını belirleyin (sağ tarafta görülebilir, rehberlik için sağlanan bir görüntüye benzer). 4 ve 6. satırlardaki gibi birden fazla yığın senaryolarında, kirlenmenin başlangıç noktasını ve dolayısıyla zayıflığın kök nedenini temsil ettiği için mantıklı seçim 4. satırdaki yığındır. Yığını tıklamak sizi zayıf kodun olduğu yere yönlendirecektir.
Betik Araçları Bulma
Araç, bir PP zayıflığı keşfedildiğinde kötüye kullanılacak kodtur.
Uygulama basitse, srcdoc/innerHTML/iframe/createElement
gibi anahtar kelimeleri arayabiliriz ve kaynak kodu inceleyerek ve javascript yürütümüne yol açıp açmadığını kontrol edebiliriz. Bazı durumlarda, bahsedilen teknikler hiçbir araç bulamayabilir. Bu durumda, saf kaynak kod incelemesi aşağıdaki örnekte olduğu gibi bazı güzel araçları ortaya çıkarır.
Mithil kütüphane kodunda PP aracı bulma örneği
Bu yazıyı kontrol edin: https://blog.huli.tw/2022/05/02/en/intigriti-revenge-challenge-author-writeup/
Kırılgan kütüphaneler için payload'ların yeniden derlenmesi
PP aracılığıyla HTML Temizleyicilerin atlatılması
Bu araştırma bazı HTML temizleyici kütüphaneler tarafından sağlanan temizlemeleri atlatmak için kullanılabilecek PP araçlarını göstermektedir:
sanitize-html
dompurify
Closure
Referanslar
Last updated