Network Cable

GNU Wget 1.16 Dosya Sistemine Erişim Zafiyeti ve Exploit Edilmesi

Wget komutu, uzak sunucudan HTTP, HTTPS ve FTP protokolleri üzerinden dosya indirilmesini sağlayan bir araçtır. Geçtiğimiz hafta içerisinde wget 1.16 ve önceki versiyonlarında geçerli olan uzaktan komut çalıştırma zafiyeti tespit edilmişti.

Zafiyet, wget’in dizin listelemek istediğin sekmede, mevcut sekme ile aynı isimde bir symlink’in bulunması ile tetiklenmekte. Wget öncelikle symlink’in ait olduğu path’i kendi sisteminde oluşturacaktır. Ardından aynı isimli dosyanın içeriğini bir önceki adımda linklediği yerel dizine yazacaktır.

Saldırgan olarak wget ile FTP adresimize wget komutu çalıştıran kullanıcıların istediğimiz yerel dizinine müdahile edebilme imkanı vermekte.

Bu zafiyeti test ortamında denedik ve exploit etmeyi başarmıştık. Bugün wget zafiyeti için metasploit modülü yayınlandı.

https://github.com/rapid7/metasploit-framework/blob/master/modules/auxiliary/server/wget_symlink_file_write.rb

GNU Wget Zafiyetine Saldırı Düzenlemek

Yukarıda açıklandığı üzere wget komutunu çalıştıran kullanıcının yerel dosya sistemine erişim ve düzenleme imkanı bulunmakta. Saldırı vektörü olarak wget komutunu çalıştıran kullanıcının crontab dosyası yeniden düzenlenerek saldırganın belirlediği IP adresine reverse-shell bağlantısı gerçekleştirilebilir.

Wget komutunu çalıştıran clientte aşağıdaki terminal komutunun crontab ile her 1 dakikada bir çalıştırılması sağlanacaktır.

Kullanıcıdan gelen reverse-shell bağlantısını karşılayacak handler aşağıdaki şekilde ayarlanır ve background process olarak çalıştırılır.

Şimdi ise symlink ile kullanıcının indireceği dosyayı /etc/cron.d/cronshell ‘e linkleyerek FTP servisini başlatan aux modülünü kullanalım

Wget komutunu çalıştıracak masum kullanıcının komutu çalıştırması.

Bu komutun çalışmasının hemen ardından kullanıcının crontab’ına yukarıda belirttiğimiz reverse-shell komutu yazılmış olacak ve anında çalışacaktır.

Handler ekranında ise meterpreter oturumunun açıldığını görmekteyiz.