wakeup tarafından yazılmıştır.
Selamlar herkese, bu konuda sizlere LFI yani local file inclusion zafiyetini remote code evaluation zafiyetine çevirmeyi anlatacağım. Aslında bu işlemi yapmanın birçok farklı yöntemi var ama ben size log zehirleme işlemini anlatacağım. Laboratuvar ortamı olarak TryHackMe‘de bulunan LFI Basics odasındaki 3. görevi baz alacağım. THM’de oda çözebilmek için ovpn konfigürasyonu gibi hazırlık işlemleri var ancak onları bu konuda anlatmayacağım ancak bu odayı inceleyerek nasıl yapılacağını öğrenebilirsiniz.
LFI zafiyeti php ile yazılan websitelerinde karşılaşılmaktadır. Herhangi bir dosyanın kullanıcıdan alındığı sırada ya da veri olarak yollandığı süreçte filtreleme işlemlerinde yapılan yanlışlıklardan kaynaklanmaktadır. Bunun sonucunda site ziyaretçileri yetkileri dışında istedikleri dosyanın içeriğini görüntüleyebilirler. LFI açığını kritik bir açık yapan hususlardan birisi ise RCE zafiyetine dönüştürülebilir olmasıdır.
RCE zafiyetinin karşılaşıldığı herhangi belirli bir programlama dili bulunmamaktadır çünkü çoğu programlama dilinde evaluation fonksiyonları mevcuttur. Bu zafiyete kullanıcı tarafından bir string ya da dosya enjekte edildikten sonra sitenin arkaplanında çalışan web programlama dilinde kullanılan parser yani ayrıştırıcının bu girdi üzerinde işlem yapması neden olmaktadır.
En temel şekilde log zehirleme yani poisoning işlemi, sunucu loglarına zararlı php kodları enjekte ederek gerçekleşmektedir. Ancak bu işlemin uygulanacağı dizinde okuma ve çalıştırma yetkileri bulunması önemli bir husustur.
Örnek Apache Log Dosyası
Sayfaya girdiğimizde aşağıdaki gibi bir ekran ile karşılaşıyoruz.
LFI Zafiyeti Bulunan Sayfa
?page parametresi ile apache log dosyalarını okumayı denediğimizde sayfada LFI zafiyetinin olduğunu anlıyoruz.
?page=/var/log/apache2/access.log
LFI ile Apache Log Dosyasını Görüntülemek
Logları okuyabildiğimize göre sıra zehirleme işleminde
İlk olarak burpsuite ile gelen/giden istekleri yakalamalıyız.
Gönderilen Web İsteği
İsteği yakaladık. Şimdi user-agent kısmına php kod enjekte edelim.
User-Agent: Mozilla/5.0 <?php system($_GET['lfi']) ?> Chrome/87.0.4280.66 Safari/537.36
Değiştirilen Web İsteği
CTRL+R ile değiştirmiş olduğumuz isteği Repeater’e gönderelim. Repeater’da lfi değerine whoami sorgusunu ekleyelim.
Komut Gönderme İşlemi
Sorgunun çalıştığını aşağıdaki görselden anlayabilirsiniz. Böylece LFI zafiyetini RCE’ye çevirmiş olduk ve komut çalıştırabiliyoruz.
Komut Gönderilen İsteğin Cevabı
Kendinize iyi bakın, sağlıcakla kalın…
LFI Zafiyetini RCE’ye Çevirme | Log Zehirleme
Selamlar herkese, bu konuda sizlere LFI yani local file inclusion zafiyetini remote code evaluation zafiyetine çevirmeyi anlatacağım. Aslında bu işlemi yapmanın birçok farklı yöntemi var ama ben size log zehirleme işlemini anlatacağım. Laboratuvar ortamı olarak TryHackMe‘de bulunan LFI Basics odasındaki 3. görevi baz alacağım. THM’de oda çözebilmek için ovpn konfigürasyonu gibi hazırlık işlemleri var ancak onları bu konuda anlatmayacağım ancak bu odayı inceleyerek nasıl yapılacağını öğrenebilirsiniz.
LFI Zafiyeti Nedir?
LFI zafiyeti php ile yazılan websitelerinde karşılaşılmaktadır. Herhangi bir dosyanın kullanıcıdan alındığı sırada ya da veri olarak yollandığı süreçte filtreleme işlemlerinde yapılan yanlışlıklardan kaynaklanmaktadır. Bunun sonucunda site ziyaretçileri yetkileri dışında istedikleri dosyanın içeriğini görüntüleyebilirler. LFI açığını kritik bir açık yapan hususlardan birisi ise RCE zafiyetine dönüştürülebilir olmasıdır.
RCE Zafiyeti Nedir?
RCE zafiyetinin karşılaşıldığı herhangi belirli bir programlama dili bulunmamaktadır çünkü çoğu programlama dilinde evaluation fonksiyonları mevcuttur. Bu zafiyete kullanıcı tarafından bir string ya da dosya enjekte edildikten sonra sitenin arkaplanında çalışan web programlama dilinde kullanılan parser yani ayrıştırıcının bu girdi üzerinde işlem yapması neden olmaktadır.
Log Zehirleme İşlemi
En temel şekilde log zehirleme yani poisoning işlemi, sunucu loglarına zararlı php kodları enjekte ederek gerçekleşmektedir. Ancak bu işlemin uygulanacağı dizinde okuma ve çalıştırma yetkileri bulunması önemli bir husustur.
Reaching RCE using LFI and log poisoning
Örnek Apache Log Dosyası
Sayfaya girdiğimizde aşağıdaki gibi bir ekran ile karşılaşıyoruz.
LFI Zafiyeti Bulunan Sayfa
?page parametresi ile apache log dosyalarını okumayı denediğimizde sayfada LFI zafiyetinin olduğunu anlıyoruz.
?page=/var/log/apache2/access.log
LFI ile Apache Log Dosyasını Görüntülemek
Logları okuyabildiğimize göre sıra zehirleme işleminde
Gönderilen Web İsteği
İsteği yakaladık. Şimdi user-agent kısmına php kod enjekte edelim.
User-Agent: Mozilla/5.0 <?php system($_GET['lfi']) ?> Chrome/87.0.4280.66 Safari/537.36
Değiştirilen Web İsteği
CTRL+R ile değiştirmiş olduğumuz isteği Repeater’e gönderelim. Repeater’da lfi değerine whoami sorgusunu ekleyelim.
Komut Gönderme İşlemi
Sorgunun çalıştığını aşağıdaki görselden anlayabilirsiniz. Böylece LFI zafiyetini RCE’ye çevirmiş olduk ve komut çalıştırabiliyoruz.
Komut Gönderilen İsteğin Cevabı
Kendinize iyi bakın, sağlıcakla kalın…
Moderatör tarafında düzenlendi: