Merhabalar arkadaşlar, bu yazıda Vulnhub platformu üzerinde bulunan Typo1 adlı makinenin çözümünü göstereceğim. Vulnhub üzerinde bulunan Typo1 makinesi, yanlış konfigürasyondan kaynaklı phpmyadmin dizinine erişim sağlayabilmemiz ve default girdiler ile panele giriş yaparak, makine üzerinde çalışmakta olan typo3 web servisinin admin kullanıcısına ait parolanın manipüle edilmesiyle yetkinlik sağlanılması, ardından web servisi üzerindeki ayarların değiştirilerek php reverse shell ile initial shell alınması ve apache servisindeki konfigürasyon hatası ile root shell alınması şeklinde bir hikayeye sahiptir.
ENUMERATION AND SHELL
Öncelikle nmap taraması başlatıyoruz ve makine üzerinde 22, 80, 8000, 8080 ve 8081 portlarının açık olduğunu görüyoruz.
80 portundaki servisin başlığından görüldüğü üzere “404 not found” dönmekte. “typo.local” host ismini farkedip “ $IP typo.local >> /etc/hosts “ şeklinde hostu ekliyoruz.
8080 ve 8081 portlarına baktığımızda ise boş web sayfaları karşımıza çıkmata. İkincil olarak host üzerinde dizin taraması başlatıyoruz.
“fileadmin, typo3” dizinlerine çıktıda görülmekte. Erişim sağlamaya çalıştığımızda ise redirect olarak yetkisiz erişim sağladığımızdan 403 dönmekte. Devam ediyoruz ve 8081 portu üzerinde dizin taraması başlatıyoruz.
Ve “phpmyadmin” dizinini elde ettik. Phpmyadmin’e default birkaç user password ile giriş yapmayı denedikten sonra başarılı bir şekilde arayüze giriş yapıyoruz. Arayüzde bulunan TYPO3 veritabanı ve veritabanı içerisindeki be_users tablosu dikkatimizi çekiyor. Tabloyu görüntülediğimizde admin ve user’a ait bilgileri görüyoruz.
Burada parola argon2id ile şifrelenmiş. Buraya giderek oluşturulmuş parola cipher’ı ile aynı parametreleri kullanarak yeni bir parola oluşturuyoruz.
Argon2id : cipher türü
V : versiyon
m : memory büyüklüğü
t : iterasyon
p : parola
Elde ettiğimiz yeni cipher ile eskisini değiştirerek belirlediğimiz parola ile typo3 paneline giriş yapıyoruz. Ardından bir php shell yüklemeye çalışıyoruz fakat görüyoruz ki php uzantısı engellenmiş durumda.
Typo3 dökümantasyonunda (https://docs.typo3.org/m/typo3/reference-coreapi/master/en-us/Security/GuidelinesIntegrators/Index.html ) bu kısıtlama ile ilgili bölümü araştırdığımızda konfigürasyon ayarlarından bloklanacak uzantılara müdahale edebileceğimizi görüyoruz. Bunun için Settings> Configure Installation-Wide Options>[BE][fileDenyPattern] yolunu izliyoruz.
Burada belirlenmiş olan patterni silip ayarları kaydediyoruz ve tekrar php shell yüklemeyi deniyoruz.
Ve Bingo! Başarılı bir şekilde shell aldık.
ROOT
Makine üzerinde “ find / -perm –u=s –type f –ls 2>/dev/null “ komutunu çalıştırarak suid izinlerini kontrol ediyoruz.
Burada root yetkisiyle çalışan apache2-restart binary dosyası dikkatimizi çekiyor. Strings ile dosyayı incelediğimizde tam yolu verilmemiş bir şekilde “ service “ çalıştırarak apache başlatılıyor.
Bunu yetki yükseltme için kullanabilir. İlk olarak /tmp dizinine giderek içinde “/bin/bash” komutu barındıran bir dosya oluşturuyoruz, ardından dosya iznini ayarlıyoruz ve PATH değişkeninin ilk sırasına /tmp dizinini ekliyoruz.
Apache2-restart binary dosyasını çalıştırdığımızda içerisinde bulunan service komutu PATH değişkeninde ilk sırada olan tmp dizinindeki service dosyasını çalıştırmış olacak ve böylelikle root kullanıcısına geçiş yapmış olacağız. Apache2-restar’ı çalıştırıyoruz.
Böylelikle root kullanıcısını ve root flag değerini elde etmiş olduk.