DIIAGE: TP sécurité des applicaiton web & métrologie appliquée à la sécurité
This commit is contained in:
parent
4d76474d99
commit
25d1f582a8
|
@ -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)
|
|
@ -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"
|
||||||
|
|
|
@ -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/)
|
Loading…
Reference in New Issue