Merhaba.
Geçen gün twitter anasayfamda gördüğüm bir post dikkatimi çekti. Paylaşım, bir tehdit aktörünün ‘CVE-2018–13379’ numaralı zafiyete sahip 49K’lık bir IP listesi paylaşması hakkındaydı. İlgi çekici görünüyordu.
Muhtemelen -shodan- ve benzeri keşif araçları yardımıyla toplanmış bu listeyi elde etmek zor değil. Bu yüzden ciddi görünüyordu ve ben de daha önceden görüp test ettiğim bu exploiti incelemeye karar verdim. (exploit’e buradan ulaşabilirsiniz)
CVE-2018–13379: FortiOS 5.6.3–5.6.7 / FortiOS 6.0.0–6.0.4 — Credentials Disclosure
Fortinet ve FortiOS sistemleri, ağ güvenliği üzerine çalışan, kullanıcılarına WAF , antivirüs koruması, VPN, Web içeriğini filtreleme ve anti-spam gibi çeşitli güvenlik eklentileri sağlayan, global ve yaygın bir kullanıma sahip olan yazılımlardır.
İlgili exploit kullanılarak FortiOS’un zafiyetli (FortiOS 5.6.3–5.6.7 / FortiOS 6.0.0–6.0.4) versiyonlarında Path Traversal aracılığıyla kimlik bilgilerinin clear text şeklinde elde edilmesi mümkün. Herhangi bir şifreleme yapılmadığı için de yetkili panele ulaşmak çok kolay oluyor.
Zafiyetten etkilenen sürümler:
FortiOS 6.0–6.0.0 to 6.0.4
FortiOS 5.6–5.6.3 to 5.6.7
FortiOS 5.4–5.4.6 to 5.4.12
1) Metasploit Aracılığıyla Sömürü
Analizimi ilgili exploitin Metasploit varyantını kullanarak sürdüreceğim. Bu yüzden CVE-2018–13379'i Metasploit veritabanımıza ekleyerek başlayalım.
Exploiti MSF’in dizinine dahil edelim ve updatedb komutu ile güncelleyelim.
curl ‘https://www.exploit-db.com/exploits/47287' -o /yourmsfconsolemodule/[]/exploit.py
//
updatedb
Exploiti seçelim ve hedefin RHOST, RPORT değerlerini girelim. Ardından check işlemini bekleyelim.
Görüldüğü gibi kullanıcı dosyasını plaintext (clear text) şeklinde okumuş olduk. Bu adımdan sonra FortiOS’un SSL VPN paneline ulaşmak çok kolay.
2) Manuel Sömürü
Sömürü kısmında asıl olarak faydalanmış olduğumuz Path Traversal zafiyeti, sistemin dosya yolundaki kaynakları veya özel öğeleri düzgün bir şekilde filtreleyememesi sebebiyle oluşuyor. Bu sayede hedef üzerinde okunması istenmeyen özel dosyalar dizinler aracılığıyla çağrılabiliyor.
Bu aşamada ilgili exploitin kaynak kodunun ilgili bölümünü incelersek:
Tanımlanan “url” kısmında host ve port değişkenleriyle beraber hedefin /remote/fgt_lang?lang=
dizinine geçiyor ve Path Traversal zafiyetini kullanarak /../../../..//////////dev/cmdb/sslvpn_websession
payloadı ile kullanıcıları clear text şeklinde elde etmiş oluyor.
Demo: https://target.com/remote/fgt_lang?lang=/../../../..//////////dev/cmdb/sslvpn_websession
Fortinet yayımladığı yamalarla ilgili zafiyeti fixlemiş olsa da hala birçok sunucu eski versiyonu kullanıyor.
Kaynaklar: