Skip to content
Snippets Groups Projects
zz2-f5-websec.md 21.7 KiB
Newer Older
Vincent Mazenod's avatar
Vincent Mazenod committed
Title: ZZ2 F5 - Securité logicielle - sécurité des applications web
Date: 2022-09-13 10:55
mazenovi's avatar
mazenovi committed
Category: <i class='fa fa-graduation-cap' aria-hidden='true'></i> &Eacute;tudiants
Tags: cours

[TOC]

Vincent Mazenod's avatar
Vincent Mazenod committed
## 📚 Supports de cours
Vincent Mazenod's avatar
Vincent Mazenod committed
<!-- div class="panel panel-success">
Vincent Mazenod's avatar
Vincent Mazenod committed
  <div class="panel-heading">
    <h3 class="panel-title">😎 Personnaliser les slides</h3>
  </div>
  <div class="panel-body">
    en entrant votre nom d'utilisateur uca ici 
    <input type="text" placeholder="username" name="username" id="username" />, 
    tous les références à la VM perso (la vulnérable) dans les slides ci-après, seront <strong>personnalisées avec le fqdn de votre VM</strong>, vous permettant d'appliquer les attaques directement depuis les slides
  </div>
Vincent Mazenod's avatar
Vincent Mazenod committed
</div -->
Vincent Mazenod's avatar
Vincent Mazenod committed

<div class="panel panel-success">
  <div class="panel-heading">
    <h3 class="panel-title">💡 Version PDF</h3>
  </div>
  <div class="panel-body">
    <ul>
      <li>Tous les slides sont fait avec <a href="https://github.com/hakimel/reveal.js">reveal.js</a>
        <ul>
          <li>ils sont exportables en pdf en ajoutant <code>?print-pdf#</code> à l'url (à coller juste après le <code>.html</code>) et en passant par l'impression dans un fichier du navigateur chrome ou (mieux) <a href="https://www.chromium.org/">chromium</a>
            <ul>
              <li>plus de détails sur l'<a href="https://github.com/hakimel/reveal.js/#pdf-export">export PDF de reveal</a></li>
            </ul>
          </li>
        </ul>
      </li>
    </ul>
  </div>
</div>

<div class="panel panel-success">
  <div class="panel-heading">
    <h3 class="panel-title">💪 Contributions</h3>
  </div>
  <div class="panel-body">
    <ul>
      <li>
        n'hésitez pas à me signaler des liens morts et / ou à en proposer de nouveaux via une <a href="https://gitlab.isima.fr/vimazeno/blog.limos.fr/-/issues">issue</a> ou directement via un <a href="https://gitlab.isima.fr/vimazeno/blog.limos.fr/-/merge_requests">PR/MR</a>
      </li>
    </ul>
  </div>
</div>


### Contexte
mazenovi's avatar
mazenovi committed

Vincent Mazenod's avatar
Vincent Mazenod committed
<ul>
  <li>
    <a href="slides/1337/lab.html" 
      class="customizable">
      Lab
    </a>
  </li>
Vincent Mazenod's avatar
Vincent Mazenod committed
  <!-- li>
Vincent Mazenod's avatar
Vincent Mazenod committed
    <a href="slides/privacy/sovereignty.html" 
      class="customizable">
      Souveraineté
    </a>
  </li>
  <li>
    <a href="slides/privacy/passwords.html"
      class="customizable">
      Mots de passes
    </a>
Vincent Mazenod's avatar
Vincent Mazenod committed
  </li -->
Vincent Mazenod's avatar
Vincent Mazenod committed
  <li>
    <a href="slides/1337/http.html"
      class="customizable">
      HTTP
    </a>
  </li>
  <li>
    <a href="slides/privacy/tls.html#/0/52"
      class="customizable">
      HTTPS
    </a>
    <ul>
      <li>
        <a href="slides/1337/heartbleed.html"
          class="customizable">
          Heartbleed
Vincent Mazenod's avatar
Vincent Mazenod committed
        </a>
      </li>
    </ul>
  </li>
  <li>
    <a href="slides/1337/browser.html"
      class="customizable">
      Browser
Vincent Mazenod's avatar
Vincent Mazenod committed
    </a>
  </li>
  <li>
    <a href="slides/1337/js.html"
      class="customizable">
      Javascript
Vincent Mazenod's avatar
Vincent Mazenod committed
    </a>
  </li>
Vincent Mazenod's avatar
Vincent Mazenod committed
  <!-- li>
Vincent Mazenod's avatar
Vincent Mazenod committed
    <a href="slides/privacy/tracking.html"
      class="customizable">
      Tracking
    </a>
Vincent Mazenod's avatar
Vincent Mazenod committed
  </li -->
Vincent Mazenod's avatar
Vincent Mazenod committed
</ul>
mazenovi's avatar
mazenovi committed

### Vulnérabilités communes
mazenovi's avatar
mazenovi committed

Vincent Mazenod's avatar
Vincent Mazenod committed
<ul>
  <li>
    <a href="slides/1337/authentication.html"
      class="customizable">
        Authentification
    </a>
    <ul>
      <li>
        <a href="slides/1337/bruteforce.html"
          class="customizable">
          Brute force
Vincent Mazenod's avatar
Vincent Mazenod committed
        </a>
      </li>
      <li>
        <a href="slides/1337/session.html"
          class="customizable">
          Session
Vincent Mazenod's avatar
Vincent Mazenod committed
        </a>
      </li>
    </ul>
  </li>
  <li>
    <a href="slides/1337/cmdi.html"
      class="customizable">
      Command injection
    </a>
    <ul>
      <li>
        <a href="slides/1337/shellshock.html"
          class="customizable">
          Shellshock
Vincent Mazenod's avatar
Vincent Mazenod committed
        </a>
      </li>
    </ul>
  </li>
  <li>
    <a href="slides/1337/fi.html"
      class="customizable">
Vincent Mazenod's avatar
Vincent Mazenod committed
        File inclusion
Vincent Mazenod's avatar
Vincent Mazenod committed
    </a>
  </li>
  <li>
    <a href="slides/1337/upload.html"
      class="customizable">
      Upload
    </a>
  </li>
  <li>
    <a href="slides/1337/xss.html"
      class="customizable">
      XSS
    </a>
    <ul>
      <li>
Vincent Mazenod's avatar
Vincent Mazenod committed
        <a href="slides/1337/csp.html"
Vincent Mazenod's avatar
Vincent Mazenod committed
          class="customizable">
Vincent Mazenod's avatar
Vincent Mazenod committed
          CSP
Vincent Mazenod's avatar
Vincent Mazenod committed
        </a>  
      </li>
      <li>
Vincent Mazenod's avatar
Vincent Mazenod committed
        <a href="slides/1337/sop.html"
Vincent Mazenod's avatar
Vincent Mazenod committed
          class="customizable">
Vincent Mazenod's avatar
Vincent Mazenod committed
          SOP/CORS
Vincent Mazenod's avatar
Vincent Mazenod committed
        </a>  
      </li>
    </ul>
  </li>
  <li>
    <a href="slides/1337/csrf.html"
      class="customizable">
      CSRF
    </a>
Vincent Mazenod's avatar
Vincent Mazenod committed
    <!-- ul>
Vincent Mazenod's avatar
Vincent Mazenod committed
      <li>
        <a href="slides/1337/captcha.html"
          class="customizable">
          Recaptcha <i class="fas fa-hammer"></i>
        </a>
      </li>
Vincent Mazenod's avatar
Vincent Mazenod committed
    </ul -->
Vincent Mazenod's avatar
Vincent Mazenod committed
  </li>
  <li>
    <a href="slides/1337/sqli.html"
      class="customizable">
      SQLi
    </a>
    <ul>
      <li>
        <a href="slides/1337/drupalgeddon.html"
          class="customizable">
          Drupalgeddon
Vincent Mazenod's avatar
Vincent Mazenod committed
        </a>
      </li>
    </ul>
  </li>
</ul>
Vincent Mazenod's avatar
Vincent Mazenod committed
<!--
### Pentesting
Vincent Mazenod's avatar
Vincent Mazenod committed
* [Collecter](slides/1337/gathering.html)
* [Détecter](slides/1337/detecting.html)
mazenovi's avatar
mazenovi committed

### Se protéger
Vincent Mazenod's avatar
Vincent Mazenod committed

Vincent Mazenod's avatar
Vincent Mazenod committed
* [Top10](slides/1337/top10.html)
* [anticiper](slides/1337/anticiper.html)
Vincent Mazenod's avatar
Vincent Mazenod committed
-->
Vincent Mazenod's avatar
Vincent Mazenod committed

Vincent Mazenod's avatar
Vincent Mazenod committed
<hr />
mazenovi's avatar
mazenovi committed

Vincent Mazenod's avatar
Vincent Mazenod committed
## 📂 présentation des VMs

* **Kali** est notre VM offensive, son OS est [Kali 2](https://www.kali.org) et possède de nombreux outils pour la sécurité informatique.
    * C'est à partir de cette VM que vous suivrez le cours et lancerez toutes les attaques
      * nom d'utilisateur: kali
      * mot de passe: kali

* **DVWA** est la VM qui héberge l'application vulnérable [DVWA (Damn Vulnerable Web Application)](https://github.com/digininja/DVWA).
    * C'est sur cette VM que nous allons tester toutes nos attaques
Vincent Mazenod's avatar
Vincent Mazenod committed
    * nom d'utilisateur: kali
    * mot de passe: kali
Vincent Mazenod's avatar
Vincent Mazenod committed
    * nom d'utilisateur DVWA: admin
    * mot de passe DVWA: password
Vincent Mazenod's avatar
Vincent Mazenod committed

* **debian** héberge la vulnérabilité drupalgeddon présentée en fin de cycle de cours
Vincent Mazenod's avatar
Vincent Mazenod committed
    * nom d'utilisateur: kali
    * mot de passe: kali
Vincent Mazenod's avatar
Vincent Mazenod committed

* **proxy** héberge la vulnérabilité heratbleed présenté en début de cours
Vincent Mazenod's avatar
Vincent Mazenod committed
    * nom d'utilisateur: kali
    * mot de passe: kali
Vincent Mazenod's avatar
Vincent Mazenod committed

* **debian11** est une fresh install de debian 11, qui vous permettra de suivre le déploiement de DVWA en cas de [VM perso](https://doc.isima.fr/pedagogie/vm/) indisponible
Vincent Mazenod's avatar
Vincent Mazenod committed
    * nom d'utilisateur: kali
    * mot de passe: kali
Vincent Mazenod's avatar
Vincent Mazenod committed

Vincent Mazenod's avatar
Vincent Mazenod committed
* N.B. [https://perso.limos.fr/mazenod/slides/1337/exploits](https://perso.limos.fr/mazenod/slides/1337/exploits) contient des scripts malicieux que vous utiliserez également pour certaines attaques

Vincent Mazenod's avatar
Vincent Mazenod committed
Vous trouverez ci après comment redéployer tout cela sur n'importe quelle machine

<hr />

Vincent Mazenod's avatar
Vincent Mazenod committed
## 💻 Recréer l'environnement de cours dans VirtualBox
mazenovi's avatar
mazenovi committed

Vincent Mazenod's avatar
Vincent Mazenod committed
* testé avec [VirtualBox 7.0](https://www.virtualbox.org/wiki/Downloads) sous [Ubuntu jammy](http://releases.ubuntu.com/jammy/)
mazenovi's avatar
mazenovi committed

### Créer un réseau NAT

mazenovi's avatar
mazenovi committed
```bash
mazenovi's avatar
mazenovi committed
vboxmanage  natnetwork add --netname natwebsec --network "172.16.76.0/24" --enable --dhcp off
mazenovi's avatar
mazenovi committed
```

mazenovi's avatar
mazenovi committed
### Télécharger les images OVA
mazenovi's avatar
mazenovi committed

voir [https://drive.mesocentre.uca.fr/d/69e5535b0b88425396d7/](https://drive.mesocentre.uca.fr/d/69e5535b0b88425396d7/)

Vincent Mazenod's avatar
Vincent Mazenod committed
* [kali.ova](https://drive.mesocentre.uca.fr/d/69e5535b0b88425396d7/files/?p=/kali.ova&dl=1)
* [dvwa.ova](https://drive.mesocentre.uca.fr/d/69e5535b0b88425396d7/files/?p=/dvwa.ova&dl=1)
* [debian.ova](https://drive.mesocentre.uca.fr/d/69e5535b0b88425396d7/files/?p=/debian.ova&dl=1)
* [proxy.ova](https://drive.mesocentre.uca.fr/d/69e5535b0b88425396d7/files/?p=/proxy.ova&dl=1)
Vincent Mazenod's avatar
Vincent Mazenod committed
* [debian11](https://drive.mesocentre.uca.fr/d/69e5535b0b88425396d7/files/?p=/debian11.ova&dl=1)
Vincent Mazenod's avatar
Vincent Mazenod committed

mazenovi's avatar
mazenovi committed
<div class="panel panel-warning">
  <div class="panel-heading">
    <h3 class="panel-title">📢 FYI</h3>
mazenovi's avatar
mazenovi committed
  </div>
  <div class="panel-body">
    il y a environ 7 Go d'images, n'hésitez pas à vous les faire passer via des clés USB
  </div>
</div>

### Importer les images OVA

mazenovi's avatar
mazenovi committed
```bash
Vincent Mazenod's avatar
Vincent Mazenod committed
vboxmanage import kali.ova
vboxmanage import dvwa.ova
mazenovi's avatar
mazenovi committed
vboxmanage import debian.ova
vboxmanage import proxy.ova
Vincent Mazenod's avatar
Vincent Mazenod committed
vboxmanage import debian11.ova
mazenovi's avatar
mazenovi committed
```

mazenovi's avatar
mazenovi committed
### Configurer le réseau pour chaque vm
```bash
Vincent Mazenod's avatar
Vincent Mazenod committed
vboxmanage modifyvm kali --nic1 natnetwork --nat-network1 natwebsec
vboxmanage modifyvm dvwa --nic1 natnetwork --nat-network1 natwebsec
vboxmanage modifyvm debian --nic1 natnetwork --nat-network1 natwebsec
vboxmanage modifyvm proxy --nic1 natnetwork --nat-network1 natwebsec
Vincent Mazenod's avatar
Vincent Mazenod committed
vboxmanage modifyvm debian11 --nic1 natnetwork --nat-network1 natwebsec
mazenovi's avatar
mazenovi committed
![réseau vm](images/etudiants/vm-network.png)

Vincent Mazenod's avatar
Vincent Mazenod committed
### (fix) En cas de réseau injoignable sur proxy
mazenovi's avatar
mazenovi committed

si

mazenovi's avatar
mazenovi committed
```bash
mazenovi's avatar
mazenovi committed
ping 172.16.76.145 # ping sur kali
mazenovi's avatar
mazenovi committed
```

renvoie

mazenovi's avatar
mazenovi committed
```bash
mazenovi's avatar
mazenovi committed
connect: Network is unreachable
```

vérifier le numéro de votre interface réseau

mazenovi's avatar
mazenovi committed
```bash
student@proxy:~$ ifconfig -a

mazenovi's avatar
mazenovi committed
eth2      Link encap:Ethernet  HWaddr 08:00:27:ae:b5:20
mazenovi's avatar
mazenovi committed
          inet adr:172.16.76.143  Bcast:172.16.76.255  Masque:255.255.255.0
mazenovi's avatar
mazenovi committed
          adr inet6: fe80::a00:27ff:feae:b520/64 Scope:Lien
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          Packets reçus:24 erreurs:0 :0 overruns:0 frame:0
          TX packets:32 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:1000
          Octets reçus:4789 (4.7 KB) Octets transmis:4679 (4.6 KB)

mazenovi's avatar
mazenovi committed
lo        Link encap:Boucle locale
mazenovi's avatar
mazenovi committed
          inet adr:127.0.0.1  Masque:255.0.0.0
          adr inet6: ::1/128 Scope:Hôte
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          Packets reçus:54 erreurs:0 :0 overruns:0 frame:0
          TX packets:54 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:0
          Octets reçus:4076 (4.0 KB) Octets transmis:4076 (4.0 KB)
mazenovi's avatar
mazenovi committed
```

mazenovi's avatar
mazenovi committed
par exemple ce numéro peut être eth2 (comme ci dessus) au lieu de eth0
mazenovi's avatar
mazenovi committed

il faut alors modifier le fichier /etc/network/interfaces en fonction

mazenovi's avatar
mazenovi committed
```bash
mazenovi's avatar
mazenovi committed
student@proxy:~$ sudo vi /etc/network/interfaces

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
mazenovi's avatar
mazenovi committed

mazenovi's avatar
mazenovi committed
# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
mazenovi's avatar
mazenovi committed
auto eth2
iface eth2 inet static
        address 172.16.76.143
mazenovi's avatar
mazenovi committed
        netmask 255.255.255.0
mazenovi's avatar
mazenovi committed
        gateway 172.16.76.1
mazenovi's avatar
mazenovi committed
```

puis activer l'interface réseau

mazenovi's avatar
mazenovi committed
```bash
mazenovi's avatar
mazenovi committed
student@proxy:~$ sudo ifup eth2
mazenovi's avatar
mazenovi committed
```

réessayer

mazenovi's avatar
mazenovi committed
```bash
ping 172.16.76.145 # ping sur kali
mazenovi's avatar
mazenovi committed
```

mazenovi's avatar
mazenovi committed
Ce bug est dû à la numérotation fantaisiste d'Ubuntu des interfaces réseau ...


### Liste des vms / noms de domaine (/etc/hosts)
mazenovi's avatar
mazenovi committed

```
mazenovi's avatar
mazenovi committed
# SecLab
Vincent Mazenod's avatar
Vincent Mazenod committed

## proxy
mazenovi's avatar
mazenovi committed
172.16.76.143 proxy secured heart.bleed fo.ol #proxied version of dum.my
mazenovi's avatar
mazenovi committed

Vincent Mazenod's avatar
Vincent Mazenod committed
# debian
172.16.76.144 debian good.one go.od targ.et mutillid.ae d.oc dum.my spip sp.ip
172.16.76.144 drup.al hackable-drupal.com drupal wordpre.ss bl.og wp wordpress
mazenovi's avatar
mazenovi committed

Vincent Mazenod's avatar
Vincent Mazenod committed
# kali
172.16.76.145 kali bad.guy hack.er 1337.net

# dvwa
172.16.76.146 dvwa dvwa.com dv.wa
mazenovi's avatar
mazenovi committed

Vincent Mazenod's avatar
Vincent Mazenod committed
# debian11
Vincent Mazenod's avatar
Vincent Mazenod committed
172.16.76.147 debian11

Vincent Mazenod's avatar
Vincent Mazenod committed
# host
mazenovi's avatar
mazenovi committed
172.16.76.1   us.er
mazenovi's avatar
mazenovi committed
```
mazenovi's avatar
mazenovi committed

Vincent Mazenod's avatar
Vincent Mazenod committed
## 🎓 Evaluation
mazenovi's avatar
mazenovi committed

Vincent Mazenod's avatar
Vincent Mazenod committed
### 📝 Examen écrit en fin de session (10 points)
mazenovi's avatar
mazenovi committed

Vincent Mazenod's avatar
Vincent Mazenod committed
* Durée: 1h00
* Support: interdit
Vincent Mazenod's avatar
Vincent Mazenod committed
### 📢 Présentation de groupe au début de chaque cours (8 points)

* Chaque présentation durera 15 minutes et devra présenter l'une des catgorie de vulnérabilité du [OWASP Top 10:2021](https://owasp.org/Top10/fr/) c'est à dire
      * présentation des risques
      * proposition et démonstration d'un scénrio d'attaque
        * DVWA est interdit car le cours le traite déjà
      * proposition de mesure à prendre
Vincent Mazenod's avatar
Vincent Mazenod committed

  * **Après** la présentation vous m'enverrez par mail
    * le support de présentation (ppt, url, ...)
    * l'url de l'exploit et / ou le code nécessaire à l'exploitation (zip / ou repo git)
Vincent Mazenod's avatar
Vincent Mazenod committed

Vincent Mazenod's avatar
Vincent Mazenod committed
#### Calendrier FISE 

* [mardi 19/09/2023] [A01:2021-Broken Access Control](https://owasp.org/Top10/A01_2021-Broken_Access_Control/)
* [mardi 26/09/2023] [A02:2021-Défaillances cryptographiques](https://owasp.org/Top10/fr/A02_2021-Cryptographic_Failures/)
* [mardi 03/10/2023] [A03:2021-Injection](https://owasp.org/Top10/fr/A03_2021-Injection/)
* [mardi 10/10/2023] [A04:2021-Conception non sécurisée](https://owasp.org/Top10/fr/A04_2021-Insecure_Design/)
* [mardi 17/10/2023] [A05:2021-Mauvaise configuration de sécurité](https://owasp.org/Top10/fr/A05_2021-Security_Misconfiguration/)
* [mardi 24/10/2023] [A06:2021-Composants vulnérables et obsolètes](https://owasp.org/Top10/fr/A06_2021-Vulnerable_and_Outdated_Components/)
* [mardi 07/11/2023] [A07:2021-Identification et authentification de mauvaise qualité](https://owasp.org/Top10/fr/A07_2021-Identification_and_Authentication_Failures/)
* [mardi 14/11/2023] [A08:2021-Manque d'intégrité des données et du logiciel](https://owasp.org/Top10/fr/A07_2021-Identification_and_Authentication_Failures/)
* [mardi 21/11/2023] [A09:2021-Carence des systèmes de contrôle et de journalisation](https://owasp.org/Top10/fr/A09_2021-Security_Logging_and_Monitoring_Failures/)
* si un groupe souhaite travailler sur [A10:2021-Falsification de requête côté serveur](https://owasp.org/Top10/fr/A10_2021-Server-Side_Request_Forgery_%28SSRF%29/) il est possible d'échanger avec une autre vulnérabilité
* **Vous vous organiserez avec le fichier Excel [exposés FISE 2023-2024](https://ucafr.sharepoint.com/:x:/s/websec/EU1AedCh_zVJp8vaAocOOIcBYyEPI7YRDFkwq9cq13tuvw?e=Qq7e6x)**

#### Calendrier FISA

* [mardi 19/09/2022] [A01:2021-Broken Access Control](https://owasp.org/Top10/A01_2021-Broken_Access_Control/)
* [mardi 26/09/2023] [A02:2021-Défaillances cryptographiques](https://owasp.org/Top10/fr/A02_2021-Cryptographic_Failures/)
* [mardi 07/11/2023] [A03:2021-Injection ](https://owasp.org/Top10/fr/A03_2021-Injection/)
* [mardi 14/11/2023] [A04:2021-Conception non sécurisée](https://owasp.org/Top10/fr/A04_2021-Insecure_Design/)
* [mardi 21/11/2023] [A05:2021-Mauvaise configuration de sécurité](https://owasp.org/Top10/fr/A05_2021-Security_Misconfiguration/)
* [mardi 28/11/2023] [A06:2021-Composants vulnérables et obsolètes](https://owasp.org/Top10/fr/A06_2021-Vulnerable_and_Outdated_Components/)
* [mardi 05/12/2023] [A07:2021-Identification et authentification de mauvaise qualité](https://owasp.org/Top10/fr/A07_2021-Identification_and_Authentication_Failures/)
* [lundi 16/01/2024] [A08:2021-Manque d'intégrité des données et du logiciel](https://owasp.org/Top10/fr/A07_2021-Identification_and_Authentication_Failures/)
* [lundi 23/01/2024] [A09:2021-Carence des systèmes de contrôle et de journalisation](https://owasp.org/Top10/fr/A09_2021-Security_Logging_and_Monitoring_Failures/)
* si un groupe souhaite travailler sur [A10:2021-Falsification de requête côté serveur](https://owasp.org/Top10/fr/A10_2021-Server-Side_Request_Forgery_%28SSRF%29/) il est possible d'échanger avec une autre vulnérabilité
* **Vous vous organiserez avec le fichier Excel [exposés FISA 2023-2024](https://ucafr.sharepoint.com/:x:/s/websec/EbKNHMhwplZHhA_GW0N80oQBKj6guKeRuPQsd0eJWJLojA?e=gVKl4y)**
  
### 🔨 Note technique (2 points)
* l'url `http://vm-etu-<username>.local.isima.fr` devra renvoyer un code HTTP 200
* l'url `http://vm-etu-<username>.local.isima.fr/websec` devra renvoyer un code HTTP 401
* l'url `http://kali:kali@vm-etu-<username>.local.isima.fr/websec` devra renvoyer un code HTTP 200
Vincent Mazenod's avatar
Vincent Mazenod committed

### 🔐 bonus piraterie (+3 points)
Vincent Mazenod's avatar
Vincent Mazenod committed

Une faille est cachée sur le Système d'information de l'ISIMA. Le premier qui me l'envoie par mail à [vincent.mazenod@isima.fr](mailto:vincent.mazenod@isima.fr) verra sa note de présentation ET sa note d'examen finale augmentée de **3 points**.

Vincent Mazenod's avatar
Vincent Mazenod committed
Vous avez droit à autant de proposition que vous le souhaitez, car il y a fort à parier qu'il y a plus d'une faille dans le SI de l'ISIMA. Chaque faille valide pourra vous rapporter des points en plus également.
Vincent Mazenod's avatar
Vincent Mazenod committed

<div class="panel panel-danger">
  <div class="panel-heading">
    <h3 class="panel-title">Soignez votre éthique</h3>
  </div>
  <div class="panel-body">
    Si le défi est de trouver des vulnérabilités, l'idée n'est pas de vous encourager à les exploiter ... N'oubliez pas que vous êtes soumis à <a href="https://doc.isima.fr/support/chartes">différentes obligations légales</a>
  </div>
</div>

<div class="panel panel-success">
  <div class="panel-heading">
    <h3 class="panel-title">Retrouvez un indice supplémentaire chaque semaine</h3>
  </div>
  <div class="panel-body">
    <ol>
      <li>La faille est accessible depuis l'extérieur, pas besoin du <a href="https://doc.isima.fr/acces-distant/vpn">VPN</a></li>
    </ol>
  </div>
</div>
Vincent Mazenod's avatar
Vincent Mazenod committed

Vincent Mazenod's avatar
Vincent Mazenod committed
<!--
Vincent Mazenod's avatar
Vincent Mazenod committed
### 🔥 audit de sécurité sur 2 heures

#### thenetwork

le réseau thenetwork regroupe des personnes ayant suivi des formations d'excellence, dispensées par le réseau thenetwork lui-même. thenetwork a ainsi bâti au fil des années un réseau d'experts efficaces et loyaux les uns envers les autres.

thenetwork est un réseau extrêment fermé, qui se préoccupe beaucoup de la confientialité de ses données et de celles de ses utilisateurs. Rien est accessible sans un compte utilisateur hormis la page d'accueil.

thenetwork possède une partie publique permettant à chaque membre

* de laisser ses contacts
* d'afficher les formations thenetwork qu'il a suivi
* de rechercher parmis les autres membres du réseau
* de se mettre sur liste rouge et de disparaître complètement du moteur de recherche publique
* de mettre un ou plusieurs contacts sur liste rouge pour les réserver à la seule équipe du réseau thenetwork

thenetwork possède une interface d'adminstration permettant

* d'accéder à toutes les fiches des membres
* de saisir les résultats aux formations

Vous avez été missionné pour effectuer un rapport sur la sécurité de l'interface web du réseau thenetwork. Ce document est à destination  de la direction de thenetwork, et de l'équipe technique qui maintient l'appli.

L'équipe technique a mis à votre disposition une machine virtuelle

- disponible sur les Vms des postes de TP
- installable via la rubrique [Recréer l'environnement de cours dans VirtualBox](/zz2-f5-securite-logicielle-securite-des-applications-web.html#recreer-lenvironnement-de-cours-dans-virtualbox)

Vous êtes en boîte blanche, les accés suivants sont donnés

- admin:pipo -> super utilisateur
- cwally:pipo -> simple utilisateur
- mwally:pipo -> simple utilisateur

#### livrables

Vous devez rendre un rapport exposant 3 vulnérabilités de l'appli thenetwork

Pour chacune de ces vulérabilités vous devrez
- la nommer
- mettre en évidence la portion de code vulnérable
- expliquer comment exploiter cette vulnérabilité
- expliquer le scénario le pire qui puisse arriver
- formuler quelques recommandations
    - d'urgences pour patcher asap
    - à plus long terme permettant d'améliorer la sécurité sur ce point

N.B. un BUG ou une incohérence dans les données n'est pas nécessairement une faille de sécurité (seules les failles doivent figurer dans le rapport)

# Barême

Chaque vulnérabilité est notée sur 6. Il reste donc 2 points qui seront attribués en cas
- d'exploitation particulèrement poussée
- complément de recommandations concernant le serveur et sa configuration
- découverte d'une quatrième faille (j'en ai vu au moins une autre ...)

Amusez vous bien :-*
Vincent Mazenod's avatar
Vincent Mazenod committed
-->
Vincent Mazenod's avatar
Vincent Mazenod committed
<!-- 
Vincent Mazenod's avatar
Vincent Mazenod committed
### Projet
Vincent Mazenod's avatar
Vincent Mazenod committed
Vous implémenterez un exemple de protection d'API REST via [JWT](https://jwt.io/) dans l'un des langages au choix

* php
* nodejs
* python

Vous implémenterez 2 services et un client

* un service de génération et de validation de JWT
* un service accessible via REST avec un JWT valide
Vincent Mazenod's avatar
Vincent Mazenod committed
* un client capable d'obtenir un JWT et de l'utiliser pour accéder légitimement à l'API REST

Dans un premier temps vous implémenterez des JWT avec mot de passe (chiffrement symétrique)
Dans un second temps vous implémenterez des JWT avec des paires de clés publiques / privées (chiffrement asymétrique)

Vincent Mazenod's avatar
Vincent Mazenod committed
**N.B.** "l'api rest" peut se résumer à une url /protected qui renvoie un json en méthode GET. L'implémentation d'une API REST ne fait pas parti du sujet!

Dans votre rapport vous analyserez

* les avantages et les inconvénients, notamment au niveau de la sécurité, de chacune des deux approches
* les conséquences des choix d'implémentation sur
    * la validation d'un JWT
    * l'enrolement des clients
    * la gestion d'une compromission côté serveur

#### Rendu

Un repo Gitlab sur [https://gitlab.isima.fr](https://gitlab.isima.fr), par binôme, ayant la forme suivante
Vincent Mazenod's avatar
Vincent Mazenod committed
    * ...
    * README.md
Vincent Mazenod's avatar
Vincent Mazenod committed
    * ...
    * README.md
* README.md

* symetric/README.md et asymetric/README.md contiennent respectivement la marche à suivre pour pouvoir déployer l'implémentation avec des JWT avec mot de passe et avec des clés publiques / privées

* le fichier README.md contient votre rapport

Vincent Mazenod's avatar
Vincent Mazenod committed
* vous mettrez l'utilisateur gitlab Vincent Mazenod comme membre en tant que maintainer
* vous m'enverrez l'url du repo dans un message mail chiffré avec GPG
* le tout avant le 22 mars 23h59
Vincent Mazenod's avatar
Vincent Mazenod committed
#### Critères de notation
Vincent Mazenod's avatar
Vincent Mazenod committed
* Qualité de l'implémentation, notamment sur l'aspect sécurité (si je passe au travers des sécurités mises en place c'est 0)
* Qualité de la documentation de déploiement (si je n'arrive pas à installer le projet en local sur ma machine c'est 0)
Vincent Mazenod's avatar
Vincent Mazenod committed
* Qualité de l'analyse (le rapport n'est pas forcément long il s'agit de présenter tous les scénarios d'utilisation et d'attaque en expliquant les avantages et inconvénients de chacune des deux implémentations)
mazenovi's avatar
mazenovi committed
## Mini projet en binôme
mazenovi's avatar
mazenovi committed

* [Enoncé](https://drive.mesocentre.uca.fr/f/d9e76a8e45934a069890/?dl=1)

Vincent Mazenod's avatar
Vincent Mazenod committed
* [Enoncé](https://drive.mesocentre.uca.fr/f/54bdd1a80c184bbcb63e/?dl=1)
mazenovi's avatar
mazenovi committed

* Rendu le 25/03/2019 à 23h59 dernier délais
mazenovi's avatar
mazenovi committed

    * à [vincent.mazenod@uca.fr](mailto:vincent.mazenod@uca.fr)
mazenovi's avatar
mazenovi committed

      * ```[TP websec]``` dans le sujet du mail ... sinon je vous perds ;)
mazenovi's avatar
mazenovi committed

mazenovi's avatar
mazenovi committed
    * Tous les fichiers nommés en NOMETUDIANT1_NOMETUDIANT2_nomfichier.ext

Vincent Mazenod's avatar
Vincent Mazenod committed
 -->
Vincent Mazenod's avatar
Vincent Mazenod committed

mazenovi's avatar
mazenovi committed
## Evaluation du cours

Vincent Mazenod's avatar
Vincent Mazenod committed
Vous avez aimé ou vous avez détesté ce cours ... [donnez moi votre avis et aidez moi à l'améliorer (en tout anonymat)](https://docs.google.com/forms/d/1-eqDphSzROWVQoJ5adKBG31us7-s9ZkwnKktK7wSLhs/prefill)
mazenovi's avatar
mazenovi committed
## See also

* [faire son propre seclab](https://blog.mazenod.fr/faire-son-propre-seclab.html)