• 22-10-2013, 16:30:54
    #1
    Kurumsal Üye | R10 19.YIL
    Selam arkadaşlar yapmış olduğum bir sitede
    alanadı.com/yonetim/upload/upload.php (basit resim yükleme sayfası)
    dosyamı oturum kontrolü ile erişime engelleme işlemi yapmayı unutmuşum buradan adam shell atmış sanırım sitede yönetim klasörlerini ve resim klasörlerisini silmiş birde mail atmış upload açığı var diye.

    Birinci sorum suç sadece benimmi yoksa hostingiminde bir payı varmı

    İkinci sorum ise örneğin sitede insan kaynakları formu filanda mevcut kişi resminide formla beraber gönderiyor ben burada bu upload işlemini kullanmıştım ama şimdi sadece admine erişimi açık

    üyelere açık upload sayfası hazırladım bunda dosya kontrolü yaptım yeterli olurmu sadece ?
  • 22-10-2013, 16:40:08
    #2
    Suç sende gibi. Kullanıcının yükleyeceği dosyaları kontrol ettirmelisin. Eğer resim yüklüyorsa yeniden boyutlandırma işlemi yapabilirsin. Eğer resim değilse hata döndürecektir.

    Edit: Klasörleri silmesinin sebebi büyük ihtimalle sheli temizlemektir. Kötü niyetli bir hacker olduğunu düşünmüyorum.
  • 22-10-2013, 17:44:53
    #3
    kodlamanı yaparken jpg, jpg, gibi uzantılar harici uzantıları yükletmemelisin. Ayrıca .htaccess ile de klasörün güvenliğini alman gerek.
  • 22-10-2013, 17:49:54
    #4
    ben de bunu anlamam! gir gez dolaş yık yağmala sil sonra mail gönder açık var diye. iyi niyetli olan adam baştan burda bu var şöyle girilir böyle kapatılır diye tarif eder, silmez bozmaz. geçmiş olsun dostum. önlemini al ne hosting firması ne başka biri sorumlu değildir tamamen senin sorumluluğun.
  • 22-10-2013, 18:03:06
    #5
    Kurumsal Üye | R10 19.YIL
    NaMLu adlı üyeden alıntı: mesajı görüntüle
    Suç sende gibi. Kullanıcının yükleyeceği dosyaları kontrol ettirmelisin. Eğer resim yüklüyorsa yeniden boyutlandırma işlemi yapabilirsin. Eğer resim değilse hata döndürecektir.

    Edit: Klasörleri silmesinin sebebi büyük ihtimalle sheli temizlemektir. Kötü niyetli bir hacker olduğunu düşünmüyorum.
    Divxci adlı üyeden alıntı: mesajı görüntüle
    kodlamanı yaparken jpg, jpg, gibi uzantılar harici uzantıları yükletmemelisin. Ayrıca .htaccess ile de klasörün güvenliğini alman gerek.
    zinan adlı üyeden alıntı: mesajı görüntüle
    ben de bunu anlamam! gir gez dolaş yık yağmala sil sonra mail gönder açık var diye. iyi niyetli olan adam baştan burda bu var şöyle girilir böyle kapatılır diye tarif eder, silmez bozmaz. geçmiş olsun dostum. önlemini al ne hosting firması ne başka biri sorumlu değildir tamamen senin sorumluluğun.

    Arkadaşlar aşağıda verdiğim scripte kullanıcılara açık olan kısımda dosya format kontrolü mevcut görüldüğü üzere.

    Yalnız bu .htacsess ile güvenliği alma olayı nasıldır o konuda yadımcı olabilirmisiniz ?


    <?php
    include("config.php"); 
    include("includes/fonksiyonlar.php");
    ?>
    <style type="text/css">
    
    input.dsaciklama {width: 440px; padding:4px; font-size: 12px; background: #dcdcdc; color: #4d4d4d}
    input.dsaciklama2 {border: 1px solid #ccc; padding: 3px; width: 622px; border-radius: 3px}
    
    input.gonder {width: 432px; background: #dcdcdc; padding: 3px 7px; color: #000; cursor:pointer; font-size: 13px}
    input.gonder:hover {background: #ccc;}
    
    input.bt {background: #ccc; border: 1px solid #ccc; padding: 3px 7px; border-radius: 3px; color: #000; cursor: pointer}
    input.bt:hover {background: #999;}
    
    </style>
    
    <div class="teklifver">
        <div class="teklifverbaslikform">
    <form name="upload" action="upload3.php" enctype="multipart/form-data" method="post">
        <p class="teklifverbaslik">Desteklenen Dosya Biçimi .jpg, .png</p>
        <input class="gonder" type="file" name="dosya" /></br></br>
        <input class="bt" type="submit" value="Gönder" /></br>
    </form>
            
    <?php
    
        if($_GET[req] == "delete")
        {
            $sorgu = mysql_query("SELECT * FROM  upload3 WHERE id='$_GET[id]'");
            $goster = mysql_fetch_array($sorgu);
            
            unlink($goster[url]);
            mysql_query("DELETE FROM upload3 WHERE id='$_GET[id]'");
        }
        
        $buay = date("Y-m");
        $konum = "yonetim/uploads/";
        
        if(!is_dir($konum.$buay)){
            mkdir($konum.$buay);
            chmod($konum.$buay, 0777);
        }
    
        $gecerli = array("jpg","png");
        $uzanti    = end(explode(".", $_FILES["dosya"]["name"]));
    
        if($_FILES["dosya"]["name"]){
            if($_FILES["dosya"]["size"] < 3000000){
                if(in_array($uzanti, $gecerli)){
                    if($_FILES["dosya"]["error"] > 0){
                        $mesaj = $_FILES["dosya"]["error"];
                    }else{
                        
                        $yeni = substr(md5(microtime()),0,16);
                        move_uploaded_file($_FILES["dosya"]["tmp_name"], $konum.$buay."/".$yeni.".".$uzanti);
                        
                        $isim = $_FILES["dosya"]["name"];
                        $url = $konum.$buay."/".$yeni.".".$uzanti;
                        mysql_query("INSERT INTO upload3 (isim, url, aciklama, link) VALUES ('$isim', '$url', '$_POST[aciklama]', '$_POST[link]')") or die("Hata : ".mysql_error());
                        
                        echo "<span style='color: #4d4d4d; font-weight: bold'>Dosya başarıyla yüklendi</span></br></br>";
                        echo "<center><b>Link (Altta verilen linki kopyalayın ve ilgili alana yapıştırın.)</b><br> <label>http://".$_SERVER['HTTP_HOST']."/$konum$buay/$yeni.$uzanti</label></center>";
                    }
                }else{
                    echo "<span style='color: #4d4d4d; font-weight: bold'>Geçersiz dosya! Lütfen belirtilen dosya türü yükleyin.</span>";
                }
            }else{
                echo "<span style='color: #4d4d4d; font-weight: bold'>Dosya boyutu fazla büyük!</span>";
            }
        }
    
    
    ?>
    
        </div>
    </div>
  • 23-10-2013, 00:52:41
    #6
    CougaR adlı üyeden alıntı: mesajı görüntüle
    Arkadaşlar aşağıda verdiğim scripte kullanıcılara açık olan kısımda dosya format kontrolü mevcut görüldüğü üzere.

    Yalnız bu .htacsess ile güvenliği alma olayı nasıldır o konuda yadımcı olabilirmisiniz ?


    <?php
    include("config.php"); 
    include("includes/fonksiyonlar.php");
    ?>
    <style type="text/css">
    
    input.dsaciklama {width: 440px; padding:4px; font-size: 12px; background: #dcdcdc; color: #4d4d4d}
    input.dsaciklama2 {border: 1px solid #ccc; padding: 3px; width: 622px; border-radius: 3px}
    
    input.gonder {width: 432px; background: #dcdcdc; padding: 3px 7px; color: #000; cursor:pointer; font-size: 13px}
    input.gonder:hover {background: #ccc;}
    
    input.bt {background: #ccc; border: 1px solid #ccc; padding: 3px 7px; border-radius: 3px; color: #000; cursor: pointer}
    input.bt:hover {background: #999;}
    
    </style>
    
    <div class="teklifver">
        <div class="teklifverbaslikform">
    <form name="upload" action="upload3.php" enctype="multipart/form-data" method="post">
        <p class="teklifverbaslik">Desteklenen Dosya Biçimi .jpg, .png</p>
        <input class="gonder" type="file" name="dosya" /></br></br>
        <input class="bt" type="submit" value="Gönder" /></br>
    </form>
            
    <?php
    
        if($_GET[req] == "delete")
        {
            $sorgu = mysql_query("SELECT * FROM  upload3 WHERE id='$_GET[id]'");
            $goster = mysql_fetch_array($sorgu);
            
            unlink($goster[url]);
            mysql_query("DELETE FROM upload3 WHERE id='$_GET[id]'");
        }
        
        $buay = date("Y-m");
        $konum = "yonetim/uploads/";
        
        if(!is_dir($konum.$buay)){
            mkdir($konum.$buay);
            chmod($konum.$buay, 0777);
        }
    
        $gecerli = array("jpg","png");
        $uzanti    = end(explode(".", $_FILES["dosya"]["name"]));
    
        if($_FILES["dosya"]["name"]){
            if($_FILES["dosya"]["size"] < 3000000){
                if(in_array($uzanti, $gecerli)){
                    if($_FILES["dosya"]["error"] > 0){
                        $mesaj = $_FILES["dosya"]["error"];
                    }else{
                        
                        $yeni = substr(md5(microtime()),0,16);
                        move_uploaded_file($_FILES["dosya"]["tmp_name"], $konum.$buay."/".$yeni.".".$uzanti);
                        
                        $isim = $_FILES["dosya"]["name"];
                        $url = $konum.$buay."/".$yeni.".".$uzanti;
                        mysql_query("INSERT INTO upload3 (isim, url, aciklama, link) VALUES ('$isim', '$url', '$_POST[aciklama]', '$_POST[link]')") or die("Hata : ".mysql_error());
                        
                        echo "<span style='color: #4d4d4d; font-weight: bold'>Dosya başarıyla yüklendi</span></br></br>";
                        echo "<center><b>Link (Altta verilen linki kopyalayın ve ilgili alana yapıştırın.)</b><br> <label>http://".$_SERVER['HTTP_HOST']."/$konum$buay/$yeni.$uzanti</label></center>";
                    }
                }else{
                    echo "<span style='color: #4d4d4d; font-weight: bold'>Geçersiz dosya! Lütfen belirtilen dosya türü yükleyin.</span>";
                }
            }else{
                echo "<span style='color: #4d4d4d; font-weight: bold'>Dosya boyutu fazla büyük!</span>";
            }
        }
    
    
    ?>
    
        </div>
    </div>
    777 olan klasörün içine .htaccess oluşturup şu satırları ekle.

    Alıntı
    php_flag engine off
    <Files ~ "\.(php*|s?p?html|cgi|pl)$">
    deny from all
    </Files>
    klasöre yüklenmeyecek uzantıları artırabilirsin.
  • 23-10-2013, 08:59:53
    #7
    Kurumsal Üye | R10 19.YIL
    Divxci adlı üyeden alıntı: mesajı görüntüle
    777 olan klasörün içine .htaccess oluşturup şu satırları ekle.



    klasöre yüklenmeyecek uzantıları artırabilirsin.

    Upload adında klasör mevcut içeriğinde

    upload.php
    yukle.php ve resimler adında (klasör) 3 dosya var

    .htaccess dosyasını sanırım resimler adında (yüklenen resimlerin bulunduğu) klasöre yükleyeceğim ?
    upload.php, yukle.php bunların bulunduğu dizine yüklemem gerekmezmi evetse bunlar .php dosyası ve .htaccess bu 2 dosyanında çalışmasına engel olmazmı ?
  • 23-10-2013, 09:10:40
    #8
    Siteniz hangi hosting firmasında barınıyor.
  • 23-10-2013, 09:18:16
    #9
    Kurumsal Üye | R10 19.YIL
    tisinamy adlı üyeden alıntı: mesajı görüntüle
    Siteniz hangi hosting firmasında barınıyor.
    Firmanın adı yok diyebilirim doğru dürüst siteleri yok müşterinin daha önce kullandığı hosting diyelim neden sordunuz.