Function Injection PHP

call_user_func

on

merhabalar, bu gün sizlerle php’nin call_user_func fonksiyonunda gönderilen değerlerler ile oynanması durumunda ortaya çıkan sonuçlara birlikte göz atacağız.

 

call_user_func  hakkında önce bir bilgi edinelim nedir bu ?

 

bir fonksiyonu veya buna benzer işlevsel her hangi bir şeyi çağırabilirsiniz.

bizim işimiz şurada başlıyor ; 2 dosya olduğunu var sayalım biri fonksiyon.php biride sayfa.php olsun.

fonksiyon.php

sayfa.php

burada güvenlik açığı sayfa.php içerisinde 7.inci satırda oluşmaktadır çünkü çağırdığı fonksiyon kullanıcı tarafından girilmektedir satır 4 ve 5 değerlerini kontrol edelim.
şimdi normal şartlarda sayfa.php ye gönderilen istek http://www.numanturle/icerik.php?sayfa=duzenle&id=1 ve ekran çıktısı Şu an 1 sayfasını düzenliyorsunuz. gayet normal peki sayfa=duzenle yerine phpinfo yazınca çıkan sonuca baktığımızda phpinfo çağırmış olacaktır.

şimdi işin can alıcı noktası system fonksiyonunda bitiyor çünkü hem fonksiyon adı hemde fonksiyona gönderilen bir değer söz konusu.

link yapısını şimdi http://localhost/icerik.php?sayfa=system&id=type icerik.php yaptığımızda artık sisteme komut göndermek mümkün.

peki bunu kapatmak için neler yapabiliriz ?

  • call_users_func fonksiyonunu kullanırken elimizden geldiği kadar kullanıcıdan veri almamak
  • call_users_func fonksiyonu kullanılırken kullanacağınız fonksiyonları in_array‘dan geçirmek

açığı kapatmak için yapmamız gerekenleri listeledik

açığın kapatılmış olduğu kod ;

 

 

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir