File Include Attack Methods File Include Açıkları Nasıl Oluşur? File Include Atakları Nasıl Yapılır ?
File Inclusion atakları, genel bir tabir olmasına rağmen çoğunlukla PHP mimarisi üzerine kurulu sistemlerde karşımıza çıkmaktadır. Gerek sistemi tasarlayıp inşa eden yazılımcının deneyimsiz oluşu, gerek PHP`nin yapısının güvenlik zafiyetlerine müsait oluşu ve gerekse yazılımcıların güvenlik tarafını hafife almaları, güvenlik açıklarıyla sık olarak karşılaşmamıza sebep olmaktadır ve File Inclusion atakları, hem remote olarak hem de local olarak yapılabileceği için iki türlü de sistem zarar görmektedir.
Sistemlerinizin zarar görmemesi için, göreceği zararı en aza indirgemek için bu atakların nasıl yapıldığını göstermeye çalışıp, korunma yollarından bahsedeceğim.
File Include Açıkları Nasıl Oluşur?
Yukarıda da bahsettiğim gibi, kullandığınız dilin mimarisi bu açıkların oluşmasına farklı nitelikte zeminler hazırlayabilir. Ama bu hususa en çok PHP yazılımcılarının dikkat etmesi gerekmektedir. Dilin mimarisinin esnekliği ve open source bir teknoloji olması nedeniyle, tüm yükümlülük yazılımcıya düşmekte ve yazılımcının sistem tarafında alacağı önlemler ile bu ataklar etkisiz kılınabilmektedir.
Demek ki bu açıklar siz PHP yazılımcılar nedeniyle ortaya çıkıyormuş
Şimdi FI ataklarını mümkün kılan kodlara göz atalım;
<a href=index.php?page=file1.php>Files</a>
<?php
$page = $_GET[page];
include($page);
?>
Burada görüldüğü üzere $page değişkeni veya değişkenin aldığı değerler hiçbir filtrelemeye tabi tutulmadan direkt olarak web sayfasına yönlendirilmektedir. (Kesinlikle Formlar ve QueryStringler arası geçişte kullandığınız değişkenlerden aldığınız değerleri filtrelemeden kullanmayın)
Kullanıcılar Files linkine tıkladığında index.php?page=file1.php gibi bir linke yönlenecek ve URL bu hali alacaktır. File1.php sayfası, index.php sayfasının kullandığı “page” parametresi üzerinden sayfaya include edildiğinden ve bu değişkenin aldığı değer kontrol edilip filtrelenmediğinden dolayı bu değişken üzerinden sisteminize yapılacak FI ataklarından, sizin açınızdan olumsuz olsa da, başarılı sonuçlar alınacaktır.
File Include Atakları Nasıl Yapılır ?
Senaryomuzdan devam edecek olursak;
$page değişkeninin aldığı değeri kontrol etmediğimizden dolayı, bu değişkene istediğimiz her değeri atayabiliriz. Eğer sisteminiz bir *nix sunucu da barınıyorsa, çeşitli PHP fonksiyonlarını içeren dosyamızı değişkene atayarak sistemde PHP komutları çalıştırabilir ki bu Remote File Inclusion olarak geçmektedir. Ya da *nix sunuculara has komutları bu değişken üzerinden çalıştırıp, sisteminiz ve bulunduğunuz server hakkında kritik bilgilere ulaşılabilir ki bu da Local File Inclusion atakları olarak isimlendirilmektedir.
Ayrıca, ileri düzey FI yöntemlerine değinecek olursak;
- SecurePHP kullanan sistemlerde, FI zafiyeti bulunsa dahi HTTP protokolü üzerinden sayfalar include edilememektedir. Bu bir nevi geçici bir çözüm olsa bile, SecurePHP`nin yanlış yapılandırılması nedeniyle HTTP protokolü yerine FTP protokolü üzerinden sayfalar include edilebilmektedir.
- Ayrıca PHP5 kullanan ve FI zafiyeti mevcut olan sistemlerde, yerel ağ üzerinden herhangi bir bilgisayarın IP numarası yardımıyla, o bilgisayardan bir dosya include etmekte mümkündür.
Gelişmiş ve etkili olabilecek FI yöntemlerine değinmiş bulunduk, çözümlerinizi bu çerçevede geliştirmeniz atakları tamamen engellemenizi sağlayacaktır.
File Include Ataklarından Nasıl Korunulur ?
Açıkların nasıl oluştuğunu ve atakların nasıl düzenlenebileceğini kavradığınız zaman, yapmanız gerekenler şunlardır;
- Kullanıcıdan aldığınız verileri ve input alanlarını filtreleyiniz ve değişkenlere öyle atama yapınız.
- SecurePHP güvenlik sistemini kullanınız.
- php.ini yapılandırmanızı iyi yapınız.
- Server kullanıcı grupları permissionlarını ayarlamayı unutmayınız.