SAMBA vs Remote File Inclusion - 2019

Merhaba arkadaşlar

PHP scriptlerde geçmişte çokca karşımıza çıkan RFI ( remote file inclusion ) zaafiyetleri uzun yıllar sömürüldükten sonra PHP nin allow_url_fopen ve allow_url_include ayarlarını varsayılan olarak kapalı duruma çekmesiyle ortadan kaybolmuştu ta ki bugüne kadar.

indishell grubu sabaha karşı yayınladığı " Exploiting Remote File Inclusion (RFI) in PHP application and bypassing remote URL inclusion restriction " link başlıklı makalesind SMB yardımı ile PHP nin url kısıtlamalarını atlatatıp RFI zaafiyetini nasıl istismar ettiğiklerini anlatmıştır.

Konuda RFI ın temellerine girmeyeceğim o yüzden hatırlatma babında örnek bir RFI zaafiyeti içeren php kodu en basit haliyle aşağıdaki gibi görünmesi muhtemeldir…

<?php
    $sayfa=$_GET["file"];
    include($sayfa);
?>

Lab ortamındaki PHP ayarları varsayılan ayarlarında olduğu gibi
allow_url_include ve allow_url_fopen her ikisi de Kapalı konumda

phpinfo

Ayarların düzgün çalışıp çalışmadığını kontrol ediyoruz bu ayarlara göre http ve ftp protokollerini kullanarak scripte kod enjekte edemememiz gerek.Nitekim aşağıdaki resimde görüldüğü üzre engellemeler işlerini yapıyor.

noinclude

Bu kısıtlamaları SMB vasıtasıyla atlatmak mümkün uygun lab ortamı için anonim erişimlere açık olacak şekilde bir SAMBA sunucusu ayağa kaldırabilirsiniz.

Samba paketini yükleyip apt-get install samba

Paylaşım klasörünüzü oluşturun
mkdir /var/www/html/pub/

Gerekli dosya izinlerini verin

chmod 0555 /var/www/html/pub/
chown -R nobody:nogroup /var/www/html/pub/

/etc/samba/smb.cnf dosyanızı doğru ayarlar ile oluşturun.

[global]
workgroup = WORKGROUP
server string = Samba Server %v
netbios name = indishell-lab
security = user
map to guest = bad user
name resolve order = bcast host
dns proxy = no
bind interfaces only = yes

[ica]
path = /var/www/html/pub
writable = no
guest ok = yes
guest only = yes
read only = yes
directory mode = 0555
force user = nobody

ve servisi başlatın
service smbd restart

Servis başladığında şifresiz bağlantı sağlayabildiğimiz bir adet smb adresimiz olmuş olacak.
İstismar için kullanacağımız php scripti tanımladığımız /var/www/html/pub klasöründe oluşturuyoruz.
smb2

ve sonuç.

rfi

Kolay gelsin.

16 Likes

Halbuki bu default ayarlar ile ilgili daha dün konuşmuştuk.

Remote bir ip den dosya dahil etmeyi deneyen var mı? (Aynı blok ip leri olsa da konfigürasyon gereği dış ip adresinden de aynı şekilde dahil edebiliyor muyuz deneyelim. Örnekteki ip ler bağlı network’te olduğu için bazı engeller farklı şekilde aşılmış olabilir)

2 Likes

Sunucuda internet olduğu sürece uzak bir smb sunucusuna ses edeceğini sanmıyorum çünkü mevcut engel urlden kodu include ettirmemesiydi

Remote dosya kabul ediyor fakat iki tarafında SMB açık olması gerekiyor. Benzer şekilde şöyle bir NTLM Hash çalma yöntemi bulunuyor ;

4 Likes