Xss Şeysi...

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    sakat-at
    sakat-at's avatar
    Kayıt Tarihi: 11/Aralık/2007
    Erkek
    Xss nedir? ne değildir ?

    bunun cevabı zaten sık sık tekrar edildi. Birkez daha tekrar edelim ve kendi dökümanımızı yazalım.

    Xss Cross site scripting ( çapraz site kodlaması ) anlamında kullanılır.Xss bir web sayfasının gönderdiği get veya post yöntemlerinden faydalanarak kod çalıştırma işlemidir.

    Temsil-i Misal:
    CODE
    <html>
    <head>
    <title>Xss</title>
    </head>
    <body>
    <h1> Xss </h1>
    <br/>
    <form name="xss" action="xssal.php" method="get">
    Aranacak Kelime : <input type="text" name="xss"/><br/>
    <input type="submit" value="Ara"/>
    </form>
    <!-- Form oluşturduk öncelikle buraya kadar herşey normal xss çıkartacak bir durum yok -->
    </body>
    </html>


    Yukarıdaki formu göndereceğimiz xssal.php yi oluşturalım..

    CODE
    <html>
    <head>
    <?php
        $kelime = $_GET['xss'];
        //Buraya dikkat burda hiç bir filtreleme yapmadan veriyi aldık.
    ?>
    <title>
    <?php echo $kelime; //İşte önemli hususlardan birisi daha.
    //burada başlık kısmına aranan kelimeyi yazdırıyoruz. Üstelik filtresiz bir kelime :S
    ?>
    </title>
    </head>
    <body>
    <!-- arama kodlarını yazmıyorum -->
    Aranan '<?php echo $kelime; ?>' kelimesi kayıtlarda bulunamadı..
    <!-- işte buyrun bi yere daha yazdırdık :S -->
    <br />
    Tekrar Ara: <br/>
    <form name="sada" action="xssal.php" method="get">
    Aranacak Kelime: <input type="text" name="xss" value="<?= $kelime;?>"><br/>
    <!-- alın işte bir yere daha yazdırdık ... -->
    <input type="submit" value="ara"/>
    </form>
    </body>
    </html>


    birinci form ile bilgileri ikinci forma gönderiyoruz. bunda bi anormallik yok.
    ikinci formda ise birinci formdan gelen bilgileri alıyoruz. üstelik filtresiz. filtresiz almak demek sql inj. açığı ve sayfada o kelimeyi üç farklı yerde yazdırmakta xss açığı demektir...

    bu sayfayı açın. gönderim kısmına "></title></head><script>alert(123);</script> yazın...

    ikinci sayfaya göndermek için tuşa bastığınızda karşınıza tam üç adet 123 uyarısı çıkacaktır. buda demektirki geçmiş olsun xss i yedik.

    filtrelemiyosanız sayfaya yazdırmayın ve veritabanında arma yaptırtmayın.

    sağlam halini yapalım o zaman smile.gif

    gönderme işlemi aynı şekilde kalacak...

    sadece alım işleminde değişiklik yapacağız...

    CODE
    <html>
    <head>
    <?php
         $kelime = htmlspecialchars(strip_tags(addslashes($_GET['xss']));
         // htmlspecialchars(strip_tags(addslashes   <- bunlar php nin filtreleme fonksiyonudur . html karakterlerini filtrelerler ve tırnak işaretleri önüne \ koyarlar...
    ?>
    <title>
    <?php echo $kelime;
    ?>
    </title>
    </head>
    <body>
    <!-- arama kodlarını yazmıyorum -->
    Aranan '<?php echo $kelime; ?>' kelimesi kayıtlarda bulunamadı..
    <br />
    Tekrar Ara: <br/>
    <form name="sada" action="xssal.php" method="get">
    Aranacak Kelime: <input type="text" name="xss" value="<?= $kelime;?>"><br/>
    <input type="submit" value="ara"/>
    </form>
    </body>
    </html>



    yukarıdaki ise sağlam kod. deneyin görün sonucu smile.gif

    biraz karışık oldu ama idare edin artık smile.gif

    a.k.a. wyrus , kelle verilir kal-a verilmez!
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ★★★★★
    Genki
    Genki's avatar
    Kayıt Tarihi: 24/Ağustos/2005
    Erkek
    nury bence senin test ettiğin sayfanın kodları farklı
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    sakat-at
    sakat-at's avatar
    Kayıt Tarihi: 11/Aralık/2007
    Erkek
    maalasef arkadaşım yemiyor :) en altta kod sağlam kod. sen yukardakini denediysen zaten hatalı diye belirtmişim :) veri alışında htmlspecialchars(strip_tags(addslashes($_GET['xss']))) bu şekilde 3 filtreden geçirdikten sonra zaten yemesi saçma...

    a.k.a. wyrus , kelle verilir kal-a verilmez!
Toplam Hit: 2066 Toplam Mesaj: 5