Selamun Aleyküm;
Bu yazıda sizlere LFI ile neler yapılabileceği, Nasıl yol izlenmesi gerektiği ile ilgili bildiklerimi ve yaptıklarımı dilim döndüğünce anlatmaya çalışacağım. Baya irdeleyeceğimi düşünüyorum. Hatalarımı ve Eleştirilerinizi aşağıda belirtirseniz hem benim eksiğimi kapatırsınız hem de konuyu okumuş olmanız beni memnun eder.
Başlayalım;
Günümüzde birazdan anlatacağım log dosyalarının okuma izinleri kurulumda kapalı olarak geldiği için gücünü biraz yitirmiş olsa da bana göre halen güzel bir zaafiyet olan LFI(Local File Inclusion), kelime anlamı olarak "Yerel Dosya Çağırma" olarak adlandırılabilir. Local File Inclusion aşağıdaki gibi bir kod parçası ile sunucu üzerindeki dosyaları okumamıza yarayan sayfalarda normalde bize sunulan, "index.php","about.php" gibi sayfaları okumamız gerekirken Kodu yazanın dikkatsizliği veya acemiliği sonucu bunun dışına çıkarak sunucuda bulunan kritik dosyaları("/etc/passwd","\\boot.ini") okumamızı sağlayan zaafiyettir.
Fazla Uzatmadan Zaafiyetimizi Test etmek için /etc/passwd dosyamızı okuyalım. Böylece sistemde ne var ne yok görmüş oluruz
Şimdi hedef sistemimizin işletim sistemini öğrenelim ki log ararken daha az kaba kuvvet uygulayalım bunun için /etc/issue dosyasını okuyabilirsiniz. Görüldüğü üzere benim dağıtımım Debian 9
Şimdi de konunun asıl amacı olan hedef sistemde LFI üzerinden kod çalıştırmayı deneyelim. Bunun için hepsi aynı yöntemin farklı şekilde denenmesinden oluşan bir çok yöntem var;
1) /proc/self/environ üzerinden.
2) Sistem log dosyaları. Ben Apache üzerinden gittiğim için apachenin loglarını kullanacağım ama diğer web sunucularında da logları nasıl bulunabileceğinizi konunun sonunda yazacağım. Apachenin log dosyaları eğer özellikle logların yeri değiştirilmediyse /var/log/apache2/ dizinidir.Log dosyalarını okumayı denedikten sonra eğer okuyamıyorsanız son bi umut belki logların yerini değiştirmişlerdir diye /etc/apache2 dizinindeki apache2.conf dosyasını okumayı deneyin ama artık SysAdmin benim gibi özellikle izin vermediyse kurulumda kapalı geliyor. Her ihtimale karşı tek tek deneyebileceğiniz küçük bir muhtemel log listesi de vereceğim konunun en altında.
a) Access.log
Access.log dosyası sisteme web üzerinden yapılan isteklerin loglandığı dosyadır. Peki Biz bunu nasıl kullanırız ? Access.log dosyamızı biraz inceleyelim
Gördüğünüz gibi bizim ip adresi,User-agent gibi bilgilerimiz burada kayıtlı. Client(istemci, yani biz) bir siteye girdiğimizde bu bilgileri sunucu(hedef)’e bu bilgileri yollarız. Peki biz bu bilgiler ışığında hedef sistem üzerinde nasıl kod çalıştırırız ? Hedefe gönderdiğimiz User-Agent bilgisini biraz değiştirirsek iş yapar bence
Bakalım bu gönderdiğimiz bilgi sistemde nasıl çalışmış. Kodu gönderdikten sonra sayfayı bir kere daha yenileyin ki logunuz ekranınıza düşsün.
Gördüğünüz gibi "echo" ile yazdırdığımız "Cyber-Warrior TIM All Legal and illegal Rights Reserved.\\CWDoktoray 2001©" yazısını ekrana bastı. Ama php kodları yok. Şimdi burada ne oldu ?
Olan şu;
Biz User Agent bilgimizi bir php koduyla değiştirip server’a yolladık, Bu da log olarak access.log dosyasına kaydedildi. Yani o kod şu an Access.log dosyasında php haliyle duruyor. Sonra LFI zaafiyeti tespit ettiğimiz "index.php" dosyası üzerinden Access.log dosyasını çağırdık, Access.log dosyası da index.php dosyamızın içinde geldiği için, server access.log dosyasının içindeki php kodunu yorumlayıp ekrana Cyber Warrior Tim yazısını bastı.
Access.log dosyası;
b)Auth.log
Auth.log dosyası Sistemdeki oturum açma veya açma girişimlerini loglar. Shh bağlantısı ise hangi ip üzerinden bağlanmış hangi user ile bağlanmış gibi bilgileri tutar. Örnek Dosya;
Auth.log dosyası sadece açılan oturumları değil oturum açma girişimlerini de tutar. Doğru veya yanlış olmasının bir önemi yok. Örneğin;
Peki biz bu yanlış giriş denemesini şu şekilde yaparsak ne olur ?
Gördüğünüz üzere kodumuzu hedef sistem üzerinde başarıyla çalıştırdık. Gerisi sizin hayal gücünüze kalmış.
Normalde konu çok daha uzun olacaktı lakin göz yormamak adına iki parçaya ayırmaya karar verdim. ikinci kısımda php wrapperları, kullanımlarını ve log dosyalarını kullanamadığımız durumlarda LFI ile neler yapabileceğimizle ilgili ufak bir senaryo işleyeceğim
Log dosyalarıyla ilgili küçük bir wordlist
(ALINTIDIR CW)