Merhaba Dostlar
Bu gün sizlere Waf ı tanıtıp sizlerle birlikte waf kodlayacağız.
Waf açılımı Web application firewall yani web uygulamaları güvenlik duvarı.
Bu aynı bilgisayarımızdaki antivirüslerin web sitesinde uygulanmış halidir.
Örneğin bir hacker sisteminize sızmaya çalışır ve bunun için belirli parametreler uygular. Bu uygulanan parametrelerin hepsini index.php den geçirip bu parametreleri kontrol etmeye çalışacağız. Tabiki siz geliştirip girilen parametreleri xss sql vs kontrol edebilirsiniz benim yoğunlaştığım şey waf ın sunucuya yüklenmiş webshellerini otomatikman algılayıp çalıştırmaması üstüne olacak.
Şimdi ilk olarak htaccess dosyamızla tüm yapılan istekleri index.php den geçirelim.
Kod:
RewriteEngine On[/COLOR][/CENTER]
[COLOR=rgb(226, 80, 65)][CENTER]RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
Artık websitemizde bir sayfaya erişeceksek siteadı.com?url=dosyaadı şeklinde erişeceğiz. Yani anasayfa.php sayfamızı açmak için siteadı.com?url=anasayfa olarak istek atacağız. Bu sisteme göre sitemizi kodlayıp kendi wafımıza uyarlayacağız ancak ben eğitim amacıyla detaya girmeyeceğim.
PHP:
error_reporting(0);
// URL'den gelen isteği al
$url = isset($_GET['url']) ? $_GET['url'] : '/';
// İstenen dosyanın adını belirleyin
$dosya_yolu = __DIR__ . '/'. $url . '.php';
Burada error reporting ile hata mesajlarını kapattık ve url ile gelen get parametresini aldık ve dosya yoluna ekledik. Güvenlik kontrollerini kendiniz sağlayın ben devam ediyorum.
Şimdi ise web shellerinden topladığımız verileri ekleyelim ki waf istek atılan dosyayı çektiğinde aynı veri varsa virüs uyarısı versin.
PHP:
$arananKelimeler = array("base64_decode(",
"base64_decode (",
"eval(",
"eval (",
"str_rot13(",
"str_rot13 (",
"shell_exec (",
"shell_exec(",
"gzinflate (",
"gzinflate("
);
Ben buraya php de shell şifreleme kodlarından bazılarını yazdım sizde direk shell kaynak dosyasından farklı shelleri bulup ekleyebilirsiniz.
Şimdi ise urlden gelen isimde dosyamız var mı onu kontrol ettirip sonrasında shell den topladığımız kod parçacıklarının istek yapılan dosyanın kaynak kodlarında var mı yokmu kontrolünü sağlayıp uyarılarımızı veriyoruz.
PHP:
if (file_exists($dosya_yolu)) {
// Dosya varsa
$dosyaIcerigi = file_get_contents($dosya_yolu);//istek yapılan dosyanın çekimi
foreach($arananKelimeler as $kelime) {//shellerden toplanan verilerin değişkene eklenip döngü ile araması
$kosul1='multipart/form-data';
$kosul2='$_SESSION';
if(strpos($dosyaIcerigi, $kelime) !== false) {//istenen dosyada virüslü kodun olmasının kontrolü
echo 'Virüs İsteği!!';
exit();//bu kod olmalı çünkü bu kod ile çıkış yapılır eğer yapılmazsa dosya virüs uyarısı vermesine rağmen açılır!!
break;
}
if (strpos($dosyaIcerigi, $kosul1) !== false) {//eğer dosya yükleme alanı olup session ile kontrol edilmediyse yine virüslü algıla
if (strpos($dosyaIcerigi, $kosul2) === false) {
echo 'Virüs İsteği!!';
break;
exit();
}
}
include($dosya_yolu);//virüs değilse dosyayı çağır
exit();
}
} else {
// Dosya yoksa, 404 hatası gösterin veya başka bir şey yapın
echo 'Sayfa bulunamadı!';
exit();
}
?>
Artık Test edelim. Ben bir adet bootcamp shell oluşturdum sağ ok tuşuna basınca direk dosya yükleme alanı açılıyor. Bir adet alfashell buldum ve bir adet hello world yazılı shell olmayan bir sayfa hazırladım.
İsteklerimi yapıyorum...
İndirme Linki
Virüs Total 28/64 (İçinde Web shelleri olduğu için normal güvenmiyorsanız yukarıdaki kodları kopyalayın kullanın)
İyi Forumlar