Samba Kullanarak Remote File Inclusion Koruması Atlatma

baba

baba://
Merhaba arkadaşlar

PHP scriptlerde geçmişte çokca karşımıza çıkan RFI ( remote file inclusion ) zafiyetleri 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 zafiyetini nasıl istismar ettiğiklerini anlatmıştır.

Konuda RFI ın temellerine girmeyeceğim o yüzden hatırlatma babında örnek bir RFI zafiyeti içeren php kodu en basit haliyle aşağıdaki gibi görünmesi muhtemeldir…
Kod:
<?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

3d9fb8c3a7f14288e39a02205f66284510432b7c_2_690x274.jpeg
3d9fb8c3a7f14288e39a02205f66284510432b7c.jpeg


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.

507eb6b4295bda5133bb6d7b627ec9ef48b0447c_2_690x142.png
507eb6b4295bda5133bb6d7b627ec9ef48b0447c.png


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
Kod:
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.
Kod:
[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.
56479268aa99782e79a5f680aa6ab832b163abf2.png


ve sonuç.

653330380ce8e1a4da6ca2fd2cb6777848f8bf5b_2_690x425.png
653330380ce8e1a4da6ca2fd2cb6777848f8bf5b.png


Kolay gelsin.
 
Moderatör tarafında düzenlendi:

F47

Üye
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)
 
Son düzenleme:

baba

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