Newer
Older
Title: ZZ2 F5 - Securité logicielle - sécurité des applications web
Category: <i class='fa fa-graduation-cap' aria-hidden='true'></i> Étudiants
Tags: cours
[TOC]
<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>
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<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
<ul>
<li>
<a href="slides/1337/lab.html"
class="customizable">
Lab
</a>
</li>
<a href="slides/privacy/sovereignty.html"
class="customizable">
Souveraineté
</a>
</li>
<li>
<a href="slides/privacy/passwords.html"
class="customizable">
Mots de passes
</a>
<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">
</a>
</li>
</ul>
</li>
<li>
<a href="slides/1337/browser.html"
class="customizable">
</a>
</li>
<li>
<a href="slides/1337/js.html"
class="customizable">
<a href="slides/privacy/tracking.html"
class="customizable">
Tracking
</a>
<ul>
<li>
<a href="slides/1337/authentication.html"
class="customizable">
Authentification
</a>
<ul>
<li>
<a href="slides/1337/bruteforce.html"
class="customizable">
</a>
</li>
<li>
<a href="slides/1337/session.html"
class="customizable">
</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">
</a>
</li>
</ul>
</li>
<li>
<a href="slides/1337/fi.html"
class="customizable">
</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>
</a>
</li>
</ul>
</li>
<li>
<a href="slides/1337/csrf.html"
class="customizable">
CSRF
</a>
<li>
<a href="slides/1337/captcha.html"
class="customizable">
Recaptcha <i class="fas fa-hammer"></i>
</a>
</li>
</li>
<li>
<a href="slides/1337/sqli.html"
class="customizable">
SQLi
</a>
<ul>
<li>
<a href="slides/1337/drupalgeddon.html"
class="customizable">
* [Collecter](slides/1337/gathering.html)
* [Détecter](slides/1337/detecting.html)
* [Top10](slides/1337/top10.html)
* [anticiper](slides/1337/anticiper.html)
## 📂 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
* nom d'utilisateur DVWA: admin
* mot de passe DVWA: password
* **debian** héberge la vulnérabilité drupalgeddon présentée en fin de cycle de cours
* **proxy** héberge la vulnérabilité heratbleed présenté en début de cours
* **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
* 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
Vous trouverez ci après comment redéployer tout cela sur n'importe quelle machine
<hr />
## 💻 Recréer l'environnement de cours dans VirtualBox
* testé avec [VirtualBox 7.0](https://www.virtualbox.org/wiki/Downloads) sous [Ubuntu jammy](http://releases.ubuntu.com/jammy/)
vboxmanage natnetwork add --netname natwebsec --network "172.16.76.0/24" --enable --dhcp off
voir [https://drive.mesocentre.uca.fr/d/69e5535b0b88425396d7/](https://drive.mesocentre.uca.fr/d/69e5535b0b88425396d7/)
* [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)
* [debian11](https://drive.mesocentre.uca.fr/d/69e5535b0b88425396d7/files/?p=/debian11.ova&dl=1)
<div class="panel panel-warning">
<div class="panel-heading">
</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
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
vboxmanage modifyvm debian11 --nic1 natnetwork --nat-network1 natwebsec
connect: Network is unreachable
```
vérifier le numéro de votre interface réseau
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)
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)
par exemple ce numéro peut être eth2 (comme ci dessus) au lieu de eth0
il faut alors modifier le fichier /etc/network/interfaces en fonction
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).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
Ce bug est dû à la numérotation fantaisiste d'Ubuntu des interfaces réseau ...
### Liste des vms / noms de domaine (/etc/hosts)
172.16.76.143 proxy secured heart.bleed fo.ol #proxied version of dum.my
# 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
# kali
172.16.76.145 kali bad.guy hack.er 1337.net
# dvwa
172.16.76.146 dvwa dvwa.com dv.wa
### 📢 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
* **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)
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
#### 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)**
* 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
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**.
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.
<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>
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
### 🔥 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 :-*
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
* 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)
**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
* 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
* 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
* 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)
* 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)
* [Enoncé](https://drive.mesocentre.uca.fr/f/d9e76a8e45934a069890/?dl=1)
* [Enoncé](https://drive.mesocentre.uca.fr/f/54bdd1a80c184bbcb63e/?dl=1)
* Rendu le 25/03/2019 à 23h59 dernier délais
* à [vincent.mazenod@uca.fr](mailto:vincent.mazenod@uca.fr)
* ```[TP websec]``` dans le sujet du mail ... sinon je vous perds ;)
* Tous les fichiers nommés en NOMETUDIANT1_NOMETUDIANT2_nomfichier.ext
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)
## See also
* [faire son propre seclab](https://blog.mazenod.fr/faire-son-propre-seclab.html)