1 / 37

INF8420: Éléments de Sécurité Informatique

INF8420: Éléments de Sécurité Informatique. Sécurité des applications web. Architecture des applications web. Client légitime. Server Web. Internet. HTTP HTML. Architecture des applications web. Client légitime. Server BD. Server Web. Internet. SQL. HTTP HTML.

waite
Download Presentation

INF8420: Éléments de Sécurité Informatique

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. INF8420: Éléments de Sécurité Informatique Sécurité des applications web

  2. Architecture des applications web Client légitime Server Web Internet HTTP HTML

  3. Architecture des applications web Client légitime Server BD Server Web Internet SQL HTTP HTML

  4. Architecture des applications web Client légitime Server BD Server Web Internet XML SQL HTTP HTML Serveur d’application

  5. Architecture des applications web Client légitime Server BD Server Web Internet XML SQL HTTP HTML Serveur d’application Kerberos LDAP Serveur d’authentification

  6. Architecture des applications web Client légitime Server BD Server Web Internet XML SQL HTTP HTML Serveur d’application Kerberos LDAP Client malicieux Serveur d’authentification

  7. Architecture des applications web Client légitime Server BD Server Web Internet HTTP HTML XML SQL HTTP HTML Serveur d’application Pare-feu Kerberos LDAP Client malicieux Serveur d’authentification

  8. Problèmes de sécurité • Authentification • Vérification des données usager • SQL injection • Cross site scripting • Parameter tampering • Phishing (hameçonnage) • Logique application

  9. Authentification

  10. Authentification • Composantes impliquées Client légitime Server BD Server Web Internet Serveur d’application Pare-feu Client malicieux Serveur d’authentification

  11. Authentification • Canal de communication sécurisé (https) • Challenge – response (NTLM, Kerberos) • Réauthentification à des intervalles sécurisés • Permission des usagers • Tester • Authentifier le client • Authentifier le serveur

  12. Authentification • Authentification du serveur • Certificat SSL

  13. Authentification • Authentification du serveur • Certificat SSL • Autre

  14. (Input validation) Vérification des données usager

  15. Vérification des données usager (Input validation) • Ce qu’on fait Client légitime Server BD Server Web Internet Serveur d’application Pare-feu Client malicieux Serveur d’authentification

  16. Vérification des données usager (Input validation) <form action="mailto:yourname@yourdomain.com" method="post" onsubmit="return checkform(this);"> <script language="JavaScript" type="text/javascript"><!--function checkform ( form ){  // see http://www.thesitewizard.com/archive/validation.shtml  // for an explanation of this script and how to use it on your  // own website  // ** START **  if (form.email.value == "") {    alert( "Please enter your email address." );    form.email.focus();    return false ;  }  // ** END **  return true ;}//--></script> • Code source html

  17. Vérification des données usager (Input validation) • Ce qu’on devrais faire Client légitime Server BD Server Web Internet Serveur d’application Pare-feu Client malicieux Serveur d’authentification

  18. Vérification des données usager (Input validation) • Attaques • Injection SQL (SQL Injection) • Cross Site Scripting (XSS) • Variable tampering

  19. Vérification des données usager SQL Injection

  20. Vérification des données usager (Input validation) Client légitime Server BD Server Web extract($_POST); $req = "select mem_code from MEMBRES where mem_login = '$login' and mem_pwd = '$pass'"; $result = mysql_query($req) or die ("Error : the SQL request <br><br>".$req."<br><br> is not valid: ".mysql_error()); list($mem_code) = mysql_fetch_array($result); if (empty($mem_code)) { //verifier que la requette a retourne une reponse positive • Injection SQL (SQL Injection)

  21. Vérification des données usager (Input validation) daniel Xa4!dfga Client légitime Server BD Server Web select mem_code from MEMBRES where mem_login = 'daniel' and mem_pwd = 'Xa4!dfga' extract($_POST); $req = "select mem_code from MEMBRES where mem_login = 'daniel' and mem_pwd = 'Xa4!dfga'"; $result = mysql_query($req) or die ("Error : the SQL request <br><br>".$req."<br><br> is not valid: ".mysql_error()); list($mem_code) = mysql_fetch_array($result); if (empty($mem_code)) { //verifier que la requette a retourne une reponse positive • Injection SQL (SQL Injection)

  22. Vérification des données usager (Input validation) daniel ' or '1'='1 Server BD Server Web select mem_code from MEMBRES where mem_login = 'daniel' and mem_pwd = '' or '1'='1' extract($_POST); $req = "select mem_code from MEMBRES where mem_login = 'daniel' and mem_pwd = '' or '1'='1'"; $result = mysql_query($req) or die ("Error : the SQL request <br><br>".$req."<br><br> is not valid: ".mysql_error()); list($mem_code) = mysql_fetch_array($result); if (empty($mem_code)) { //verifier que la requette a retourne une reponse positive Client malicieux • Injection SQL (SQL Injection)

  23. Vérification des données usager (Input validation) daniel x'; INSERT INTO members ('email','passwd','login_id','full_name') VALUES ('steve@unixwiz.net','hello','steve','Steve Friedl');-- Client malicieux • Injection SQL (SQL Injection)

  24. Vérification des données usager Cross Site Scripting

  25. Vérification des données usager (Input validation) Search results for Gagner de l’argent: • Comment gagner de l'argent facile et des cadeaux sur internet… • L' objectif du blog est de présenter toutes les idées qui permettent d' économiser … Gagner de l’argent Client légitime Server Web Search <html> <head></head> <body> <h1>Search results for Gagner de l’argent :</h1> <itemize> <item>Comment gagner deacile et des cadeaux sur internet…</item> <item>L' objectif du blog est de présenter toutes les idées qui permettent d' économiser …</item> </itemize> </body> </html> extract($_POST); $req = "select * from POSTS where title = '$stitle' • Cross site scripting (XSS)

  26. Vérification des données usager (Input validation) Search results for Super: No results found <b>Super</b> Server Web Search <html> <head></head> <body> <h1>Search results for <b>Super</b> :</h1> No results found </itemize> </body> </html> Client malicieux extract($_POST); $req = "select * from POSTS where title = '$stitle' • Cross site scripting (XSS)

  27. Vérification des données usager (Input validation) Server BD Post Client malicieux <script type="text/javascript">document.location.href=“http://boteanu.com"</script> Your message has been posted • Cross site scripting (XSS)

  28. Vérification des données usager (Input validation) Client légitime Server BD Guestbook messages: Hello Bien fait ... <h1>Guestbook messages:</h1> Hello<br> Bien fait<br> <script type="text/javascript">document.location.href=“http://boteanu.com"</script><br> ... • Cross site scripting (XSS)

  29. Vérification des données usager (Input validation) • Comment se protéger ? • Valider les données de l’usager • sur le serveur Web • et/ou sur le serveur d’applications • limiter la taille de l’entrée • refuser les caractères spéciaux ‘ “ \ / ; - < > • accepter seulement les caractères nécessaires • Utiliser les SQL Stored Procedures • Gérer les permissions sur la basé de données • usagers, rôles, permissions • Messages d’erreur • Vérifications

  30. Vérification des données usager (Input validation) • Comment vérifier si un site est vulnérable ? • Rien fait pour protéger -> probablement vulnérable • Développé sans gestion de projet -> probablement vulnérable • Outils automatiques • Nikto • Acunetix ($$) • WebScarab • Autres (http://sectools.org/web-scanners.html)

  31. Phishing Hameçonnage

  32. Hameçonnage(Phishing) Client légitime Server BD Server Web Faux Server Web Internet Vous avez gagné 1 million. Connectez vous sur le site de la banque en cliquant sur https://www.desjard1ns .com Serveur d’application Pare-feu Client malicieux

  33. Hameçonnage(Phishing) • Comment se protéger ? • Filtrer le spam • Authentification du serveur • Eduquer les utilisateurs

  34. Logique de l’application

  35. Logique de l’application • Chaque attaque est différente • Exploite la logique de l’application • Difficile à détecter • Exemples: • Acheter un livre de -20$ • Créer un million d’usagers et écrire des messages • Enlever le câble réseau au milieu d’une partie d’échec

  36. Conclusions

  37. Conclusions • Attaques web très populaires • Facile de créer une application vulnérable • Validation des données usager • Éducation des usagers • Principe de sécurité de l’oignon (layered security)

More Related