2013-04-05 25 views
7

Giriş kutusuna girilen komut dosyasını çalıştıran bir XSS savunmasız web sayfası oluşturmak istiyorum. Burada bu kodu yazdım ama ne zaman bir yazı girdiğimde hiçbir şey olmuyor.XSS savunmasız web sayfası oluşturulması

<html> 

<head> 
</head> 

<body> 
<script type="text/javascript"> 
function changeThis(){ 
    var formInput = document.getElementById('theInput').value; 
    document.getElementById('newText').innerHTML = formInput; 
    localStorage.setItem("name","Hello world!!!"); 
} 
</script> 

<p>You wrote: <span id='newText'></span> </p> 

<input type='text' id='theInput' value='Write here' /> 
<input type='button' onclick='changeThis()' value='See what you wrote'/> 
</body> 

</html> 

Lütfen yardım edin. Kodu nasıl değiştirmeliyim?
Güncelleme: Yansıtılan XSS yapmaya çalışıyordum. Bana göre eğer girişte bir senaryo girersem yürütmeliyim. Bu, yalnızca kullanıcının geçerli bir girdi girip girmediğini kontrol etmediğimde ve betiği yürütmemesi için harekete geçtiğimde gerçekleşir.
Bir giriş sayfası komut dosyası yürütürken aşağıdaki gibi bir komut yazdığım zaman XSS'e karşı savunmasız bir web sayfası olan .
Ne yaptığım ve ne yaptığım arasındaki temel farkın ne olduğunu bilmek istiyorum.

+2

XSS olduğunu. Sayfayı doğrudan değiştirmek XSS değil. Herkes istediği zaman geliştirici konsolundan bunu yapabilir. – zzzzBov

+2

Hayır, Refelected XSS'yi deniyorum. Bakmak isteyebilirsiniz: http://en.wikipedia.org/wiki/Cross-site_scripting – Naman

+0

yansıyan XSS bir sorgu dizesi aracılığıyla enjekte komut dosyasına dayanır. Formunuz, aynı sayfaya bir GET isteği oluşturmalı ve RXSS verileri için JavaScript'i window.location.search'de analiz etmelidir. – zzzzBov

cevap

3

Bir script etiketi enjekte etmek için innerHTML kullanırsanız ... komut dosyası çalışmaz!

<img src="someImage.gif" onload="alert('hacked!')" /> 

[Güncelleme] Son soruya Hakkında:

Bunun yerine ne olabilir bir yüklendiğinde olay işleyicisi ile bir görüntü enjekte olan temel fark insecurelabs sayfasını kullanarak durumdayken, innerHTML kullanarak olmasıdır jQuery.html(). JQuery yaklaşımı komut dosyasını çalıştıracaktır.

Canlı tanıtım:

+1

Bu XSS değil. – zzzzBov

+1

@zzzzBov doğru, ancak yayınlanan kod dayanarak, aslında aslında komut dosyası enjeksiyon anlamına gelir. – Christophe

+0

@zzzzBov, asla öyle olmadığını söyledi. Bu, OP'nin keşif yolculuğuna devam etmesine izin verecek olan "hiçbir şey olmuyor" durumuna bir çözüm getiriyor. ;-) – Travis

-2

http://jsfiddle.net/wqqWt/ Sadece eval kod: bir saldırganın bir sayfaya kalıcı * HTML * enjekte zaman

function changeThis(){ 
    var formInput = document.getElementById('theInput').value; 
    eval(formInput); 
} 
+0

Bu XSS değil. – zzzzBov

+0

Olmadığını biliyorum, ancak OP'nin sorduğu şeyi yapar (giriş alanında bir url yazmanız gerekmedikçe, Christophe'nin cevabı vardır). – bfavaretto

+0

Pekala, bu yüzden, OP dilindeki yanlışlıklara rağmen, sorulan soruları yanıtlamak için bir indirgemenin olduğunu düşünüyorum; İkincisi, "değerlendirme kötülük" ne olurdu? – bfavaretto