hackNos: Os-hackNos-3 Zafiyetli Makinenin Çözümü //By Ghost

By Ghost

Katılımcı Üye
11 Tem 2013
941
2
C:\Linux
Merhabalar herkese. Bu yazıda sizlerle beraber hackNos serisinin Os-hackNos-3 isimli zafiyetli makinenin çözümünü inceleyeceğiz.
APM7O5.png

https://www.vulnhub.com/entry/hacknos-os-hacknos-3,410/
5xJRdf.png

Makine ismi: Os-hackNos-3

Yayınlanma Tarihi: 14 Aralık 2019

Yapan: Rahul Gehlaut

Boyut/Format: 1.8GB/OVA

Zorluk: Orta

İşletim Sistemi: Linux

Seri: hackNos

Açıklama: Makinedeki 2 flag dosyasını bul. (UserFlag-RootFlag)

Not: Başlamadan önce belirtmek isterim. Bu seriyi oluşturan kişisel VirtualBox üzerinde çalışmışlar. İndirdiğiniz zafiyetli makine VMware 'da düzgün çalışmayacaktır. VirtualBox üzerinden CTF'i çözmenizi öneririm.

7bezLT.png

İlk olarak makinemizin ip adresini öğrenmek için terminale arp-scan -l yazalım.

fDRRH0.png


IP adresimizi öğrendikten sonra nmap taraması ile makinemizde hangi portlar açıkmış bakalım.
Kod:
nmap -A -p- 192.168.1.41
-A ALL demek detaylı arama için kullanılır
-p- tüm portları tarar. (1-65536)

7lYHPN.png


Zafiyetli makinemizde 22 (ssh) ve 80 (http) portları açık. WebSec başlığına sahip web sitesinde bakmak için tarayıcımıza ip adresini yazalım.

uHrFrF.png

SnJsuj.png


Bir resim ve en alttada 2 satır yazı olduğunu görüyoruz. Normal ip adresine dizin taraması (dirb taraması) yaptığımda bişi bulamadım. O yüzden onu burada göstermiyorum. WebSec ile alakalı internette bakınsamda oradan da bişi çıkmadı. Bi yarım saatlik uğraşın ardından dizin olduğunu fark ettim. URL sonuna /websec yazıp enterlayalım :)
Kod:
http://192.168.1.41/websec
JCBPp4.png


Daha düzenli bir websitesi bulabildik. Şimdi bu dizinle alakalı bi dirb taraması yapalım neler bulucaz bakalım.
Kod:
dirb http://192.168.1.41/websec
Xds5oq.png


Düzenli bir dosya yapısı olduğunu görüyoruz. Hazır bi sistem olabileceğini düşünüyorum. Kontrol etmek için /admin dizinine gidip bakalım.

eeUzLl.png


Gila CMS hazır sistemin login sayfası karşımıza geldi. İlk olarak admin:admin tarzı basit login bilgilerini denemek istiyorum ama e-mail input kısmı .. @... tarzı gerçek bi mail adresi istiyor. Düz metin kabul etmiyor. websec sayfasını incelediğimde One Page bi tema olduğunu fark ediyorum ve contact kısmında gözüme bi email takılıyor. [email protected] bu bilgi ile bi giriş denemesi yapalım.
Login: [email protected]
Pass: test



dQfVdP.png


Bunu yapmamızın sebebi login sayfası bulduğumuz zaman brute force atak yapmak mantıklı oluyor. Bunun için bi hata mesajı alıp almadığımızı öğrenmek bize fayda sağlayacak. Gördüğünüz gibi "Wrong email or password" hatası geri döndü bize. Şimdi elimde bi wordlist eksik. Onu da tamamlamak için cewl aracından yararlanacağız. cewl aracı kısaca websitesi üzerinde bulduğu kelimelerden bir wordlist oluşturmaya yarıyor. Bizde terminale zafiyetli makinemizin web sayfası üzerinden bir wordlist oluşturalım. Aşağıdaki komutu terminale yazalım.
Kod:
cewl http://192.168.1.41/websec/ -d 2 -w wordlist.txt
yYciBE.png


Elimde bir adet email adresi ve site ile alakalı oluşturduğum wordlist var. Şimdi brute force atak yapabilirim. Bunun için login sayfamızda post isteğinin nasıl gönderildiğini öğrenmek için tarayıcımızdan yardım almalıyız. Bunun için F12 Öğeyi incele kısmını açalım. Network sekmesine gelip giriş bilgilerini dolduralım. Login butonuna bastığımda Network sekmemize istekler düşecek. Bu istekler arasından POST methodlu index.php dosyası ile alakalı pakete tıklayınız. Sağ tarafta paket ile alakalı bilgileri göreceksiniz. Headers kısmında ilk kutuda Edit and Resend butonu var ona tıklayıp Request Body kısmında post isteğimizin nasıl gönderildiğini öğreniyoruz. [Bu kısmı biraz karmaşık anlattığım için kusura bakmayın :/]


RhFOkX.png


Şimdi elimde bir tane email bir tane wordlist ve post işlemi için gerekli bilgileri biliyorum. Brute force atak yapmak için hydra aracını kullanacağız burada. Terminale aşağıdaki komutu girdiğimizde hydra bizim için login sayfasına brute force atak yapmaya başlayacak.
Kod:
[B][COLOR=Cyan]##[/COLOR][/B]
[B][COLOR=Cyan]##[/COLOR][/B]
[B][COLOR=Cyan]hydra -l [email protected] -P wordlist.txt 192.168.1.41 http-post-form "/websec/admin/:username=^USER^&password=^PASS^:F=Wrong email or password"[/COLOR][/B]
[B][COLOR=Cyan]##[/COLOR][/B]
[B][COLOR=Cyan]##[/COLOR][/B]

-l --> kullanıcı adı bilgisi(-L kullanıcı adı wordlist dosyası)
-P --> password için wordlist
http-post-form --> login sayfası için kullanması gereken method parametresi
:F --> Failed/ Bize geri dönen hata mesajı


E7MIqX.png


Burada hydra ":F=Wrong..." hata mesajı döndürmeyen bişi bulursa bize şifreyi bulduğunu söylüyor. hydra doğru ve detaylı parametreler kullanıldığı zaman çok iyi bruteforce atak yapmamızı sağlıyor. Giriş bilgilerimizi bulduğumuza göre login sayfasına geri dönüp bilgileri girelim.
fDOjvq.png


Panele giriş sağladık. Paneli biraz incelediğimiz zaman Content kısmında File Manager kısmı bulunmakta.

n8Et1D.png


Buraya baktığımız zaman sistemde bulunan dosyaların kodları ile alakalı işlemler yapılabileceğini görebiliyorum.

suvuop.png


Sisteme sızabilmem için zafiyetli makineden bana shell dönmesi gerekiyor. Dosyalarda düzenleme de yapabildiğime göre reverse shell kodlarımızı burada çalıştırabilir ve sistemden bize shell döndürebiliriz. Reverse Shell için me-ta-sploit de kullanabilirsiniz ama ben size elle de nasıl yapıldığını göstermek için manuel yolu anlatacağım. Bunun için bize reverse shell yapan php kodu lazım. Bunu temin etmek için pentestmonkey sitesinden yararlanacağız.
Kod:
http://pentestmonkey.net/tools/web-shells/php-reverse-shell
FAUugG.png


Sıkıştırılmış dosyamızı indirdikten sonra yeni bir terminal açıp aşağıdaki komutları sırasıyla girip kodları alalım.
Kod:
cd Downloads/
Kod:
tar -xf php-reverse-shell-1.0.tar.gz
Kod:
cd php-reverse-shell-1.0/
Kod:
mousepad php-reverse-shell.php
(Mousepad yerine aktif kullandığınız text editörünü yazabilirsiniz.)


xDB3rz.png


.php dosyamızda bulunan kodları kopyalayıp panelimizdeki index.php dosyasına yapıştıralım. Bu kodlarda düzelemeniz gereken 2 tane yer var. $ip ve $port kısımlarını kendinize göre düzenleyiniz. port numarası popüler portlar dışında bişi yazmamızda önem var yoksa hata alma ihtimaliniz bulunuyor. 4444, 1234 tarzı port numaralarını kullanabilirsiniz. Ben örnekte 1526'yı kullandım. ip adresiniz zaten ifconfig :)

CGHPov.png


Gerekli değişikleri yaptıktan sonra save diyip kaydedelim. Daha sonra yeni bir terminal açıp aşağıdaki komutu yazalım.
Kod:
nc -lvp 1526
EYpXtB.png


1526 portunu dinlemeye aldık. Şimdi tarayıcımızda yeni bir sekme açıp 192.168.1.41/websec/ yazabilirsiniz veya zaten açık bir sekmede varsa F5 ile sayfayı yenileyiniz. Bu işlemi bir kere yaptıktan sonra site ile işimiz kalmıyor çünkü terminale geri döndüğümüzde (portu dinlemeye aldığımız terminal) zafiyetli makineden bize shell döndürebildik :)

8Qin1c.png


www-data kullanıcısı (neredeyse 0 hakka sahip kullanıcı yani) ile sisteme girebildik. Sistemi altını üstüne getirdim ama yetki yükseltme işlemini yapabileceğim bişi bulamadım. Bi kaç bulduğum yöntemde çalışmadı. Bende yine website üzerinden bişiler öğrenebilmek için /var dizininde aramalar yaptım. Uzun bi aramanın sonunda garip bir dosya buldum. Bu dosyaya ulaşmak için sırasıyla aşağıdaki komutları girelim.
Kod:
cd /var/local
Kod:
ls -al
Kod:
cat database
8J0Uxl.png


Google üzerinden biraz araştırma yaptıktan sonra decode edilebilecek bir metin olduğunu buluyorum. Decode edebilmek için google'a search edelim.

LLoms5.png

Siteye gittiğinizde alt tarafta "Decode fake spreadsheet new" kısmına tıklayalım. Daha sonra zafiyetli makinemizde bulduğumuz metni buraya yapıştıralım ve decode yazalım.
oiukZz.png

cm846u.png


Artık elimde bir şifre var. Daha önce sistemde yetki yükseltme yapılabilecek bişiler denerken /home dizini altında blackdevil isimli bir dizin bulmuştum. Biliyorsunuz ki sistemdeki diğer kullanıcılar /home dizini altında dosyaları olur. blackdevil sistemde kayıtlı bir kullanıcı. home dizini altında başka bir klasör de bulunmamakta. Bir diğer yöntem de zaten /etc/passwd dosyasını okumak. Oradan da kullanıcıları tespit etmek mümkün. Bulduğum şifreyi denemek için sisteme sızdığımız terminale dönüp aşağıdaki komutu yazalım.
Kod:
su blackdevil
Kod:
Security@x@
Kod:
cd /home/blackdevil
Kod:
cat user.txt
NxvRI9.png


Blackdevil kullanıcısına geçebildik ve ilk flag dosyamızı (user.txt) okuduk. Şimdi son olarak /root dizini altındaki flag dosyamıza erişmek kaldı. Bunun için yetki yükseltmemize ihtiyacımız var. Bunun için terminale sudo -l yazalım. Bizden şifre isteyecek blackdevil kullanıcısı için bulduğumuz şifreyi girelim. Görüyoruz ki sudo zafiyeti sistemde bulunmakta :) terminale sudo su yazalım.
Kod:
sudo su
Kod:
id
Kod:
cd /root
Kod:
cat root.txt
wE8i1L.png


H4ck3njoy :)
04gkaa.png

Elimden geldiğince çözümü anlatmaya çalıştım. Umarım faydalı ve doğru anlatabilmişimdir. Biraz karmaşık ve uzun anlatmış olabilirim onun için şimdiden özür dilerim ama takıldığınız yerleri sorun yardımcı olurum. Bir başka CTF çözümünde buluşmak üzere Allah'a emanet olun :)
 
Son düzenleme:

SP

Kıdemli Üye
29 Eki 2018
2,697
564
Ghost güzel olmuş vaktim olunca kullanacağım teşekkür bıraktım
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.