Turkhackteam.org/net - Ethical Hacking & Cyber Security Platform Turkhackteam Under Ground Exploitler WP Symposium < 15.8 SQL Injection Exploit Kullanımı //By Ghost
WP Symposium < 15.8 SQL Injection Exploit Kullanımı //By Ghost
Merhabalar herkese. Yeni bir seriye başlayacağız inşallah. Bu seride sizlere Wordpress açıklarının nasıl sömürülebileceğini ve bu açıkların nedenini anlatmaya çalışacağım. Tabi her bir açığı ayrı ayrı olabildiğince detaylı bir şekilde anlatmaya gayret edeceğim.
İlk konumuzda anlatacağım açık biraz kolay ve basit olabilir. Giriş seviyesinde serinin başlangıcına uygun olduğunu düşündüm. İnşallah yanılmamışımdır
Konumuza geçmeden önce Wordpress LAB ortamı kurma ile alakalı hazırladığım konuyu incelemenizde fayda var. Çünkü sizlerinde kendi bilgisayarınızda bunları test edip kendinizi ufak ufak geliştirmenizi istiyoruz. Wordpress LAB ortamı ile alakalı konu için aşağıdaki linke tıklayabilirsiniz.
WP Symposium kısaca websitenizi sosyal ağa dönüştürmenizi sağlayan bir eklentidir. Bu eklentinin 15.8.1 sürümü ve önceki sürümlerde 'get_album_item.php' dosyasında ciddi bir açık bulunuyor. Me-tasploit üzerinde bu açığı sömürmek için exploit bulunmakta. Konuda me-tasploit üzerinden exploit etmeyi göstereceğim.
Şimdi öncelikle 15.8.1 sürümüne sahip WP Symposium eklentisinin dosyalarını indirmemiz gerekiyor. Bunun için exploit-db'den yardım alacağız. Normalde dosyayı internet üzerinden de bulmanız mümkün.
Vulnerable App: kısmından gerekli dosyayı bilgisayarımıza indiriyoruz. İndirdiğimiz dosya zip formatında olduğu için zipten çıkarma işlemini yapalım.
Şimdi bu dosyayı xampp içinde daha önce kurduğumuz wordpress lab içine atalım. Bu işlemi elle yapmamız gerekiyor.
cp -R wp-symposium/ /opt/lampp/htdocs/wordpress/wp-content/plugins/
Daha sonra eklentimizi panelden etkinleştirelim. Normalde exploit hakkında yazılan yazıda eklentinin etkin olmasının gerekli olmadığını, sadece açıklı dosyanın sitede var olmasının yeterli olduğu söyleniyor. Ama bu exploiti gerçek senaryoya uygun halde anlatmak için etkinleştirmemizde fayda var.
(NOT: Xampp'ın açık olduğundan emin olunuz.)
Buraya kadar eklentimizi lab ortamımıza kurmayı gösterdik. Buradan itibaren olabildiğince gerçek bir hacking/zafiyeti sömürme senaryosuna göre anlatacağım.
Hedef bir sitemiz var. Site hakkında bilgi toplarken sitenin wordpress olduğunu bulduk. Wordpress siteler için pentest araçlarında en popüler aracımız tabiki wpscan. Sitemizde hangi eklentilerin var olduğunu öğrenmek için aşağıdaki komutu terminale girelim.
wpscan --url http://localhost/wordpress -e ap
Tarama sonunda wp-symposium eklentisinin var olduğunu öğrendik. Eklenti hakkında bir kaç bilgiyi de bizlere sundu.
Not: Eklenti aktif olmadığı zaman taramada bazen eklentinin olmadığını/bulmadığını söyleyebiliyor. Hedef site olarak düşündüğünüz zaman böyle bir durumla da karşılaşabilme ihtimali var. Onu da göstermek istedim.
İnternette bu eklenti ile alakalı kısa bir araştırma yaptığımızda eklentinin son sürümü 2019'da yayınlandığını görebilirsiniz. wpscan taramasında da bizlere Last Updated: kısmında ve latest version kısmında eklenti hakkında eski ve zafiyetli olduğunu ve bunla alakalı bir exploit kodunun yazıldığını bulduk(internetten). Şimdi bunu sömürebilmek için me-tasploit aracımıza geçelim.
(Not: 'search symposium' yazarak arama yapıp wp-symposium_sql_injection'ı görebilirsiniz)
show options komutu ile exploit için gerekli olan parametreleri listeliyoruz. Required kısmı yes olanlar doldurulması gereken parametreler. Burada sadece RHOSTS kısmı boş. Ama hedef sitemiz /wordpress dizini altında olduğu için biz TARGETURI kısmını da düzenleyeceğiz. Aşağıdaki komutları sırasıyla girelim.
Gördüğünüz gibi exploitimiz çalıştırdığımızda eklenti üzerindeki SQL açığı sayesinde bize user tablo bilgilerini getirdi Sırasıyla username-password-email bilgileri mevcut. Fakat şifre hash'li durumda. Eğer şifreyi kırmayı başarırsak panele erişebiliriz. Bunun için hash'li şifremizi kopyalayıp yeni bir terminalde aşağıdaki komutları girelim.
echo 'HASHLISIFRE' > sifrekir
john --wordlist=/usr/share/wordlists/rockyou.txt sifrekir
10 dakika john aracımızın şifreyi bulmasını bekledikten sonra şifreyi bulabildik.
Unutmayınız ki şifreyi bulamadığınız hedef sitelerde olabilir. Burada sizlere örnek olması açısından şifreyi bulunabilir bişi yapmıştım.
Şimdi belirli aşamalardan sonra zafiyetli bir eklentinin pentest araçları sayesinde sömürmeyi anlattık. Ancak bunun nasıl yapıldığını, mantığını bilemezseniz bi anlamı olmaz. Pentest veya diğer adıyla hacking araçları (ikinci tabire bende karşıyım bana kızmayın ile hacklemek bizi ileri götürmez. Tabi bu araçlar bize yardımcı oluyor. Ama asıl olay mantığını bilmekte.
Bu zafiyetin bulunduğu dosyaya göz atalım. Bu dosyayı açmak için terminale aşağıdaki komutu girebilirsiniz.
$_REQUEST değişkeni GET ve POST metodlarının ikisi ile de gönderilen verilerin sonuçlarına ulaşabilir. Global bir değişkendir. Kod yapımızda da $iid ve $size parametrelerini GET olarak alıyor. Burada REQUEST değişkenimiz kontrolsüz bir halde. Bir de üstüne üstlük $sql değişkenine tanımlanmış SELECT sorgusu da güvensiz yazılmış. Burada önemli olan nokta $size değişkeni. Zira kodda .$size. şeklinde birleştirme yapılmış. PHP'de . birleştirmeye yarıyor.
Sorguyu incelediğimiz zaman $size değişkenine öyle bir değer/komut verelim ki bizim yazdığımız komut çalışsın. Öncelikle REQUEST global değişkenin GET olarak veri alıp almadığını kontrol edelim. Bunun için kodda resimdeki gibi düzenleme yapıp kaydedelim.
Tarayıcımıza gelip url kısmına GET isteği yapan bir link verelim. REQUEST değişkeni ile iid ve size parametreleri alındığı için bunlardan birini kullanmanız gerekmekte.
Gördüğünüz gibi $size parametresine verdiğim string ifadeyi ekrana yazdırabildik. Dolayısıyla $size değişkenine komut da girebilirim. Anlaşılması açısından şimdi de javasript kodu girelim.
Gördüğünüz gibi REQUEST değişkeni hiçbir şekilde kontrol edilmemiş dümdüz alıyor. $size parametresine gerekli sql bypass komutları girilerek tablodan veri okunabilir durumda.
Aklınızda şöyle bir soru oluşabilir. Exploit konusunda sql injection yapıldığını gördük. Burada neden script kodu yazdık diyebilirsiniz. get_album_item.php dosyasındaki kodlara bakacak olursanız eğer $sql değişkenine atanmış SELECT sorgusunda $size değişkeni kullanılmakta ve SELECT sorgusunun ortasında kullanılıyor. Yazılan exploit'te bu sorguyu manipüle ederek users tablosunu okuyor. Exploit ruby dili ile yazıldığı için onu gerektiği gibi analiz edemedim kodu tam kavrayamadım. Bunun için sizlerden özür dilerim.
Wordpress'te yazılan eklentiler bir nevi açık kaynaklı olduğu için kodları inceleyip zafiyet keşfedilebilir. Biz bu seride bu zafiyetler için yazılmış exploitlerin kullanımlarını ve ufakta olsa mantığını anlatmaya gayret edeceğiz.
Elimden geldiğince sizlere WP Symposium eklentisini ile alakalı exploiti ve açığın mantığını anlatmaya gayret ettim. Eksikler veya yanlışlar olabilir yorum yazarak beni uyarırsanız sevinirim. Şürçilisan ettiysem affola başka bir exploit konusunda görüşmek üzere Allah'a emanet olun
Konu By Ghost tarafından (bir Hafta önce Saat 22:55 ) değiştirilmiştir.
"P4RS, Xowly, VaTanSevDal Teşekkür etti.
Cevap: WP Symposium < 15.8 SQL Injection Exploit Kullanımı //By Ghost
Sağlam bir konu olmuş, ellerinize sağlık
Ellerine sağlık Ghost Diğer exploit konuları da bu şekilde yapılması dileğimle
Hepinize güzel yorumlarınız teşekkürler umarım devamı daha güzel olur