• 03-05-2010, 13:42:56
    #10
    MC_delta_T adlı üyeden alıntı: mesajı görüntüle
    sorguya giren değişkenlerde sadece mysql_real_escape_string() kullanmak yeterli midir? özel karakterleri escape etmek açısından.

    Bahsettiğin fonksiyon sql sorqularında işe yarar. XSS açıklarını engellemek için yukarıdaki fonksiyonları kullanabilirsin. Bunun için yazılmış fonksiyonlar vs bulabilirsin.

    MC_delta_T adlı üyeden alıntı: mesajı görüntüle
    bu açıkla sadece js kodu mu eklenebilir? server da çalışan bir kod eklenemedikten sonra nasıl bir güvenlik açığı oluşabilir?
    Yukarıda da dediğim gibi XSS açığına sebep olur. Bu açığı nette biraz araştırmanı tavsiye ederim.



    MC_delta_T adlı üyeden alıntı: mesajı görüntüle
    getimagesize() ile tespit edince nasıl bir sorun oluşabilir? resim formatında olmayan bir dosyayı da resim dosyası olarak mı görür?
    Sadece getimagesize ile kontrol yaparsan php uzantılı bir kodun ilk satırına GIF89a; kısmını koyarak sunucuya bu dosyayı .gif dosyası gibi gösterebilirsin. sdemirkeserin dediği gibi dosya uzantılarını kontrol ederek, ve yukarıda dediğim gibi dosyayı ikillik açıp içinde mysql, javascript, <?php , gibi zarar meydana getirebilecek kodları aratabilirsin.

    echo adlı üyeden alıntı: mesajı görüntüle
    panel şifrelemede nasıl bir yol izlemeliyiz tecrübeli arkadaşların önerilerini bekliyorum.
    Panel şifrelemeden kastın, yönetici şifrelerini korumak mıdır ? Eğer demek istediğin buysa ben şifreleri 2-3 kere md5 ile şifrelerim. sha şifreleme yöntemini de incele tabii. Ayrıca brute force( deneme yanılma ile şifre tespiti) denilen saldırıların önüne geçebilmek için güvenlik kodu koymanı tavsiye ederim.
  • 03-05-2010, 13:53:30
    #11
    Üyeliği durduruldu
    eagle_one adlı üyeden alıntı: mesajı görüntüle
    yukarıda dediğim gibi dosyayı ikillik açıp içinde mysql, javascript, <?php , gibi zarar meydana getirebilecek kodları aratabilirsin.
    uzantisi php olmadigi surece sunucu tarafinda yorumlanmadigindan dosyayi acmayabile gerek kalmamis olur
  • 03-05-2010, 14:03:42
    #12
    Üyeliği durduruldu
    eagle_one adlı üyeden alıntı: mesajı görüntüle
    Bahsettiğin fonksiyon sql sorqularında işe yarar. XSS açıklarını engellemek için yukarıdaki fonksiyonları kullanabilirsin. Bunun için yazılmış fonksiyonlar vs bulabilirsin.



    Yukarıda da dediğim gibi XSS açığına sebep olur. Bu açığı nette biraz araştırmanı tavsiye ederim.
    anladığım kadarıyla bu şekilde hazırlanmış bir linki başkasına yedirirsek, yani tıklamasını sağlarsak açık oluşuyor. cookie leri okutmak gibi.





    eagle_one adlı üyeden alıntı: mesajı görüntüle
    Sadece getimagesize ile kontrol yaparsan php uzantılı bir kodun ilk satırına GIF89a; kısmını koyarak sunucuya bu dosyayı .gif dosyası gibi gösterebilirsin. sdemirkeserin dediği gibi dosya uzantılarını kontrol ederek, ve yukarıda dediğim gibi dosyayı ikillik açıp içinde mysql, javascript, <?php , gibi zarar meydana getirebilecek kodları aratabilirsin.
    denedim ve işte sonuçlar;
    -php dosyasının başına GIF89a; ekledim ama uzantısını php olarak bıraktım. getimagesize() hiçbirşey döndürmedi. ben buradan dönen değeri if..else soktuğum için bir sorun oluşturmaz

    -aynı dosyanın uzantısını gif yaptım. getimagesize() gif zannetti. ama bu seferde server da php compiler tarafından bir işleme girmeyeceği için yine bir güvenlik açığı oluşturmaz.

    zararlı kodlar içeren bir dosyayı nasıl resim olarak gösterip, sonra da server tarafından php dosyası olarak işlenmesi sağlanır?

    not: bu soruları gerçekten öğrenmek için soruyorum, ukalalık gibi algılanmasın. yeni bir script kodluyorum ondan merak saldım.
  • 03-05-2010, 14:07:28
    #13
    peki yönetici panelini şifrelemek dışında, yönetici klasörünü cpanelden .ht ile şifrelesek güvenlik açısından sorun teşkil eder mi?
  • 03-05-2010, 14:15:40
    #14
    sdemirkeser ; ne yazık ki basettiğimiz upload işlemi sandığımız kadar basit değil. Yani sadece uzantıyı kontrol edip güvenli olduğumuzu düşünmemek gerekir.

    http://www.acunetix.com/websitesecur...rms-threat.htm

    acunetix şirketinin bir makalesi var. İngilizce olan bu makale gerçekten faydalı duruyor. case 3, case 4 ve case 5 kısımlarını okumanızı tavsiye ederim. Ben anlayabildiğim kadarına baktım.

    --

    MC_delta_T ; belki eksik yazdım, belki de eksik anladın. Ama sadece getimagesize kullanmak tehlikeli. Dediğim gibi bunu acı bir tecrübe ile anladım... Ne demek istediğimi anladın sanırım.

    İlk mesajlarda verdiğim pdf dosyasını, ve bu mesajda verdiğim makaleye göz atınız.


    echo ; muhtemelen daha güvenli olur. Ama emin değilim.
  • 03-05-2010, 14:16:37
    #15
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Aldığım veriyi aşağıdaki şekilde temizlerim:
    $veri = !empty($_GET['veri']) ? $_GET['veri'] : 'Bi şey yazılmamış. Ne ayak?';
    
    if (is_numeric($veri))
    	$veri = (int) $veri;
    else
    	$veri = htmlspecialchars($veri, ENT_QUOTES);

    Şifreleri veritabanında bi güzel SHA1'lerim. Gibi gibi...
  • 03-05-2010, 14:30:43
    #16
    Üyeliği durduruldu
    eagle_one adlı üyeden alıntı: mesajı görüntüle
    MC_delta_T ; belki eksik yazdım, belki de eksik anladın. Ama sadece getimagesize kullanmak tehlikeli. Dediğim gibi bunu acı bir tecrübe ile anladım... Ne demek istediğimi anladın sanırım.

    İlk mesajlarda verdiğim pdf dosyasını, ve bu mesajda verdiğim makaleye göz atınız.
    şimdi benim kullandığım mantık şöyle;

    upload edilen dosyayı geçici bir klasöre alıyorum. getimagesize() bilgilerini alıyorum. 2 key numaralı değeri switch case e sokup oradan bir uzantı alıyorum. ayrıca dosyanın adını da komple ben oluşturuyorum. yani kullanıcının upload ettiği dosyanın adı ne olursa olsun server da benim istediğim şekilde bulunabiliyor.

    geçici klasördeki dosyayı da kontrolden hemen sonra siliyorum ve burada da random isimler ile kayıt ediyorum.

    şimdi bu mantıkta güvenlik açığı oluşabilir mi? verdiğin linkteki örnekler hep kullanıcının upload ettikleri dosyanın orijinal ismi ile ilgili. ben onu hiç kullanmıyorum ama.
  • 03-05-2010, 14:37:46
    #17
    MC_delta_T adlı üyeden alıntı: mesajı görüntüle
    şimdi benim kullandığım mantık şöyle;

    upload edilen dosyayı geçici bir klasöre alıyorum. getimagesize() bilgilerini alıyorum. 2 key numaralı değeri switch case e sokup oradan bir uzantı alıyorum. ayrıca dosyanın adını da komple ben oluşturuyorum. yani kullanıcının upload ettiği dosyanın adı ne olursa olsun server da benim istediğim şekilde bulunabiliyor.

    geçici klasördeki dosyayı da kontrolden hemen sonra siliyorum ve burada da random isimler ile kayıt ediyorum.

    şimdi bu mantıkta güvenlik açığı oluşabilir mi? verdiğin linkteki örnekler hep kullanıcının upload ettikleri dosyanın orijinal ismi ile ilgili. ben onu hiç kullanmıyorum ama.
    Tamam, sen getimagesize ile birlikte dosya uzantısınıda kontrol ediyorsun. Bu yöntemde sdemirkeser'e göre sorun olmaz. ( yanlış anladıysam bu noktada devreye sdemirkese girebilir ) Anladığım kadarıyla kendisi de bu yöntemi kullanıyor.

    Okuduğum makalelerde bu yöntemin de ( dosya uzantısı kontrol etme ) geçilebileceğini gördüm. Bana göre bu yöntem de güvenli değil.

    Alıntı
    One main disadvantage of using black listing of file extensions, is that it is almost impossible to compile a list that includes all possible extensions that an attacker can use. E.g. If the code is running in a hosted environment, usually such environments allow a large number of scripting languages, such as Perl, Python, Ruby etc, and the list can be endless.

    A malicious user can easily bypass such check by uploading a file called “.htaccess”, which contains a line of code similar to the below:

    AddType application/x-httpd-php .jpg
    Az önce bağlantısını verdiğim makaleden bir bölüm.
  • 03-05-2010, 14:41:40
    #18
    Üyeliği durduruldu
    eagle_one adlı üyeden alıntı: mesajı görüntüle
    sdemirkeser ; ne yazık ki basettiğimiz upload işlemi sandığımız kadar basit değil.
    dosyanin uzantisi .gif olduktan sonra icerisinde milyon tane php kodu yazsa ne farkederki. sonucta sunucu onu php olarak yorumlamaz. gereksiz stres yapiyorsunuz bu konuda.az onceki makalede belirttigi sey calisabilmesi icin zaten htaccess uzantili dosyada upload edebilmesi lazim. nihayetinde sen sadece jpeg uzantisina izin veriyorsan mesela bir sorun teskil etmemis olacak.