Sécuriser votre projet

1,393 views

Published on

Présentation à la nAcademy (Février 2013) : Sécuriser votre projet par Christophe Villeneuve

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,393
On SlideShare
0
From Embeds
0
Number of Embeds
30
Actions
Shares
0
Downloads
25
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Sécuriser votre projet

  1. 1. SECURISER VOTRE PROJET Christophe Villeneuve 28 février 2013
  2. 2. A labordage... ✔ Le fromage, la souris et... ✔ Les techniques ✔ Du PHP ✔ Du Java ✔ Du Web ✔ Du Projet ✔ et... nAcademy – 28 Février 2013
  3. 3. RéflexionLe fromage, La souris, Et... nAcademy – 28 Février 2013
  4. 4. Pourquoi ? Les hackers sont astucieux nAcademy – 28 Février 2013
  5. 5. nAcademy – 28 Février 2013
  6. 6. Notions basics ✔ Rappel des risques (W3C, Spam...) ✔ Front-end sur les entrées (formulaire, url...) ✔ Back-end avec un Framework ✔ La base de données ✔ Tester votre code ✔ Méthodologie nAcademy – 28 Février 2013
  7. 7. Les Vulnérabilités reconnues ✔ Insuffisance des tests de sécurité ✔ Configuration par défaut ✔ Pas de cryptage des données sensibles ✔ Pas de mises à jour du système ✔ La sécurité apparaît lors des catastrophes ✔ Surveillance inefficace ✔ Contrôle insuffisant de laccès par des tiers nAcademy – 28 Février 2013
  8. 8. TOP 10 OWASP (Web) 2007 2010 2013 Version RC1✔ Cross Site Scripting (XSS) ✔ Failles dinjection ✔ Failles dinjection✔ Failles dinjection ✔ Cross-Site Scripting (XSS) ✔ Violation dauthentification et de Session✔ Exécution de Fichier Malicieux ✔ Violation dauthentification et de Session ✔ Cross-Site Scripting (XSS)✔ Référence directe non Sécurisée à un ✔ Référence directe non sécurisée à un ✔ Référence directe non sécurisée à un Objet objet objet ✔ Falsification de requête (CSRF) ✔ Mauvaise configuration de sécurité✔ Falsification de requête (CSRF)✔ Fuite dinformation et Traitement derreur ✔ N Mauvaise configuration de sécurité ✔ Z Données sensibles accessible Incorrect ✔ Stockage cryptographique non sécurisé ✔ Z Manque de sécurité au niveau des rôles✔ Violation dauthentification et de Session ✔ Manque de restriction daccès URL ✔ Falsification de requête (CSRF)✔ Stockage Cryptographique non Sécurisé ✔ Communications non sécurisées ✔ N Utilisation de composants connus vulnérables✔ Communications non sécurisées ✔ N Redirections non validées ✔ Redirections non validées✔ Manque de Restriction d’Accès URL ✔ Fuite dinformation et Traitement derreur X Incorrect X ✔ Communications non sécurisées ✔ X Exécution de Fichier Malicieux Hausse Baisse Identique nAcademy – 28 Février 2013 N Nouveau Z Renommé X Sortie
  9. 9. nAcademy – 28 Février 2013
  10. 10. Injections applicatives & webs include ($_GET[x]); PHP include ($_GET[x]); ✔ ➢ ✔ grep -ri include **> incl.php.txt grep -ri include > incl.php.txt ✔ Filtrer avec ✔ $ ✔ . et .. ✔ Exclure les valeurs filtrés nAcademy – 28 Février 2013
  11. 11. Injections applicatives & webs WHERE login=.$_GET[x] ➢ PHP WHERE login=.$_GET[x] ➢ SQL ✔ mysql_escape_string ✔ addslashes ✔ pdo_quote "WHERE login= ".$_GET[x]."" nAcademy – 28 Février 2013
  12. 12. Injections applicatives & webs echo $_GET[x]; ➢ PHP echo $_GET[x]; <?php ➢ SQL echo htmlentities($_GET[x]) ; ?> ➢ XSS nAcademy – 28 Février 2013
  13. 13. Injections applicatives & webs <input type="text" size=20 name="name"> ➢ PHP <input type="text" size=20 name="name"> String ldapSearchQuery = "(cn=" + String ldapSearchQuery = "(cn=" + ➢ SQL $username + ")"; $username + ")"; System.out.println(ldapSearchQuery); System.out.println(ldapSearchQuery); ➢ XSS ✔ Pas de GetParameter ➢ LDAP ✔ Pas de requête paramétré ✔ Valider les données avant de générer une requête de recherche nAcademy – 28 Février 2013
  14. 14. Injections applicatives & webs <% String pageToInclude = ➢ PHP <% String pageToInclude = getDataFromUntrustedSource(); %> getDataFromUntrustedSource(); %> <Jsp: include = la page "<% =% <Jsp: include = la page "<% =% ➢ SQL pageToInclude>" /> pageToInclude>" /> ➢ XSS ✔ Filtrer avec ➢ LDAP ✔ $ ✔ . et .. ➢ JAVA ✔ Exclure les valeurs filtrés nAcademy – 28 Février 2013
  15. 15. Injections applicatives & webs $sql = "SELECT **FROM users WHERE ➢ PHP $sql = "SELECT FROM users WHERE name = ?"; name = ?"; $qid= $cnx->executeQuery($sql, $qid= $cnx->executeQuery($sql, ➢ SQL array($_GET[rname])); array($_GET[rname])); ➢ XSS $sql = " SELECT * FROM users ➢ LDAP WHERE name = " . $cnx->quote( ➢ JAVA $_GET[username], PDO::PARAM_STR); ➢ ORM = Doctrine nAcademy – 28 Février 2013
  16. 16. Injections applicatives & webs $qid = $sql->where("id =".$_GET[id].""); ➢ PHP $qid = $sql->where("id =".$_GET[id].""); $where = ➢ SQL $this->getAdapter()->quoteInto("id =?, $_GET[id]); ➢ XSS ➢ LDAP ➢ JAVA ➢ ORM = Doctrine ➢ Framework = Zend nAcademy – 28 Février 2013
  17. 17. Au niveau projet // nAcademy – 28 Février 2013
  18. 18. STEGANOGRAPHIELart de cacher les Q Trouver la courbe lachoses à la vue de tous plus longue dans limage nAcademy – 28 Février 2013
  19. 19. Code sécurisé 3 points à connaître✔ Défense en profondeur✔ Limité les accès de données à lextérieur✔ Maximiser les droits nAcademy – 28 Février 2013
  20. 20. Mais... Quoi affiché !!! Un minimum dinformations lors dun crash✔ Erreur 404 ✔ Erreur 500 ✔ Fichier Log nAcademy – 28 Février 2013
  21. 21. Minimum de sécurité... 1 / 3 Le contrôle : Authentification✔ Mettre une bonne stratégie de mot de passe (Jpassword)✔ Ne pas le stocker en clair✔ Pensez au captcha ou au jeton✔ Force le mode SSL / TLS✔ Limité le délais pour modifier son profil utilisateur✔ Identification session✔ Authentification coté serveur✔ Pas dauthentification en JS / Ajax nAcademy – 28 Février 2013
  22. 22. Minimum de sécurité... 2 / 3 Le contrôle des accès✔ Gestion des sessions aléatoire (JSESSIONID / $_SESSION)✔ Minimum dinformations visibles (ex URL)✔ Eviter les données sensibles sur le réseau (VS scanner de réseau)✔ Cookie sécurisé (onglets des navigateurs)✔ Limiter la fin de session pour les projets sensibles (ex 5 minutes)✔ Bloquer les doubles logins / accès✔ 1 Authentification = 1 utilisateur = 1 connexion BDD nAcademy – 28 Février 2013
  23. 23. Minimum de sécurité... 3 / 3 Logique de code... Pas sûr✔ Contrôler le cache✔ Penser à vider le cache ✔ Fermer fenêtre ✔ Fermer Navigateur ✔ Fermer Application nAcademy – 28 Février 2013
  24. 24. nAcademy – 28 Février 2013
  25. 25. Scanneurs automatiques✔ Acunetix Web Vulnerability Scanner http://www.acunetix.com/vulnerability-scanner/✔ BeEF http://www.bindshell.net/tools/beef/✔ Burp Suite http://portswigger.net/suite/✔ Metasploit http://www.metasploit.com/ nAcademy – 28 Février 2013
  26. 26. Comment se protéger ✔ Vega (http://subgraph.com) ✔ PHP Lint (http://www.icosaedro.it/phplint/) nAcademy – 28 Février 2013
  27. 27. OWASP (ESAPI) EASPI Homepage : https://www.owasp.org/index.php/ESAPI nAcademy – 28 Février 2013
  28. 28. Questions ? nAcademy – 28 Février 2013

×