Neler Yeni

Giriş Formlarında XSS

Katılım
22 Nis 2020
Mesajlar
86
Tepkime puanı
23
Puanları
150
Merhabalar arkadaşlar.
Her zamankı gibi yabancı kaynakları araştırarken yeni ve yaralı br yazı buldum. Ve hemen hiç geciktirmeden DH`ye kazandırmak gereğini duydum. Bugünkü yazımdada Sınırlı Giriş Formlarında XSS saldırıları hakkında yazacam.
Yazıyı okuduktan sonra yorum yapmayı unutmayın arkadaşlar.
07.gif

Ve birde arkadaşlar DH de bulunan Filrelemeler dolayından bazı payloadlar yanlış yazıla bilir. O yüzden Sizlere kesinlikle payloadları kullanarken Ekran görüntülerindeki payloadlarla tutuşturmayı öneririm.
Haydı Başlayalım
XSS
açıklarını test etmek için girişin veri formatını bilmek gerekir. Genellikle, biçim herhangi bir kısıtlama olmadan basitçe "string" dir, ancak bazen XSS giriş noktasının manipülasyonu sınırlıdır. Çoğu zaman, doğru olmayan bir saldırıyı önlemek için özel olarak tasarlanmış / çalışan bir güvenlik filtresinin varsayılmasına yol açabilir. Bu yüzden bu formatlardan bazılarını göreceğiz ve klasik XSS PoC‘yi elde etmek için onlarla nasıl başa çıkacağımızı göreceğiz. Bugünleri de biz kullanacaz.
1. Email
E-posta adresleri formlarda yaygın olarak kullanılır ve bir web uygulamasının farklı bölümlerinde birkaç kez görüntülenir. XSS vektörümüzü nasıl basit bir şekilde uyarlayabildiğimizi göstermek için bu giriş edin.
Klasik bir e-posta formatından farklı herhangi bir giriş, bir "INVALID" yanıtı döndüren uygulama tarafından reddedilir:
T38.png

Dezenfekte edici bir işlem yoktur, sadece PHP’nin filter_var (veya filter_input) işlevinin FILTER_VALIDATE_EMAIL bayrağı tarafından gerçekleştirilmiş doğrulamadır. Doğrulamayı geçmek için sadece bir “@X.y” (tırnak işaretleri olmadan) ekleme meselesi gibi görünüyor, ancak öyle değil.
T3n.png

Doğrulama mekanizmasını geçmek ve XSS‘E ulaşmak için çözüm, ‘ye göre basit ve mükemmel geçerli bir e-posta adresine dayanır.
kullanacağımız payload : " lt;svg/onload=alert(1) gt;"@x.y
T3v.png

2. URL (Sorgusuz)
URL biçimindeki giriş bazen gördüğümüz gibi HTML bağlantı öğelerinin “href” (köprü metni referansı) ile sonuçlanır. Örneğimizde “Beni tıkla” yı tıklarsak, sayfa ziyaretçiyi Google Arama web sitesine gönderir.
T3y.png

Yine dezenfekte edici değil, sadece PHP filter_var veya filter_input işlevinin FİLTER_VALİDATE_URL bayrağı tarafından getirilen doğrulama var. Hızlı bir şekilde, “protokol://reference” biçimini koruyarak http yerine JavaScript sözde protokolünü kullanabileceğimizi öğrenmek mümkündür.
T3z.png

JavaScript sözde protokolünde JS kodunu“: ” den hemen sonra kullandığımız için, çift eğik çizgi yükü (//) işe yaramaz hale getirir çünkü tüm satırı bir yoruma dönüştürür. Geçici bir çözüm olarak, yeni bir satır karakteri (%0A) kullanırız, ancak tarayıcı yönlendirmesinde sona ermesi gerektiğinden ve tek bir kodlanmış yeni satır sadece sayfanın kaynak koduna yansıdığından çift kodlanır.
kullanacağımız payload : javascript://%250Aalert(1)
T3J.png


3. URL (Sorgu ile)
URL‘de bir sorgu eklememiz gereken önceki yaptığımızn bir versiyonu. kontrol edebilirsiniz.
Basit bir “? 1”, filtreyi geçmek için yeterli ancak geçerli bir JS sözdizimi oluşturmuyor. Bu yüzden sadece yorum yaparız:

kullanacağımız payload : javascript://%250Aalert(1)//?1

Üçlü bir operatör de kullanabiliriz: javascript://%250A1?alert(1):0
Işte payloadımızı yazıp ta Click me ye tıkladığımız anda aşağıdakı gibi XSS alertini almış olacağız.
T3K.png

Sağlanan URL’de belirli bir alan adının varlığına ilişkin ekstra bir onay olabilir. Bu da, son formumuz olan aşağıdaki biçimde kolayca atlanabilir:
kullanacağımız payload : javascript://https://domain.com/%250A1?alert(1):0

4. Anahtar

Test edilmesi zor bir format, sabit uzunlukta karakterlere sahip bir formattır. Bu tür girdilerin en iyi örneği, API gibi bir anahtardır. Sıkı char limiti göz önünde bulundurularak testler yapılması gerektiğinden, hem otomatik araçlar hem de manuel taramalar tarafından kaçırılması kolaydır. inceleye bilirsiniz.
T3a.png

Bir payload deneyelim.
T3H.png

gördüğünüz gibi payloadı çalıştırmadı. Bunun sebebi örnek anahtarın uzunluğu aynı olmayan herhangi bir girişi görebildiğimiz gibi geçersiz olarak döndürülür. MD5 hashının 32 karakter uzunluğunu tamamlamak için sadece bazı ekstra boş karakterleri kullanmamız gerekiyor ve açılır pencere tetikleniyor.

kullanacağımız payload : 12345678901 lt;svg onload=alert(1) gt;
T3O.png

gördüğünüz gibi yemi yuttu :)

Evet arkadaşlar. Bugünkü yazımı da burada tamamlamak istiyorum. Fikirlerinizi yorumlarda bildirmenizi rica ediyorum.
 

Konuyu görüntüleyen kullanıcılar

Üst