Skip to content

Commit 14c2daa

Browse files
committed
v1.3
1 parent 3c8cf92 commit 14c2daa

File tree

11 files changed

+190
-471
lines changed

11 files changed

+190
-471
lines changed

CHANGELOG.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,16 @@
11
MyExpense Application
22
=======================
33

4+
v1.3 (27/03/2024)
5+
======
6+
7+
+ Changed
8+
- Based on Debian 12
9+
- Installation from source is nox based on a automatic script
10+
11+
+ Fixed
12+
- Initialization of the database not possible when installing the application from the sources.
13+
414
v1.2 (21/05/2023)
515
======
616

README.fr.md

Lines changed: 25 additions & 230 deletions
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,22 @@ __Read this in other languages:__ [English](README.md), [Français](README.fr.md
55
## Détails du challenge
66

77
* **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
1010
* **Réseau :** DHCP
1111

1212
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.
1313

1414
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.
1515

1616
## Point d'attention
17+
1718
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).
1819

1920
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*).
2021

2122
## Scénario
23+
2224
Afin de simuler une attaque ayant un but et une motivation réelle, voici un scénario menant à la validation du challenge :
2325

2426
```
@@ -36,262 +38,55 @@ Une fois le challenge réussi, le flag sera affiché sur l'application en étant
3638
A vos claviers !
3739
3840
```
39-
## Téléchargement de la machine virtuelle
41+
42+
## Installation
43+
44+
### Téléchargement de la machine virtuelle
4045

4146
Il est plus simple de récupérer l'application en téléchargeant directement la machine virtuelle au format _.vbox_ :
42-
- [MyExpense Virtual Machine (LATEST)](https://www.mediafire.com/file/fex3dyfbpjbbqtc/My_Expense_Vulnerable_Web_Application_-_1.2.ova/file)
47+
- [MyExpense Virtual Machine (LATEST)](https://www.mediafire.com/file/e1hjy5orlpd87au/My_Expense_Vulnerable_Web_Application_-_1.3.ova/file)
4348
- [MyExpense Virtual Machine (v1.0) Vulnhub Version](http://www.mediafire.com/file/mx1b7qe00y9dfzv/MyExpense_Vulnerable_Web_Application.ova/file)
4449

4550
> 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).
4651
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 :
49-
50-
![](https://github.com/Sharpforce/MyExpense/blob/master/img/4ae8ad29aadb188f855b952e1e21f588.png?raw=true)
51-
52+
### Installation à partir des sources
5253

54+
> Lors de l'installation via une machine virtuelle, la première interface réseau doit être en mode __bridge__ ou __host_only__.
5355
54-
## Installation à partir des sources
55-
> Testé sur Debian 11 / Python3 / Google Chrome 111.0.5563.110
56+
#### Compatibilité
5657

57-
### Système d'exploitation
58-
L'installation a été testée sous un système d'exploitation Linux Debian 10.
58+
> Testé sur Virtualbox 7.0.12 / Debian 12 / Python3 / Google Chrome 123.0.6312.58
5959
60-
### Installation des paquets
61-
Dans un premier temps il est nécessaire d'installer les paquets correspondant au serveur web Apache, à PHP ainsi que la base de données MySql :
60+
#### Installation de Git et récupération du code source
6261

62+
Il est possible d'installer l'utilitaire git afin de récupérer les sources de l'application :
6363
```
64-
# apt-get update
65-
# apt-get install apache2 mysql-server php php-mysql
66-
```
67-
68-
Puis :
69-
70-
```
71-
# rm /var/www/html/index.html
72-
```
73-
74-
### 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.
76-
77-
#### Par l'utilitaire Git
78-
79-
```
80-
# apt-get install git
64+
# apt install git
8165
# cd /tmp
8266
# git clone https://github.com/Sharpforce/MyExpense.git
8367
```
8468

85-
Il faut ensuite déplacer le code source au sein du répertoire */var/www/html/* d'Apache :
86-
87-
```
88-
# mv /tmp/MyExpense/src/* /tmp/MyExpense/src/.htaccess /var/www/html/
89-
```
90-
91-
#### Par l'archive Zip
92-
Il sera peut être nécessaire d'installer le paquet **unzip** afin d'extraire l'archive :
93-
94-
```
95-
# apt-get install unzip
96-
```
97-
98-
Puis extraire l'archive :
99-
100-
```
101-
# cd /tmp
102-
# wget https://github.com/Sharpforce/MyExpense/archive/master.zip
103-
# unzip master.zip
104-
# mv /tmp/MyExpense-master/src/* /tmp/MyExpense-master/src/.htaccess /var/www/html
105-
```
106-
107-
### Configuration Apache2
108-
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
11570

11671
```
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
12273
```
12374

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.
12976

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
16678

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_ :
16980

17081
![](https://github.com/Sharpforce/MyExpense/blob/master/img/d2a99cee077535dc955e87a1d8f8727e.png?raw=true)
17182

17283
Vérifier les informations puis cliquer sur **Create/Restore the database** :
17384
![](https://github.com/Sharpforce/MyExpense/blob/master/img/4ae8ad29aadb188f855b952e1e21f588.png?raw=true)
17485

175-
### Installation des scripts employés
176-
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_ :
179-
180-
```
181-
# mv /var/www/html/config/login_collab1_script.py /opt
182-
# mv /var/www/html/config/login_collab2_script.py /opt
183-
# mv /var/www/html/config/login_manager_script.py /opt
184-
# mv /var/www/html/config/login_admin_script.py /opt
185-
# mv /var/www/html/config/login_scripts.sh /opt
186-
# chmod +x /opt/login_scripts.sh
187-
```
188-
189-
Les scripts nécessitent plusieurs paquets/composants afin de fonctionner (Python3, Selenium, Google Chrome et Chrome driver). Tout d'abord installer Chrome driver :
190-
191-
```
192-
# cd /tmp
193-
# apt-get install xvfb libxi6 libgconf-2-4 unzip
194-
# wget https://chromedriver.storage.googleapis.com/LATEST_RELEASE
195-
# wget https://chromedriver.storage.googleapis.com/`cat LATEST_RELEASE`/chromedriver_linux64.zip
196-
# unzip chromedriver_linux64.zip
197-
# mv chromedriver /usr/local/bin/
198-
# chown root:root /usr/local/bin/chromedriver
199-
# chmod +x /usr/local/bin/chromedriver
200-
```
201-
202-
Puis Google Chrome :
203-
204-
```
205-
# wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
206-
# dpkg -i google-chrome-stable_current_amd64.deb
207-
# apt-get install -f
208-
```
209-
210-
Ensuite Python3, Pip et Selenium:
211-
212-
```
213-
# apt-get install python3-pip
214-
# pip3 install selenium
215-
```
216-
217-
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).
222-
223-
source /etc/network/interfaces.d/*
224-
225-
# The loopback network interface
226-
auto lo
227-
iface lo inet loopback
228-
229-
allow-hotplug enp0s3
230-
iface enp0s3 inet dhcp
231-
```
232-
233-
Et sous VirtualBox :
234-
235-
![](https://github.com/Sharpforce/MyExpense/blob/master/img/virtualbox-network.png?raw=true)
86+
L'installation est maintenant **complète**, l'application est disponible à l'adresse _http://ip_
23687

237-
Il est possible d'exécuter les scripts directement et de commencer à attaquer l'application (en accédant à l'application via le navigateur web) :
238-
239-
```
240-
# python3 -W ignore /opt/login_collab1_script.py &
241-
# python3 -W ignore /opt/login_collab2_script.py &
242-
# python3 -W ignore /opt/login_manager_script.py &
243-
# python3 -W ignore /opt/login_admin_script.py &
244-
```
245-
246-
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
29289

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 :
29691

297-
L'installation est maintenant **complète**, l'application est disponible à l'adresse _http://ip_
92+
![](https://github.com/Sharpforce/MyExpense/blob/master/img/4ae8ad29aadb188f855b952e1e21f588.png?raw=true)

0 commit comments

Comments
 (0)