2013-02-28 12 views
5

Bir web uygulamasını test ediyorum. "Hello" bir uyarı görüntüleyecek bir komut dosyası yazmak istiyorum.Çapraz Site Komut Dosyası Enjeksiyonu

<script >alert("Hello");</script > 

Ama uyarı "Hello" görüntü vermedi:

yazdım ilk senaryoydu. Ben çalışan XSS senaryo

<SCRIPT >alert(String.fromCharCode(72,101,108,108,111,33))</SCRIPT > 

Ben ilk komut programından neden bilmek istiyorum olduğunu keşfetti.

+0

XSS hakkında daha fazla bilgi sahibi olmak istiyorsanız [XSS Filtresi'ni önerebilirim Evasion Hile Sayfası] (https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet). – Eich

+0

Henüz cevabı neden kabul etmediniz, emin değilim. Oldukça sağlam görünüyor. – SoonDead

cevap

7

Bu sitenin büyük olasılıkla, HTML öğelerini içeren çift tırnakların yerini alması veya bunları JavaScript için uygun olmayan başka bir yöntemle çıkarmasıdır. String.fromCharCode(...)'u kullanırken, herhangi bir tırnak işareti kullanmanız gerekmeyecek, dolayısıyla çalışacaktır. Dize karakterlerinin ASCII kodlarının bir listesini alır ve çalışma zamanı sırasında bunlardan bir dize oluşturur. Yani herhangi bir alıntıya gerek yok.

Bu tür bir XSS'den kaçınmanın doğru yolu, &lt; ile <'un yerini almaktır - bu şekilde bir komut dosyası etiketi hiç oluşturulamaz.

HTML içeren verileri dezenfekte ederken >, " ve &'un da ilgili HTML varlıkları ile değiştirilmesi gerektiğini unutmayın! Ancak, HTML özniteliklerinde güvenilmeyen herhangi bir veri kullanılamadığı varsayılarak XSS saldırılarını yenmek için yalnızca < kesinlikle gereklidir (" dezenfekte edilmelidir)

+0

Evet @ThiefMaster, site ilk komut dosyasında "Merhaba" u "Hello \" olarak değiştirir. Sitenin bunu neden yaptığını bilmek isterim. Ayrıca, ben 'String.fromCharCode (72,101,108,108,111,33)' Hello görüntülemek için nasıl çalıştığını bilmek istiyorum! – IBK

+0

'String.fromCharCode' normal bir JavaScript yöntemidir (burada açıklanmıştır (http://www.w3schools.com/jsref/jsref_fromcharcode.asp)). '