Skip to content
Snippets Groups Projects
Commit 5a510702 authored by Vincent Mazenod's avatar Vincent Mazenod
Browse files

update websec

parent 90479b48
No related branches found
No related tags found
No related merge requests found
Pipeline #11431 passed
...@@ -7,12 +7,12 @@ BLUE := \033[34m ...@@ -7,12 +7,12 @@ BLUE := \033[34m
MAGENTA := \033[35m MAGENTA := \033[35m
SHELL := /bin/bash SHELL := /bin/bash
IMAGES := $(shell docker-compose config --services) IMAGES := $(shell docker compose config --services)
TAG := $(shell git rev-parse --short HEAD) TAG := $(shell git rev-parse --short HEAD)
VOLUMES := content/node_modules output VOLUMES := content/node_modules output
# Executables (local) # Executables (local)
DOCKER_COMP := docker-compose DOCKER_COMP := docker compose
.DEFAULT_GOAL := help .DEFAULT_GOAL := help
# Docker containers # Docker containers
......
...@@ -225,6 +225,36 @@ Tags: cours ...@@ -225,6 +225,36 @@ Tags: cours
<hr /> <hr />
## 📂 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
* Vous pouvez aussi suivre les cours une dvwa déployé sur votre [VM perso](https://doc.isima.fr/pedagogie/vm/)
* **l'installation de DVWA** sur votre [VM perso](https://doc.isima.fr/pedagogie/vm/) fait partie de l'évaluation (c.f. section [Evaluation / Installer DVWA sur sa VM perso (2 points)](#installer-dvwa-sur-sa-vm-perso-2-points))
* nom d'utilisateur: student
* mot de passe: student
* **debian** héberge la vulnérabilité drupalgeddon présentée en fin de cycle de cours
* nom d'utilisateur: student
* mot de passe: student
* **proxy** héberge la vulnérabilité heratbleed présenté en début de cours
* nom d'utilisateur: student
* mot de passe: student
* **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
* nom d'utilisateur: student
* mot de passe: student
Vous trouverez ci après comment redéployer tout cela sur n'importe quelle machine
<hr />
## 💻 Recréer l'environnement de cours dans VirtualBox ## 💻 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/) * testé avec [VirtualBox 7.0](https://www.virtualbox.org/wiki/Downloads) sous [Ubuntu jammy](http://releases.ubuntu.com/jammy/)
...@@ -243,7 +273,7 @@ voir [https://drive.mesocentre.uca.fr/d/69e5535b0b88425396d7/](https://drive.mes ...@@ -243,7 +273,7 @@ voir [https://drive.mesocentre.uca.fr/d/69e5535b0b88425396d7/](https://drive.mes
* [dvwa.ova](https://drive.mesocentre.uca.fr/d/69e5535b0b88425396d7/files/?p=/dvwa.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) * [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) * [proxy.ova](https://drive.mesocentre.uca.fr/d/69e5535b0b88425396d7/files/?p=/proxy.ova&dl=1)
* [thenetwork](https://drive.mesocentre.uca.fr/d/69e5535b0b88425396d7/files/?p=/thenetwork.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 panel-warning">
<div class="panel-heading"> <div class="panel-heading">
...@@ -261,7 +291,7 @@ vboxmanage import kali.ova ...@@ -261,7 +291,7 @@ vboxmanage import kali.ova
vboxmanage import dvwa.ova vboxmanage import dvwa.ova
vboxmanage import debian.ova vboxmanage import debian.ova
vboxmanage import proxy.ova vboxmanage import proxy.ova
vboxmanage import thenetwork.ova vboxmanage import debian11.ova
``` ```
### Configurer le réseau pour chaque vm ### Configurer le réseau pour chaque vm
...@@ -271,12 +301,12 @@ vboxmanage modifyvm kali --nic1 natnetwork --nat-network1 natwebsec ...@@ -271,12 +301,12 @@ vboxmanage modifyvm kali --nic1 natnetwork --nat-network1 natwebsec
vboxmanage modifyvm dvwa --nic1 natnetwork --nat-network1 natwebsec vboxmanage modifyvm dvwa --nic1 natnetwork --nat-network1 natwebsec
vboxmanage modifyvm debian --nic1 natnetwork --nat-network1 natwebsec vboxmanage modifyvm debian --nic1 natnetwork --nat-network1 natwebsec
vboxmanage modifyvm proxy --nic1 natnetwork --nat-network1 natwebsec vboxmanage modifyvm proxy --nic1 natnetwork --nat-network1 natwebsec
vboxmanage modifyvm thenetwork --nic1 natnetwork --nat-network1 natwebsec vboxmanage modifyvm debian11 --nic1 natnetwork --nat-network1 natwebsec
``` ```
![réseau vm](images/etudiants/vm-network.png) ![réseau vm](images/etudiants/vm-network.png)
### (fix) En cas de réseau injoignable sur proxy et thenetwork ### (fix) En cas de réseau injoignable sur proxy
si si
...@@ -356,9 +386,6 @@ Ce bug est dû à la numérotation fantaisiste d'Ubuntu des interfaces réseau . ...@@ -356,9 +386,6 @@ Ce bug est dû à la numérotation fantaisiste d'Ubuntu des interfaces réseau .
``` ```
# SecLab # SecLab
## thenetwork
172.16.76.142 thenetwork
## proxy ## proxy
172.16.76.143 proxy secured heart.bleed fo.ol #proxied version of dum.my 172.16.76.143 proxy secured heart.bleed fo.ol #proxied version of dum.my
...@@ -372,6 +399,9 @@ Ce bug est dû à la numérotation fantaisiste d'Ubuntu des interfaces réseau . ...@@ -372,6 +399,9 @@ Ce bug est dû à la numérotation fantaisiste d'Ubuntu des interfaces réseau .
# dvwa # dvwa
172.16.76.146 dvwa dvwa.com dv.wa 172.16.76.146 dvwa dvwa.com dv.wa
# dvwa
172.16.76.147 debian11
# host # host
172.16.76.1 us.er 172.16.76.1 us.er
``` ```
...@@ -423,7 +453,7 @@ Ce bug est dû à la numérotation fantaisiste d'Ubuntu des interfaces réseau . ...@@ -423,7 +453,7 @@ Ce bug est dû à la numérotation fantaisiste d'Ubuntu des interfaces réseau .
* 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é * 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)** * **Vous vous organiserez avec le fichier Excel [exposés FISA 2023-2024](https://ucafr.sharepoint.com/:x:/s/websec/EbKNHMhwplZHhA_GW0N80oQBKj6guKeRuPQsd0eJWJLojA?e=gVKl4y)**
### 🔨 Installer DVWA sur sa VM perso (8 points) ### 🔨 Installer DVWA sur sa VM perso (2 points)
* [https://github.com/digininja/DVWA#linux-packages](https://github.com/digininja/DVWA#linux-packages) * [https://github.com/digininja/DVWA#linux-packages](https://github.com/digininja/DVWA#linux-packages)
...@@ -453,6 +483,7 @@ Vous avez droit à autant de proposition que vous le souhaitez, car il y a fort ...@@ -453,6 +483,7 @@ Vous avez droit à autant de proposition que vous le souhaitez, car il y a fort
</div> </div>
</div> </div>
<!--
### 🔥 audit de sécurité sur 2 heures ### 🔥 audit de sécurité sur 2 heures
#### thenetwork #### thenetwork
...@@ -510,6 +541,7 @@ Chaque vulnérabilité est notée sur 6. Il reste donc 2 points qui seront attri ...@@ -510,6 +541,7 @@ Chaque vulnérabilité est notée sur 6. Il reste donc 2 points qui seront attri
- découverte d'une quatrième faille (j'en ai vu au moins une autre ...) - découverte d'une quatrième faille (j'en ai vu au moins une autre ...)
Amusez vous bien :-* Amusez vous bien :-*
-->
<!-- <!--
### Projet ### Projet
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
## a.k.a. Content Security Policy ## a.k.a. Content Security Policy
### [<i class="fa fa-medkit"></i> **CSP**: Content Security Policy](https://developer.mozilla.org/en-US/docs/Web/Security/CSP/CSP_policy_directives) ### <i class="fa fa-medkit"></i> **CSP**: Content Security Policy
* En-tête renvoyée côté serveur * En-tête renvoyée côté serveur
* protéger son contenu * protéger son contenu
...@@ -11,8 +11,10 @@ ...@@ -11,8 +11,10 @@
* possibilité de reporting * possibilité de reporting
* quelles tentatives ont été menées * quelles tentatives ont été menées
* https://developer.mozilla.org/en-US/docs/Web/Security/CSP/CSP_policy_directives
### [<i class="fa fa-medkit"></i> **CSP**: Content Security Policy](https://developer.mozilla.org/en-US/docs/Web/Security/CSP/CSP_policy_directives)
### <i class="fa fa-medkit"></i> **CSP**: Content Security Policy
```http ```http
Content-Security-Policy: Content-Security-Policy:
...@@ -25,7 +27,7 @@ Content-Security-Policy: ...@@ -25,7 +27,7 @@ Content-Security-Policy:
* les balises iframes ne doivent pas être interprétées * les balises iframes ne doivent pas être interprétées
### [<i class="fa fa-medkit"></i> **CSP**: Content Security Policy](https://developer.mozilla.org/en-US/docs/Web/Security/CSP/CSP_policy_directives) ### <i class="fa fa-medkit"></i> **CSP**: Content Security Policy
![CSP](images/xss/csp.png "CSP")<!-- .element style="text-align: center" --> ![CSP](images/xss/csp.png "CSP")<!-- .element style="text-align: center" -->
...@@ -45,14 +47,21 @@ Content-Security-Policy: ...@@ -45,14 +47,21 @@ Content-Security-Policy:
``` ```
* écriture d'un fichier js sur l'hôte local via une autre faille [upload](upload.html) par exemple * écriture d'un fichier js sur l'hôte local via une autre faille [upload](upload.html) par exemple
### <i class="fa-solid fa-bomb"></i> CSP / low
* exécution directement sur [https://pastebin.com/raw/SAB3JTJc](https://pastebin.com/raw/SAB3JTJc) * exécution directement sur [https://pastebin.com/raw/SAB3JTJc](https://pastebin.com/raw/SAB3JTJc)
* ne fonctione pas depuis Firefox 72 car l'entête [X-Content-Type-Options](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options) force la désactivation du [MIME sniffing](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types#mime_sniffing) * réponse pastebin
réponse pastebin
```http ```http
.. ...
X-Content-Type-Options: nosniff X-Content-Type-Options: nosniff
... ...
``` ```
* https://chromium.googlesource.com/chromium/src/+/master/services/network/cross_origin_read_blocking_explainer.md
* https://www.komodosec.com/post/mime-sniffing-xss * ne fonctionne pas depuis Firefox 72
* https://dev.to/ms_74/what-is-corb-3m3f * l'entête [X-Content-Type-Options](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options) force la désactivation du [MIME sniffing](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types#mime_sniffing)
\ No newline at end of file
* https://www.komodosec.com/post/mime-sniffing-xss
* https://medium.com/@puneet29/what-is-mime-sniffing-4f402d303dc8
# SOP # SOP / CORS / CORS
## a.k.a Same Origin Policy ## a.k.a Same Origin Policy
## a.k.a Cross Origin Resource Sharing
## a.k.a Cross-Origin Read Blocking
## [<i class="fa fa-medkit"></i> **SOP**: Same Origin Policy](https://developer.mozilla.org/fr/docs/Web/JavaScript/) ### <i class="fa fa-medkit"></i> **SOP** / Same Origin Policy
* concerne *XMLHttpRequest* * https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy
* restreint les interactionsaux ressources de même origine
* protocole + "://" + hôte + ":" + [port]
* restreint les interactionsaux ressources de même origine
* protocole + "://" + hôte + ":" + [port]
* concerne `<script>`, `<link>`, `<img>`, `<video>`, `<audio>`, `<object>`, `<embed>`, `@font-face`, `<iframe>`
## [<i class="fa fa-medkit"></i> **SOP**: Same Origin Policy](https://developer.mozilla.org/fr/docs/Web/JavaScript/)
### <i class="fa fa-medkit"></i> **SOP** / Same Origin Policy
protège l'intégrité de la page protège l'intégrité de la page
...@@ -27,7 +31,7 @@ $(function() { // on Load jQuery style ...@@ -27,7 +31,7 @@ $(function() { // on Load jQuery style
![SOP](images/xss/sop.png "SOP")<!-- .element style="text-align: center" --> ![SOP](images/xss/sop.png "SOP")<!-- .element style="text-align: center" -->
## [<i class="fa fa-medkit"></i> **SOP**: Same Origin Policy](https://developer.mozilla.org/fr/docs/Web/JavaScript/) ### <i class="fa fa-medkit"></i> **SOP** / Same Origin Policy
protège la confidentialité des sessions protège la confidentialité des sessions
...@@ -44,7 +48,7 @@ $(function() { // on Load jQuery style ...@@ -44,7 +48,7 @@ $(function() { // on Load jQuery style
``` ```
## [<i class="fa fa-medkit"></i> **CORS**: Cross Origin Resource Sharing](https://developer.mozilla.org/fr/docs/HTTP/Access_control_CORS) ### <i class="fa fa-medkit"></i> **CORS** / Cross Origin Resource Sharing
* contrôler les accès en mode cross-site * contrôler les accès en mode cross-site
* concerne l'échange entre fournisseurs de services * concerne l'échange entre fournisseurs de services
...@@ -52,7 +56,7 @@ $(function() { // on Load jQuery style ...@@ -52,7 +56,7 @@ $(function() { // on Load jQuery style
* entre sources sûres niveau injection & confidentialité * entre sources sûres niveau injection & confidentialité
## [<i class="fa fa-medkit"></i> **CORS** Cross Origin Resource Sharing](https://developer.mozilla.org/fr/docs/HTTP/Access_control_CORS) ### <i class="fa fa-medkit"></i> **CORS** / Cross Origin Resource Sharing
le client ajoute automatiquement une en-tête HTTP le client ajoute automatiquement une en-tête HTTP
...@@ -73,7 +77,7 @@ Access-Control-Allow-Origin: * ...@@ -73,7 +77,7 @@ Access-Control-Allow-Origin: *
``` ```
## [<i class="fa fa-medkit"></i> **CORS** Cross Origin Resource Sharing](https://developer.mozilla.org/fr/docs/HTTP/Access_control_CORS) ### <i class="fa fa-medkit"></i> **CORS** / Cross Origin Resource Sharing
* autorise tous les verbes HTTP * autorise tous les verbes HTTP
* [JSONP](http://igm.univ-mlv.fr/~dr/XPOSE2009/ajax_sop_jsonp/jsonp_presentation.html) n'autorisait que la méthode GET * [JSONP](http://igm.univ-mlv.fr/~dr/XPOSE2009/ajax_sop_jsonp/jsonp_presentation.html) n'autorisait que la méthode GET
...@@ -85,3 +89,11 @@ Note: ...@@ -85,3 +89,11 @@ Note:
- doit être supporté par le navigateur - doit être supporté par le navigateur
- la valeur * est possible mais risquée - la valeur * est possible mais risquée
- requêtes simples, pré-vérifiées avec le verbe OPTIONS, avec habilitations en forcant l'envoie du cookie - requêtes simples, pré-vérifiées avec le verbe OPTIONS, avec habilitations en forcant l'envoie du cookie
### <i class="fa fa-medkit"></i> **CORB** / Cross-Origin Read Blocking
contrôle la cohérence du type MIME avec la balise appelante
* https://chromium.googlesource.com/chromium/src/+/master/services/network/cross_origin_read_blocking_explainer.md
* https://dev.to/ms_74/what-is-corb-3m3f
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment