XSS Me Uyarılar - Gerçek XSS sorunlar?

4 Cevap php

Ben XSS sorunları için test Güvenlik Pusula adlı ücretsiz Firefox eklentisini XSS Me kullanarak oldum. Ancak, güvenli filtreleme olmasını anlamak ne kullanarak, beni hala uyarılar bildirir XSS. Bu doğru bir uyarı veya sahte mi?

Bir testcase olarak aşağıdaki kodu kullanarak:

<form method="post" action="">
<input type="text" name="param" value="<?php echo htmlentities($_POST['param'])?>">
<input type="submit">
</form>
<?php echo htmlentities($_POST['param'])?>

Ben elle bazı nasties işletilen ancak bunların hiçbiri tarayıcıda yürütülür, ve Charles debugging proxy beklediğim gibi tepki kodlanmış olduğunu görebilirsiniz kullanarak.

However, XSS Me reports a number of warnings, as if it can see the unencoded string in the HTML source: alt text

Aynı anda Charles baktığımızda, ben dizeleri kodlanmış görebilirsiniz ve güvenli olmalıdır mesela &lt;IMG SRC=&quot;jav ascript:document.vulnerable=true;&quot;&gt;

  • Ben sabit değil, bir güvenlik açığı var mı?
  • Bu sahte uyarı mesajları nelerdir?
  • Ve eğer öyleyse, XSS Me ile çelişen başka bir Firefox eklentisi (Kundakçı?) Nedir?

4 Cevap

Ben Güvenlik Pusula çalışmak ve Beni Exploit araçlar için kurşun geliştirici duyuyorum.

Bu saldırı dizeleri tamamen geri unencoded sunucudan gelmiş (XSS Me) görünüyor çünkü XSS Beni bir uyarı raporlama konusunda haklısın. (IE 6/7/8, Safari veya Chrome gibi) başka bir ayrıştırıcı / JavaScript motoru Firefox'un ayrıştırıcı ve JavaScript motoru yapmak olsa bile bu kod çalıştırmak olabilir.

XSS Beni iki istekleri gönderir:

  • Biz "hataları" dediğimiz, Firefox JavaScript motorunu kullanarak sömürü algılamak tek bir isteği
  • Biz sadece HTML yanıt sayfasındaki saldırı dize için grepping tarafından istismar tespit ikinci isteği

Eğer alıyorsanız uyarı bu ikinci isteği neden olur.

Ben aşağıdakileri yapabilirsiniz eğer bu sorunun kök nedeni almak yardımcı olabilir:

  1. Yerine Charles daha saldırı dize algılamak için paket koklama yazılım (yani Wireshark http://www.wireshark.org/) kullanın. Bazen vekiller değiştirmenin bir yolu var veya başka istekleri değiştirmeden

  2. Firefox, size araçlar-> addons gidin ve XSS Me hariç tüm uzantıları devre dışı bırakabilirsiniz? Bu Me XSS alır önce bu şekilde diğer hiçbir uzantısı yanıt (veya istek) değişiyor emin olabilirsiniz.

  3. Unencoded dizesi görünür görmek için Firefox'ta tepki sayfanın kaynağını görüntüle

Bu sonuçlar ile bana bir e-posta (tom@securitycompass.com) göndermek isterseniz ben bu anlamaya yardımcı olmaktan mutluluk duyarım. (Ben kesinlikle umut) XSS Me bir hata varsa o zaman ben bunu yama ve yeni bir oluşturmaktır alabilirsiniz.

Teşekkürler,

Tom

Ben bu bir yanlış pozitif eminim. Ben daha iyi bir xss test aracı almak gerektiğini düşünüyorum. Acuentix çok iyi ve ücretsiz xss tarayıcı vardır: http://www.acunetix.com/cross-site-scripting/scanner.htm. Wapiti ve w3af açık kaynak kodlu ve aynı zamanda büyük tarayıcılar bulunmaktadır.

Php iyi xss filtre:

htmlspeicalchars($_POST['param'],ENT_QUTOES);

Eğer some XSS istismar>

print('<A HREF="http://www.xssed.com/'.htmlspecialchars($_REQUEST[xss]).'">link</a>');

You don't need <> to execute javascript in this case because you can use onmouseover, here is an example attack:

$_REQUEST[xss]='" onMouseOver="alert(/xss/)"';

ENT_QUOTES çift tırnak önemser.

Alan içinde herhangi bir HTML için varsayalım değil ise, strip_tags($strings) gibi bir şey denemek isteyebilirsiniz. Bu dizeden HTML etiketlerini (çoğu) dışarı şerit olacak.

Ben mükemmel değil, ve diğer insanların size anlatacağım gibi, HTML ayrıştırıcılar HTML sıyırma için muhtemelen en iyi olduğuna inanıyorum çünkü çoğu söylüyorlar. Ancak çoğu durumda önlemler yeterli olmalıdır.

Benim sunucuda test ve uzantısı bir hata gibi görünüyor 'm. Ben başka bir uzantısı "XSS ME" uzantısı ile çatışmalar yaptığına inanmıyorum.

BTW, Htmlentities ile XSS eklemek için tüm olanaklarını kapsayacak, yani anti-XSS kütüphanesi çeşit kullanarak düşünmüyoruz :)