From 43293028b34fc049dac67e54a9ccff7d25a8dad5 Mon Sep 17 00:00:00 2001 From: Vincent Mazenod <vmazenod@gmail.com> Date: Sun, 16 Feb 2020 21:51:42 +0100 Subject: [PATCH] sunday evening dix --- content/slides/1337/md/csrf.md | 6 ++--- content/slides/1337/md/sqli.md | 40 +++++++++++++++++----------------- 2 files changed, 22 insertions(+), 24 deletions(-) diff --git a/content/slides/1337/md/csrf.md b/content/slides/1337/md/csrf.md index ff4cb91..b1ea2aa 100644 --- a/content/slides/1337/md/csrf.md +++ b/content/slides/1337/md/csrf.md @@ -136,11 +136,9 @@ Note: * [CSRF stored - security high](http://dv.wa/vulnerabilities/csrf/) -## <i class="fa fa-medkit"></i> Synchronizer Token Pattern +### <i class="fa fa-medkit"></i> Synchronizer Token Pattern -<div style="text-align:center"> -  -</div> + ## <i class="fa fa-medkit"></i> Synchronizer Token Pattern diff --git a/content/slides/1337/md/sqli.md b/content/slides/1337/md/sqli.md index 8deec2b..c62e5e2 100644 --- a/content/slides/1337/md/sqli.md +++ b/content/slides/1337/md/sqli.md @@ -7,8 +7,8 @@ ### <i class="fa fa-cogs"></i> Principe * Une application envoie des données - * non *assinies* à un interpréteur -* L'attaquant envoie des séquences de texte permettant d'exploiter l'interpréteur visé + * non **sanitized** à un interpréteur +* L'attaquant envoie des séquences de texte permettant d'exploiter l'interpréteur visé (**payload**) * toutes sources de données peut être utilisées * paramètres HTTP, PATH_INFO, cookies, en-têtes HTTP, fichiers uploadés * au niveau de la requête [et de la réponse <i class="fa fa-reddit"></i>](http://i.imgur.com/8khrzf9.png) @@ -42,7 +42,7 @@ Note: #### [<i class="fa fa-check-square"></i> Boolean (Blind)](https://www.owasp.org/index.php/Blind_SQL_Injection) * Pas de message d'erreur -* Un comportement différent selon que la requête est valide ou non +* Un comportement différent selon que la **payload** est exécutée ou non * nécessite en général d'itérer * avec un LIKE par exemple pour déduire lettre par lettre @@ -52,7 +52,7 @@ Note: #### [<i class="fa fa-eye-slash"></i> (true) Blind](https://www.owasp.org/index.php/Blind_SQL_Injection) * Pas de message d'erreur -* Pas de moyen de savoir si la requête est valide ou non +* Pas de moyen de savoir si la **payload** a été éxécutée ou non * cas d'une redirection systématique * nécessite en général d'itérer * avec un LIKE par exemple pour déduire lettre par lettre @@ -349,9 +349,9 @@ Surname: Me * Si aucun output n'est disponible * on ajoute du calcul artificiellement - * la requête est valide + * la **payload** est exécutée * le temps de réponse = temps de traitement + temps de calcul artificiel - * la requête est invalide + * la **payload** n'est pas exécutée * le temps de réponse = temps de traitement problématique similaire à une booléenne @@ -361,6 +361,20 @@ Note: - in fine même problème une fois scripter +## <i class="fa fa-medkit"></i> Se préserver + +* [Ne plus utiliser les fonctions mysql_ leur préférer mysqli_](http://stackoverflow.com/questions/548986/mysql-vs-mysqli-in-php) +* Utiliser des requêtes préparées + * PDO, ORM : Doctrine2, Propel +* Être le plus silencieux possibles quant aux requêtes invalides + * [@](http://php.net/manual/fr/language.operators.errorcontrol.php) mais pas [or die()](http://php.net/manual/fr/function.die.php) + * [error_reporting](http://php.net/manual/fr/function.error-reporting.php), pas [mysql_error()](http://php.net/mysql_error) ni [mysqli_error()](http://php.net/manual/fr/mysqli.error.php) +* repérer les requêtes suspectes dans les logs + +Note: +- TODO regarder si les messages sont désactiables à partir de MySQL + + ## <i class="fa fa-medkit"></i> Se préserver * Filtrage par listes blanches @@ -382,17 +396,3 @@ Note: * attention aux permissions sur la base de données * information_schema ... * Changer les préfixes de table des CMS quand c'est possible - - -## <i class="fa fa-medkit"></i> Se préserver - -* [Ne plus utiliser les fonctions mysql_ leur préférer mysqli_](http://stackoverflow.com/questions/548986/mysql-vs-mysqli-in-php) -* Utiliser des requêtes préparées - * PDO, ORM : Doctrine2, Propel -* Être le plus silencieux possibles quant aux requêtes invalides - * [@](http://php.net/manual/fr/language.operators.errorcontrol.php) mais pas [or die()](http://php.net/manual/fr/function.die.php) - * [error_reporting](http://php.net/manual/fr/function.error-reporting.php), pas [mysql_error()](http://php.net/mysql_error) ni [mysqli_error()](http://php.net/manual/fr/mysqli.error.php) -* repérer les requêtes suspectes dans les logs - -Note: -- TODO regarder si les messages sont désactiables à partir de MySQL -- GitLab