DIIAGE: TP sécurité des applicaiton web & métrologie appliquée à la sécurité

This commit is contained in:
wpetit 2017-12-22 10:16:12 +01:00 committed by Benjamin Bohard
parent c90015ab94
commit a9dba3b3b6
3 changed files with 80 additions and 1 deletions

View File

@ -0,0 +1,53 @@
# TP - Métrologie appliquée à la sécurité
## Objectifs
- En fonction de scénarios d'attaque identifiés dans une application Web, proposer et implémenter des métriques permettant de détecter ceux ci.
## Contexte et contraintes
Soit une application simpliste de "trading" de cryptomonnaie fictive FakeCoin© et les scénarios d'attaque ci dessous:
1. Implémenter l'API en NodeJS
2. Identifier et proposer des métriques pour détecter les scénarios d'attaque
3. Mettre en place les sondes dans l'application et proposer des requêtes avec leur seuil de déclenchement pour l'émission d'alertes.
### API de l'application
- **URL** `GET /wallet`
**Données retournées**
Total de FakeCoins présents dans le portefeuille de l'utilisateur.
- **URL** `POST /sell`
**Paramètres**
`amount` Nombre de FakeCoins à vendre (à retirer du portefeuille)
**Données retournées**
Total de FakeCoins vendus, si la vente a réussie.
**Contraintes**
- On ne peut pas vendre plus de FakeCoins que l'on en possède dans son portefeuille.
- **URL** `POST /buy`
**Paramètres**
`amount` Nombre de FakeCoins à acheter (à ajouter au portefeuille)
### Scénarios d'attaque
1. **Vol de compte** Un attaquant a réussi à obtenir les identifiants d'accès au compte d'un utilisateur et tente d'effectuer des ordres de ventes depuis une **autre adresse IP**.
2. **Tentative d'abus sur le mécanisme de vente** Un utilisateur mal intentionné tente d'effectuer **un grand nombre d'ordres de vente** en parallèle afin d'exploiter une vulnérabilité sur l'application de la contrainte de vente.
3. **Tentative de blanchiment d'argent** Un utilisateur mal intentionné tente d'effectuer du blanchiment d'argent via la plateforme en lançant des ordres d'achat de FakeCoins avec **des montants anormalement hauts**.
## Ressources
- [Documentation du projet Prometheus](https://prometheus.io/docs/introduction/overview/)
- [Module ExpressJS - Framework de création d'application Web pour NodeJS](http://expressjs.com/en/starter/installing.html)
- [Module PromClient - Module NodeJS "client" pour Prometheus](https://github.com/siimon/prom-client)

View File

@ -12,7 +12,7 @@ LINKS=${@:3}
# docker network create --driver bridge minio # docker network create --driver bridge minio
DOCKER_ARGS="--rm -p ${PORT}:9000 --name ${NAME} --network bridge" DOCKER_ARGS="--rm -p ${PORT}:9000 --name ${NAME} --network minio"
DOCKER_ARGS="${DOCKER_ARGS} -e MINIO_ACCESS_KEY=access_key" DOCKER_ARGS="${DOCKER_ARGS} -e MINIO_ACCESS_KEY=access_key"
DOCKER_ARGS="${DOCKER_ARGS} -e MINIO_SECRET_KEY=secret_key" DOCKER_ARGS="${DOCKER_ARGS} -e MINIO_SECRET_KEY=secret_key"
DOCKER_ARGS="${DOCKER_ARGS} minio/minio server" DOCKER_ARGS="${DOCKER_ARGS} minio/minio server"

View File

@ -0,0 +1,26 @@
# TP - Sécurité des applications Web
## Objectifs
- Découvrir les principales vulnérabilités affectant les applications Web.
## Contexte et contraintes
- Utilisation de [Docker CE](https://docs.docker.com/) et de l'image `bornholm/epicfaild` sur une distribution GNU/Linux.
### Déroulement
1. Sur votre machine avec Docker, exécuter la commande suivante:
```bash
docker run -it --rm -p 8080:8080 bornholm/epicfaild
```
_Vous pouvez faire un `Ctrl+C` pour stopper le conteneur puis relancer la commande si vous voulez récupérer une instance "propre" de l'application._
2. Ouvrir dans un navigateur l'URL http://localhost:8080
3. Effectuer les différents exercices ("gates") proposés en s'appuyant sur les consignes et les ressources présentées.
## Ressources
- [ISO Ubuntu Server 16.04.3 LTS](https://www.ubuntu.com/download/server/thank-you?version=16.04.3&architecture=amd64)
- [Installer Docker sur Ubuntu](https://docs.docker.com/engine/installation/linux/docker-ce/ubuntu/)