Vulnhub Hackme Makinesi Çözümü

Vulnhub Hackme Makinesi Çözümü

Herkese merhaba. Bu yazımda vulnhub platformunda bulunan hackme makinesinin çözümünü anlatmaya çalışacağım. Basit olarak derecelendiren bu makine aslında yeni başlayanlar için oldukça öğretici makinedir. Bu makineyi çözerken öğreneceğimiz konular;

  • Netdiscover ile ağ taraması yapmayı,
  • Burp suite ile trafik arasına girmeyi,
  • Sqlmap ile database dump etmeyi,
  • Reverse shell kullanarak bash kullanıcısı elde etmeyi,
  • Standart kullanıcıdan SUID biti ile hak yükseltme

işlemlerini öğreneceğiz. Makineyi https://www.vulnhub.com/entry/hackme-1,330/ linki üzerinden indirebilirsiniz. İndirdiğimiz makineyi NAT ağına aldığımız zaman kalabalık bir ağda iseniz eğer hedefi bulmak daha da kolaylaşacaktır.

Tarama – Keşif

İlk olarak hedef makineyi keşfetmek için ağı taramamız gerekmektedir. Tarama işlemini “netdiscover” komutu ile gerçekleştirebiliriz.

Taramayı sadece netdiscover komutu ile yapabileceğimiz gibi “netdiscover -r 192.168.0.0/16” şeklinde de yapabiliriz. Tarama sonuçlarında 192.168.232.131’in hedef makinem olacağını düşünüp, makinenin ayakta mı değil mi diye “ping 192.168.232.131” testini gerçekleştirebiliriz.

Hedefimizin o IP adresi olduğunu düşünerek nmap taramasını gerçekleştirebiliriz. Nmap ile hangi portların açık olduğu, hangi servislerin çalıştığını, yazacağımız komutlar ile görüntüleyebiliriz. Herkesin kendine göre bir nmap sorgusu bulunabilir. Burada -A ile agresif tarama yapmasını ve aynı zamanda -Pn ile pinglemesini belirttim. -p- kullanarak tüm portların taranması da eklenebilir. Nmap sorguları tamamen sizin kullanımınıza ve aldığınız sonuçlara göre değişmektedir. Sonuçlara baktığımız zaman ssh ve http (apache) servislerinin açık olduğunu görüntüledik. 80 portunun açık olmasından dolayı web ara yüzüne tarayıcıdan IP adresini yazarak ulaşabiliriz.

Tarayıcıdan IP adresini sorguladığımızda karşımıza bir login sayfası gelmektedir. Login sayfası görünce hemen aklıma SQL açığı olabileceği ve sql injection yöntemi ile login olabileceğim geldi. Eğer kullanıcı adında admin var ise doğrudan giriş yap anlamına gelen “admin’#” metodunu kullandığımda herhangi bir sonuç alamadım. Bunun dışında sayfanın kaynak kodlarına baktığım zaman herhangi bir sonuç yine alamadım. Sayfaya üye olunduğunda bir database’e kaydedileceği düşünülebilir. Bu database e de “sqlmap” komutu kullanılarak erişilip dump edilebilir. Bu nedenle sayfaya üye olabiliriz.

“Sign up” seçeneğinden sayfaya üye olup bu kullanıcı adı ile giriş sağladım.

Enumeration

Başarılı bir şekilde login olduktan sonra burp suite ile http trafiği durdurarak neler olup bittiğine bakabiliriz. Tarayıcıda Preferences > Network And Configuration Settings e tıklayarak manuel olarak proxy i ayarlayabiliriz. Burada portu dilediğiniz gibi verebilirsiniz. Bu şekilde proxy i ayarladıktan sonra Kali’de burp suite i çalıştırmamız gerekmektedir.

Sol taraftaki görselde olduğu gibi burp suite açıldıktan sonra Proxy > Intercept> Intercept is on olarak seçtiğimiz zaman, burp suite i aktif hale getirebiliriz. Login sayfasında başarılı bir şekilde giriş yaptıktan sonra arama bölümüne “sergen” yazdığımda direkt olarak sağ taraftaki görselde olduğu gibi burp sayfasına yönlendirmektedir. Bu requestte de herhangi bir şey yakalayamadık. Fakat bu request in içeriğini kopyalayıp sqlmap toolu ile database sorgusu gerçekleştirebiliriz.

Sqlmap ve DB Dump

Sqlmap toolundan bahsetmek gerekirse, sql injection açıklığını tespit ve istismar etme aracıdır. Hedef web uygulamasının kullandığı veri tabanı sistemine gönderdiği çeşitli sorgular ile sistem üzerindeki sql injection tipini tespit eder yine kendisine sağlanan parametrelere göre veri tabanından bilgileri alır.

Burp suite ile http trafiğin arasına girerek aldığımız bilgileri “sql.txt” metin dosyasına yapıştırabiliriz. “sqlmap -r” parametresi ile url ya da listeyi yani sql.txt dosyasını gösterebiliriz. “–dbs” parametresi ile mevcut veri tabanlarını listeleyebiliriz. “–batch” ile de sqlmap in sorduğu sorulara otomatik olarak varsayılan cevabını verebiliriz. Sorgumuzu bu parametreler ile başlatabiliriz.

Görüldüğü gibi çalıştırılan sorgunun sonucunda 5 database listelenmiştir. Burada her database i sırasıyla dump edebiliriz. Fakat burada ismi ile dikkat çeken database bulunmaktadır. Bu database i dump edebilmek için sağ tarafta bulunan komutu kullanabiliriz. Burada -D parametresi, artık listelenen databaseleri spesifik olarak belirtmek için kullanılır. Dump sorgusunu çalıştırıp sonuçlarına bir bakalım.

Sorgu sonucu yukarıdaki gibi listelenmiştir. Bu sayfaya kayıt olduğumuz için kendi ismimi ve şifremi de görüntüleyebiliyoruz. Ulaşmak istediğimiz kullanıcı burada “superadmin” dir. Fakat şifre bölümüne baktığımız zaman diğer kullanıcılarda olduğu gibi superadmin kullanıcısında herhangi bir sonuç görünmemektedir. Superadminin şifresi hashlenmiştir. Bu hashin türünü öğrenebilmek için online hash sitelerini kullanabiliriz.

Hash tiplerini öğrenebilmek için https://www.tunnelsup.com/hash-analyzer/ sitesini kullanabiliriz. “superadmin” kullanıcısının şifre hashini ilgili alana yazıp sonucunu baktığımızda hash tipinin MD5 ya da MD4 olduğunu görmekteyiz. MD5 hashleri genelde kırıldığı için, bu hashinde decrypt olup olmadığına yine online md5 decrypt sitesinden yararlanarak bakabiliriz.

Hash i sorgulattığımız zaman, hash e karşılık gelen değerin “Uncrackable” olduğunu görüntülemekteyiz. Superadmin kullanıcısının şifresini bu şekilde elde etmiş olduk.

Reverse Shell

Başarılı bir şekilde superadmin kullanıcısı ile sisteme giriş yapabildik. Burada amacımız hak yükseltmek ve root kullanıcısına erişmek olduğu için henüz hedefe ulaşamadığımızı anlayabiliriz. Yukarıda görüldüğü gibi sisteme bir dosya yükleyebilme iznimiz bulunmaktadır. Burada hemen aklımıza reverse shell gelmelidir. Reverse shell, hedef makinenin saldırgan makineye doğru iletişim kurduğu kabuk türüdür. Reverse shell kodları içerisine hedef ip ve port bilgisi eklenerek istenilen hedef kabuk elde edilir.

Reverse shell i metasploit framework içerisinde kendiniz oluşturabileceğiniz gibi, hazır olarak github üzerinde de bulunan pentestmonkey, lukechild gibi kaynakları kullanabilirsiniz. Pentestmonkey den aldığım php reverse shell kaynak kodlarını “shell.php” dosyasına ekledim. Daha sonra kodların içerisinde değiştirmemiz gereken yerleri rahatlıkla görebiliriz. Burada, hedef makineyi, Kali makinemizde dinleyeceğimiz için IP adresine Kali makinemizin adresini vermemiz gerekmektedir. Port bilgisini ise dilediğiniz gibi değiştirebilirsiniz. “shell.php” dosyasını hazırladıktan sonra sisteme yükleyebiliriz.

Sisteme dosyayı yükledikten sonra dosyanın “uploads” sayfasına eklendiğini uyarı şeklinde göstermektedir. Uploads sayfasına direkt olarak 192.168.232.131/uploads yazarak ulaşabiliriz. Bunun yerine o uyarıyı almasaydık eğer “dirb” komutu ile IP adresinde bulunan gizli dosyalara ulaşabilirdik.

Hedef sistemden shell alabilmek için netcat ile reverse shell kodlarına eklediğimiz portu dinlememiz gerekmektedir. Aynı zamanda portu dinlerken, hedef sistemde de reverse shell i tetiklememiz gerekmektedir. Netcat, bu tür ortamlarda oldukça yararlı bir tooldur. https://sibertehdit.com/netcat-kullanimi-ve-uygulamalari/ adresinden Netcat ile ilgili yazıma ulaşabilirsiniz.

Sonuç

Görüldüğü gibi reverse shell tetiklendikten sonra, www-data kullanıcısına ulaşabildik. Bu kullanıcının uid ve gid değerlerine baktığımızda standart kullanıcı olduğunu anlayabiliriz. Burada amacımız standart kullanıcıdan root kullanıcısına yükselmektir. Bu kabukta kısıtlı yetkilerimiz bulunmaktadır. Buradan kurtulmak için birçok yöntem bulunmaktadır.

Yukarıdaki gibi “python -c” ile başlayan komutu yazarak www-data kullanıcısının bash kabuğuna ulaşabiliriz. Yapılması gereken diğer işlemlerden biri, root kullanıcısı ile çalışan uygulamaları bulmaktır.

“find / perm -u=s -type f 2>/dev/null” komutunu kullanarak izni -u=s olan yani SUID biti kullanan programları bu şekilde listeleyebiliriz. SUID biti, herhangi bir programın, herhangi bir kullanıcı tarafından o programın sahibinin yetkilerinde çalıştırılmasını sağlamaktır. Yani burada root kullanıcı ile çalışan bir programı çalıştırdığımızda bu kısıtlı kullanıcıdan kurtulabileceğiz. Komutu çalıştırdığımızda, birçok program listelenmektedir. Fakat çoğunu denediğimde root şifresini sormaktadır. /home/legacy/touchmenot u çalıştırmayı denediğimde ise farklı bir sonuç elde ettim.

/home/legacy dizini altındaki “touchmenot” a “ls -la” çektiğimde dosyanın izinlerinde “-rwsr” yi görebilmekteyiz. Bu da dosyanın bizim tarafımızdan çalıştırılabileceği anlamına gelmektedir. “./touchmenot” ile çalıştırdığımızda görüldüğü gibi root kullanıcısına erişimi başarı ile sağlamış olduk. ID değerlerini görüntülediğimizde de userid değerinin 0 yani root olarak değiştiğini görebiliriz.

Hackme makinesinin çözümünde temel olarak güzel şeyler öğrendiğimizi düşünüyorum. Bazı şeyler anlamsız gelebilir fakat makineleri çözdükçe nerede neler yapacağımız, nasıl düşüneceğimiz bu çözmelere bağlı olarak gelişecektir. Umarım bu yazı yararlı olmuştur. Bir sonraki yazımda görüşmek üzere.

KAYNAKÇA

https://www.hackingarticles.in/hackme-1-vulnhub-walkthrough/

https://www.tunnelsup.com/hash-analyzer/

https://crackstation.net/

Related Posts

Facebook Comments