Express Prototype Pollution Gadgets
WhiteIntel, karanlık ağ destekli bir arama motorudur ve şirketin veya müşterilerinin hırsız kötü amaçlı yazılımlar tarafından kompromize edilip edilmediğini kontrol etmek için ücretsiz işlevler sunar.
WhiteIntel'in başlıca amacı, bilgi çalan kötü amaçlı yazılımlardan kaynaklanan hesap ele geçirmeleri ve fidye yazılımı saldırılarıyla mücadele etmektir.
Websitesini ziyaret edebilir ve motorlarını ücretsiz deneyebilirsiniz:
XSS yanıtlarını sunun
Daha fazla ayrıntı için orijinal araştırmaya göz atın
JSON içerik türünü HTML olarak değiştirin
Bir Express uygulamasında JSON içerik türü yanıtı kullanan ve bir JSON yansıtan:
Bu durumlarda XSS genellikle JSON içerik türüyle mümkün olmaz. Bununla birlikte, prototype pollution ile Express'i bir HTML yanıtı sunmaya zorlayabiliriz. Bu zafiyet, uygulamanın res.send(obj)
kullanmasına ve application/json içerik türüyle body ayrıştırıcısını kullanmasına dayanır.
body
ve _body
özelliklerini kirleterek, Express'in HTML içerik türünü sunmasına ve _body özelliğini yansıtarak depolanmış XSS'e neden olmak mümkündür.
UTF7 Renderleme
Express'in UTF-7 içeriği renderlamasını sağlamak mümkündür:
Güvenli Tarama Teknikleri
JSON boşlukları
Aşağıdaki PP, bir JSON içindeki özelliklere işlevselliği bozmayacak ek bir boşluk ekleyecektir:
Ardından yansıtılan JSON şu şekilde görünecektir:
Açıkta Kalan Başlıklar
Aşağıdaki PP cihazı sunucunun Access-Control-Expose_headers: foo
HTTP başlığını geri göndermesini sağlayacaktır.
CORS modülünün yüklü olması gerekmektedir
OPTIONS Metodu
Aşağıdaki yük ile bir OPTIONS yanıtından bir metod gizlemek mümkündür:
Durum
Aşağıdaki PP yükü kullanılarak döndürülen durum kodu değiştirilebilir:
Hata
Bir dize gibi bir ilkel değerle bir prototip atadığınızda, prototipin bir nesne olması gerektiği için bir işlem yapılmaz. Bir prototip nesnesini Object.prototype
'e atamaya çalışırsanız, bu bir istisna fırlatacaktır. Bu iki davranışı kullanarak prototip kirliliğinin başarılı olup olmadığını tespit edebiliriz:
Yansıtılan Değer
Bir uygulama yanıtında bir nesne içerdiğinde, __proto__
ile birlikte olağandışı bir isme sahip bir özellik oluşturmak, bilgilendirici olabilir. Özellikle, yanıtta yalnızca olağandışı özelliğin döndürülmesi, uygulamanın zafiyetini işaret edebilir:
Ayrıca, Lodash gibi bir kütüphane kullanıldığı senaryolarda, bir özelliği hem prototip kirliliği (PP) aracılığıyla hem de doğrudan nesnenin içine ayarlamak, başka bir teşhis yaklaşımı sunar. Eğer bu tür bir özellik yanıttan eksikse, bu, Lodash'ın birleştirmeden önce hedef nesnede özelliğin varlığını doğruladığını gösterir:
Diğer
Noktalara İzin Ver
Express'te sorgu dizesi parametrelerinden nesneler oluşturmanıza izin veren bir seçenek bulunmaktadır. Bu seçeneği kesinlikle bir hata zinciri içinde kullanarak bir prototype pollution zafiyetini sömürmekte kullanabilirsiniz.
?foo.bar=baz
Node'da bir nesne oluşturur.
Referanslar
WhiteIntel, karanlık ağ destekli bir arama motorudur ve şirketin veya müşterilerinin hırsız kötü amaçlı yazılımlar tarafından kompromize edilip edilmediğini kontrol etmek için ücretsiz işlevsellikler sunar.
WhiteIntel'in başlıca amacı, bilgi çalan kötü amaçlı yazılımlardan kaynaklanan hesap ele geçirmeleri ve fidye saldırılarıyla mücadele etmektir.
Websitesini ziyaret edebilir ve motorlarını ücretsiz deneyebilirsiniz:
Last updated