v2.5.2
Giriş yap

Admin Panel Hacklendi

emmir2
826 defa görüntülendi
Giriş Olarak bu şekilde giriş yaptırıyorum ama birileri benim panele giriş yapabiliyor 
<?php
	if($_POST) {
		$kullanici_adi  = htmlspecialchars( trim( $_POST[ 'kullanici_adi' ] ) );
		$sifre = htmlspecialchars( trim( md5( $_POST[ 'sifre' ] ) ) );

		if ( $kullanici_adi && $sifre )
		{


			$kullanicisor = $db->prepare( "SELECT * from admin where kullanici_adi=:kullanici_adi and sifre=:sifre" );
			$kullanicisor->execute(
				array(
					'kullanici_adi'  => $kullanici_adi,
					'sifre' => $sifre
				)
			);

			$say = $kullanicisor->rowCount();

			if ( $say > 0 )
			{

				$_SESSION['admin']['login'] = 1;
				$_SESSION['admin']['id'] = $sql['id'];

				header( 'Location:anasayfa' );
			}
			else
			{

				header( 'Location:giris-yap.php?status=no' );
			}
		}
	}
		
	?>
	İndex.php de kontrolüm bu 
<?php
	if(!isset($_SESSION['admin']['login'])){
		 header("Location:giris-yap.php");
	}
?>
Post işlemlerini aynı sayfada yaptırıyorum mesela banka hesaplarımız kısmı buradaki verileri değiştiriyolar
	<?php
	if($_POST){
	
    if(isset($_GET['duzenle_id'])){
        $islem = $db->prepare("UPDATE banka_hesaplari SET baslik = ?, sef = ?, img = ?, sahib = ?, sube = ?, hesap_no = ?, iban = ? WHERE id = ?");
        $islem = $islem->execute(array($_POST['baslik'],'',$_POST['img1'],$_POST['sahib'],$_POST['sube'],$_POST['hesap_no'],$_POST['iban'],$_GET['duzenle_id']));
        $id = $_GET['duzenle_id'];
    }else{
        $islem = $db->prepare("INSERT INTO banka_hesaplari SET baslik = ?, sef = ?, img = ?, sahib = ?, sube = ?, hesap_no = ?, iban = ?");
        $islem = $islem->execute(array($_POST['baslik'],'',$_POST['img1'],$_POST['sahib'],$_POST['sube'],$_POST['hesap_no'],$_POST['iban']));
        $id = $db->lastInsertId();
    }

    if($islem){
    	$sef = sef($_POST['baslik']);
    	$islem = $db->prepare("UPDATE banka_hesaplari SET sef = ? WHERE id = ?");
    	$islem = $islem->execute(array($sef,$id));
        echo b();
    }else{
        echo h();
    }

}
	?>
	
	Sizce nasıl bir önlem almalıyım sql açığı bulan programlara tarattım siteyi birşey çıkmadı ve ilk defa karşılaşıyorum 15-16 yaşında hamckerlerle tanışmak da hayatıma + bir heyecan kattı :D
	
Cevap yaz
Cevaplar (9)
emmir2
1018 gün önce

16-17 yaş arkadaşların gazabından az önce kurtuldum sorun üye giriş alanındaymış xss açığı oluyordu execute olmasına rağmen
onun dışında her alana tokenler oluşturdum xss için aklınıza ne gelebiliyorsa hepsini toplayıp bir fonksiyon haline getirdim
şuan sorunum kalmadı ve bir bu süreçte bir şey öğrendim

Hamcker olmak için

<script>alert(Hack Yedin Knk )</script>

Yazmak yeterliymiş :D:D :D D: D:

reqres
1034 gün önce

Herşeyden önce yeniden yönlendirmeler sonrasında exit ya da die() ile betiğin çalışmasını durdurmalısın. Buna çok denk geliyorum.
Senin orada http response başlığına yönlendirme yapmasını söylemen benim istemci olarak bu başlığı geçerli sayıp uygulayacağımı garanti etmez.

Neyi demek istiyorum;

Admin panelde session kontrol edip yoksa response başlığına yönlendir diyorsun ama ben bu başlığı görmezden gelen bir istemci kullanıyorsam senin bu başlığı belirtmen hiçbir şey ifade etmez. Çıktıyı görmeye/kullanmaya devam ederim.

g4rymckinn0n
1036 gün önce

tayfun hocanın zaman rölesi var TOKEN başlığı ile youtube üzerinden izleyebilirsin. login sistemine token ekle, tokenı yazdıramazsan sen bile giremezsin bırak heçkırları

yazilimyolcusu
1037 gün önce

Ya çok bildiğimden değilde, geçen nerede gördüm, session verisini md5 ve rastgele seçilen anahtarlara bağlamışlar. Acaba bunun bir faydası olabilir mi acaba? Benimkisi fikir, ustalar bilir yine. :)

qplot
1038 gün önce

farklı ise ve normal kullanıcı admin session a mudahele edemıyorsa gerek yok

lakın dıger dedıklerımı yap ayrıca bu sayfadan degılde baska sayfadan guncelleme yapıyorda olabılırler

emmir2
1038 gün önce

@qpolat
hocam öncelikle kullanıcı ile admin tabloları farklı bu yüzden giriş yapana tekrar olarak bu admin diye belirtmeye gerek varmı

qplot
1038 gün önce

defalarca uyarmıstık dınlemedın anlasılan.

birincisi her uye olan bu bılgılerı degıstırebılır yetkılendırme koy

adam uyemı admınmı onu kontrol et ve altında exit() koy adam admin degılse exit() ile işlemi durdur.

ve postları dırek sql sorgunda calıstırma en basıt anlatım sile strip_tags dan gecır bunu anla dıye yazıyorum bunun ıcın fonksiyon arastır


if(isset($_SESSION['admin']) && ($_SESSION['admin']=="yonetici")){
		 header("Location:giris-yap.php");
		 exit()
} 

//fitreleme ornegı

function xss($veri)
{
$veri =str_replace("refresh","",$veri);
$veri =str_replace("style","",$veri);
$veri =str_replace("script","",$veri);
$veri =str_replace("<script","",$veri);
$veri =str_replace("</script","",$veri);
$veri =str_replace("/script","",$veri);
$veri =str_replace("?>","",$veri);
$veri =str_replace("SELECT *","",$veri); 
$veri =str_replace("DELETE FROM","",$veri); 
$veri =str_replace("DELETE","",$veri); 
$veri =str_replace("WHERE","",$veri); 
$veri =str_replace("'or'","",$veri); 
$veri =str_replace("'","“",$veri);
$veri =str_replace("<?php","",$veri);
return $veri;
}

echo xss($_POST['deger']);





emmir2
1038 gün önce

@m100 nası değiştirebilir hocam ?

m100
1038 gün önce

session verini değiştirip istediği gibi girebilir bu şekilde kullanıcı şifre sormanın bir anlamı kalmaz