You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -5,20 +5,22 @@ __Read this in other languages:__ [English](README.md), [Français](README.fr.md
5
5
## Détails du challenge
6
6
7
7
***Difficulté :** Facile
8
-
***Type :** Réaliste
9
-
***Technologies :** PHP / MySQL
8
+
***Type :** Réaliste / Web (Pas une machine boot 2 root)
9
+
***Technologies :** PHP / MariaDB
10
10
***Réseau :** DHCP
11
11
12
12
MyExpense est une application **volontairement vulnérable** permettant de s’entraîner à détecter et à exploiter différentes vulnérabilités web. Contrairement à une application de type "challenge" plus classique (qui permet de s'entraîner sur une seule vulnérabilité précise), MyExpense contient un ensemble de vulnérabilités.
13
13
14
14
Le second objectif de cette application est d'immerger l'attaquant dans un environnement professionnel. Pour cela, un effort a été fourni afin que l'application ressemble le plus possible à un outil destiné à une utilisation interne par les employés de l'entreprise "Futura Business Informatique". De plus, il est possible (et nécessaire afin de récupérer le flag/drapeau validant le challenge) de lancer des scripts permettant de simuler l'utilisation de l'application par des employés afin d'exploiter certaines vulnérabilités ayant pour victime les utilisateurs authentifiés.
15
15
16
16
## Point d'attention
17
+
17
18
L'application étant volontairement vulnérable il n'est pas souhaitable de l'exposer sur le réseau Internet car d'autres personnes que vous pourront y y accéder. Il est conseillé d'utiliser une machine virtuelle (en utilisant par exemple le logiciel [VirtualBox](https://www.virtualbox.org/)) et de restreindre la connectivité **hôte/machine vulnérable** (mode Réseau privé hôte).
18
19
19
20
A des fins d’entraînement, il est conseillé de ne pas utiliser d'outils de détection ou d'exploitation de vulnérabilités (scanner de vulnérabilité, etc) et de ne pas regarder le code source de l'application (mode *blackbox*).
20
21
21
22
## Scénario
23
+
22
24
Afin de simuler une attaque ayant un but et une motivation réelle, voici un scénario menant à la validation du challenge :
23
25
24
26
```
@@ -36,262 +38,55 @@ Une fois le challenge réussi, le flag sera affiché sur l'application en étant
36
38
A vos claviers !
37
39
38
40
```
39
-
## Téléchargement de la machine virtuelle
41
+
42
+
## Installation
43
+
44
+
### Téléchargement de la machine virtuelle
40
45
41
46
Il est plus simple de récupérer l'application en téléchargeant directement la machine virtuelle au format _.vbox_ :
> La machine est configurée en DHCP, retrouver son adresse IP fait partie du challenge (à partir de la version 1.2 l'adresse IP est affichée au démarrage de la box).
46
51
47
-
## Réinitialiser la base de données de l'application
48
-
Il est possible de restaurer la base de données de l'application afin de pouvoir recommancer à partir de l'état initial. Pour cela il faut se rendre sur l'url _http://ip/config/setup.php_ puis de cliquer sur _Create/restore the database_. Un message indiquant que l'opération a été effectuée avec succès doit apparaître :
### Installation de git et récupération du code source
75
-
Il est possible d'installer l'utilitaire git afin de récupérer les sources de l'application ou alors de télécharger directement sur GitHub l'archive au format ZIP.
Une modification doit être effectuée au sein du fichier de configuration d'Apache2 afin de prendre en compte le fichier _.htacess_ :
109
-
110
-
```
111
-
# vim /etc/apache2/apache2.conf
112
-
```
113
-
114
-
Modifier la ligne _AllowOverride None_ par _AllowOverride All_ dans la partie _<Directory /var/www/>_ :
69
+
#### Exécution du script d'installation
115
70
116
71
```
117
-
<Directory /var/www/>
118
-
Options Indexes FollowSymLinks
119
-
AllowOverride All
120
-
Require all granted
121
-
</Directory>
72
+
# /bin/bash /tmp/MyExpense/install/install.sh
122
73
```
123
74
124
-
Puis redémarrer le service Apache2 :
125
-
126
-
```
127
-
# service apache2 restart
128
-
```
75
+
L'installation se terminera par un redémarrage de la machine.
129
76
130
-
### Configuration de la base de données
131
-
132
-
```
133
-
# mysql -u root
134
-
```
135
-
136
-
Création d'un nouvel utilisateur et attribution des droits :
137
-
138
-
```
139
-
MariaDB [(none)]> grant all on *.* to MyExpenseUser@localhost identified by 'password';
140
-
Query OK, 0 rows affected (0.00 sec)
141
-
142
-
MariaDB [(none)]> flush privileges;
143
-
Query OK, 0 rows affected (0.00 sec)
144
-
145
-
MariaDB [(none)]> quit
146
-
Bye
147
-
```
148
-
149
-
Il faut maintenant renseigner ces informations au niveau du fichier de configuration de l'application :
150
-
151
-
```
152
-
# vim /var/www/html/config/config.inc.php
153
-
```
154
-
155
-
Puis modifier les informations de connexion :
156
-
157
-
```
158
-
// Database Configuration
159
-
$_bdd = array();
160
-
$_bdd['server'] = "127.0.0.1";
161
-
$_bdd['port'] = "3306";
162
-
$_bdd['user'] = "MyExpenseUser";
163
-
$_bdd['password'] = "password";
164
-
$_bdd['database'] = "myexpense";
165
-
```
77
+
#### Création de la base de données
166
78
167
-
### Création de la base de données
168
-
La configuration de l'application MyExpense doit être maintenant accessible via l'url _http://your-ip/config/setup.php_ (il est possible qu'une erreur s'affiche tant que la base de données n'est pas créée) :
79
+
La configuration de l'application MyExpense doit être maintenant accessible via l'url _http://your-ip/config/setup.php_ :
L'application doit être maintenant installée et fonctionnelle. Afin de pouvoir compléter le challenge proposé et de rendre l'expérience un peu plus immersif, il est nécessaire d'installer les scripts de simulation d'action des employés.
177
-
178
-
Déplacer les scripts présents dans le répertoire _/var/www/html/config_ dans un autre répertoire, par exemple _/opt_ :
Les scripts nécessitent plusieurs paquets/composants afin de fonctionner (Python3, Selenium, Google Chrome et Chrome driver). Tout d'abord installer Chrome driver :
Chacun des scripts se basent sur l'adresse IP de l'interface enp0s3. Pour que la machine fonctionne correctement, configurer le fichier _/etc/network/interfaces_ comme ceci :
218
-
219
-
```
220
-
# This file describes the network interfaces available on your system
221
-
# and how to activate them. For more information, see interfaces(5).
Il peut être plus judicieux de lancer ses scripts au démarrage de la machine afin de ne pas avoir à les lancer à chaque fois :
247
-
248
-
Créer l'utilisateur Debian "myexpense" (le mot de passe importe peu) :
249
-
250
-
```
251
-
# adduser myexpense
252
-
passwd: password updated successfully
253
-
Changing the user information for myexpense
254
-
Enter the new value, or press ENTER for the default
255
-
Full Name []:
256
-
Room Number []:
257
-
Work Phone []:
258
-
Home Phone []:
259
-
Other []:
260
-
```
261
-
262
-
```
263
-
# vim /etc/systemd/system/login_scripts.service
264
-
```
265
-
266
-
Renseigner les lignes suivantes dans ce fichier :
267
-
268
-
```
269
-
[Unit]
270
-
Description=Runs users scripts for MyExpense Vuln VM
271
-
ConditionPathExists=/opt/login_scripts.sh
272
-
273
-
[Service]
274
-
Type=forking
275
-
ExecStart=/opt/login_scripts.sh
276
-
User=myexpense
277
-
Group=myexpense
278
-
Restart=on-failure
279
-
280
-
281
-
[Install]
282
-
WantedBy=multi-user.target
283
-
```
284
-
285
-
Ajouter le script au démarrage du système :
286
-
287
-
```
288
-
# systemctl enable login_scripts.service
289
-
```
290
-
291
-
Redémarrer :
88
+
## Réinitialiser la base de données de l'application
292
89
293
-
```
294
-
# reboot
295
-
```
90
+
Il est possible de restaurer la base de données de l'application afin de pouvoir recommancer à partir de l'état initial. Pour cela il faut se rendre sur l'url _http://ip/config/setup.php_ puis de cliquer sur _Create/restore the database_. Un message indiquant que l'opération a été effectuée avec succès doit apparaître :
296
91
297
-
L'installation est maintenant **complète**, l'application est disponible à l'adresse _http://ip_
0 commit comments