iyi akşamlar,
bir kaç gün önce shell injection ile sitemi hacklemişler. İlk bakışta bir sorun yok ama admin panelinde 2 sayfaya girince otomatik yönlendirme oluyor. Tıpatıp benzer başka sayfalarda yönlendirme olmuyor ama. Sayfanın kodlarına bakınca hiçbir yönlendirme kodu yok. Acaba hangi yollarla yönlendirme yapılabilir?
not: .htaccess dosyası yok sistemde.
Mazlum Sahinkusu
M
nereden injection yediginizi ogrenip sorunu duzeltiniz mi
shell injection için dosya yukleme sayfasi gerekiyor. Bende bikaç yerde dosya yukleme var. Resim ve doc/pdf yuklemek için. Bu arkadaşlar dosya uzantisini değiştirip shell dosyasini sisteme yukluyorlar. Mesela shell. Php. Jpg yapiyorlar. Ben de dosya yukleme scriptinde mime_content_type ile fake dosyalari kontrol ettiriyorum artik. Uzanti jpg olsa bile yuklenen dosyanin mimesi jpg olmuyor yani mime_content_type ile gerçek kontrolu yapabiliyorsun. sql injection için ise, sadece giriş sayfasinda session yapilandirmasi oluyor. Diğer tum sayfalarda sadece session kontrolu var. Yani giriş sayfasinda sql injection yapamazlarda diğer sayfalara erişemezler. Bunun için ise "select ...... Where username=$username" yerine tum kullanicilarin listesini alip for dongusuyle "if user["username"] == $username gibi bir kontrolle giriş yaptiriyorum artik. Umarim başka sorun çikmaz.
session icinde önlem almak gerekirmi
tam bilmiyorumda
almak gerekirse nasil bir önlem gerekir
ben de çok iyi bilmiyorum ya. İlk yayinladiğim siteydi ve birkaç gun sonrasinda hack yedim. Şaştim kaldim afalladim. stackoverflowda session hacklenmez diyor. Hacklenmesi için hosting şirketinin serveri hacklenmeli diyor
iyi o zaman
korktum bi an
pdo ile yapiyorum zaten yine sorun cikarmi ki
sessionla pdonun bi alakasi yok ki sorun çiksin
hayir yani giris filan yapilirken
kontrol ediliyor ya
haa onun için yukarda dediğim şekilde kullanici kontrolu yapsan sorun olmaz.
session ile id'yi çekiyorum sonra onunla ilgili bilgileri veritabanindan cekiyorum
fonksiyon yaptim hizlica
normalde $conn->query("select * from users where username='$username' and password='$password') yapilir. Eğer boyle yaparsan çok kolay sql injection yersin.
istedigim kismi seciyorum
prepare execute ile yapiyorum
evet oyle önlenebiliyor. session konusunda problem olmuyor istediğin gibi kullanabilirsin. Tabi kullanıcının göremeyeceği şekilde. Mesela "profil. Php? Userid=55" benzeri şekillerde bilgileri gösterme.
profil/55
nasil olur
sessionda gostermiyorum zatende profil sayfasinda nasil cekcez ozaman
mumkunse sadece profil olsun ve içerde idyi sessiondan al. Sonuçta sessiona bi kere attın mı artık istediğin sayfadan o verilere erişebiliyorsun
başkasinin profiline bakarken diyorum
haa o mesele. O biraz zor işte. Mecbur bişeyler tanımlatacan orda
adamlar nasil hackliyor onuda anlayamadim
formda acik biraktik diyelim
adam butun verileri listeletiyor
anlamamiz için daha 40 firin ekmek yememiz gerekiyor
bir arkadaş vardi ozamanlar ilk başladigim zamanlardi
hackle demiştim
hemen admin hesabimin kadi sifresini cikarmisti
yaparlar heci. Amatorun şifresini bulmak basit tabi
neyse iyi geceler
iyi geceler
Çekerken saf çekip, gösterirken ekstra bişeyler katabilirsin ID'ye.