MiniMySqlat0r reloadedAlain MowatIngénieur SécuritéSCRT Sàrl                          Application Security Forum          ...
$ whoami Ingénieur EPFL en Informatique Ingénieur Sécurité @ SCRT   – Tests dintrusion   – Sécurité des applications Web...
Agenda / Objectifs Introduction   – SQL, Injections, Types Sqlat0r   – Détection, Exploitation   – Web 2.0        • Craw...
Introduction Structured Query Language   – Communication avec une base de données   – Sites Web utilisent SQL pour extrai...
Utilisation              Application Security Forum - Western Switzerland 27.10.2011                                      ...
Injection SQL Existent depuis plus de 10 ans   – Reste une des attaques les plus ravageuses     sur Internet   – TOP 10 O...
Et pourtant...              Application Security Forum - Western Switzerland 27.10.2011                                   ...
Injection SQL Faille permettant à un attaquant de  modifier la requête SQL envoyée par un  serveur Web à la BDD   – Dû à ...
Types de faille Essentiellement 3 méthodes pour  extraire les informations de la base  – “Error-based”      • Messages de...
Déroulement dattaque Recherche dune faille   – Où est la faille ? Identification de la faille   – Quel type de faille ?...
Recherche dune faille Découvrir comment on peut interagir  avec le site   – Quels sont les paramètres ?      • URL (GET),...
Recherche dune faille Or 1=1 ?   – Non non non        • Pas toujours de différence        • Détecté par la plupart des WA...
Recherche dune faille                                                   Requête initiale             Requête AND 1=1      ...
Obfuscation AND 1=1   – Souvent détecté par un WAF/IPS/IDS AND 1<2 AND/*toto*/0x41!=0x42 HaVinG%0a1337=1337           ...
Identification de la faille Détecter si cest un champ numérique  ou texte   – Si texte, détecter le type de quote Analys...
Identification de la faille Déterminer nombre de colonnes de la  requête initiale   – Permet de créer des unions correcte...
Exploitation de la faille Explorer le contenu de la base de  données   – MySQL : information_schema   – MSSQL : sysobject...
Démonstration             Application Security Forum - Western Switzerland27.10.2011                                      ...
SQLat0r Automatisation de la recherche et  exploitation de failles type UNION Buts   – Simple et intuitif   – Couverture...
Fonctionnement Un module de détection   – Crawling du site   – Détection de paramètres   – Détection dinjections Un modu...
Crawler Crawler traditionnel   – Détecte les pages liées de manière     statiques   – <a href=””>   – Récupère liste de p...
Crawler 2.0 Comment détecter les pages chargées  dynamiquement ?   – Analyse statique...   – Analyse dynamique        • E...
Idée 1 Interpréteur JavaScript   – Extraction de tout code JS   – Insertion dans linterpréteur   – Interception des appel...
Idée 2 “Browsing forcé”   – Chargement de la page dans un mini-     navigateur   – Recherche de tous les events de la pag...
Problèmes Forced Browsing   – “this”       • updateTable(this) Paramètres vides par défaut   – Requièrent une interactio...
Détection de vulnérabilité Algorithme de recherche des  paramètres vulnérables   – Base = contenu de la page “standard”  ...
Détection de vulnérabilité Ajout dune “tolérance”  – Chargement dune même page pas    toujours égale     • Publicité     ...
Exploitation Récupération du schéma de la base  sous la forme dun arbre   – Navigation simple dans la BDD              Ap...
Démonstration             Application Security Forum - Western Switzerland27.10.2011                                      ...
Conclusion Outil simple et efficace   – Point & Click Crawler Web 2.0   – Nécessaire pour tout scanner actuel           ...
© flickr.com/horiavarlan                                               Vos questions ?                           Applicati...
Merci!        Alain Mowat        alain@scrt.ch        @plopz0r                                                        SLID...
Upcoming SlideShare
Loading in...5
×

ASFWS 2011 - MiniMySqlat0r Reloaded

520

Published on

Application Security Forum 2011
27.10.2011 - Yverdon-les-Bains (Switzerland)
Speaker: Julien Probst

Published in: Technology
2 Comments
0 Likes
Statistics
Notes
  • Be the first to like this

No Downloads
Views
Total Views
520
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
20
Comments
2
Likes
0
Embeds 0
No embeds

No notes for slide

ASFWS 2011 - MiniMySqlat0r Reloaded

  1. 1. MiniMySqlat0r reloadedAlain MowatIngénieur SécuritéSCRT Sàrl Application Security Forum Western Switzerland 27 octobre 2011 - HEIGVD Yverdon-les-Bains http://appsec-forum.ch
  2. 2. $ whoami Ingénieur EPFL en Informatique Ingénieur Sécurité @ SCRT – Tests dintrusion – Sécurité des applications Web Application Security Forum - Western Switzerland 27.10.2011 2 - 2011
  3. 3. Agenda / Objectifs Introduction – SQL, Injections, Types Sqlat0r – Détection, Exploitation – Web 2.0 • Crawler Ajax Conclusion Application Security Forum - Western Switzerland 27.10.2011 3 - 2011
  4. 4. Introduction Structured Query Language – Communication avec une base de données – Sites Web utilisent SQL pour extraire le contenu des pages à afficher Exemple typique – SELECT * FROM news WHERE id=1 Application Security Forum - Western Switzerland 27.10.2011 4 - 2011
  5. 5. Utilisation Application Security Forum - Western Switzerland 27.10.2011 5 - 2011
  6. 6. Injection SQL Existent depuis plus de 10 ans – Reste une des attaques les plus ravageuses sur Internet – TOP 10 OWASP depuis 2004 Application Security Forum - Western Switzerland 27.10.2011 6 - 2011
  7. 7. Et pourtant... Application Security Forum - Western Switzerland 27.10.2011 7 - 2011
  8. 8. Injection SQL Faille permettant à un attaquant de modifier la requête SQL envoyée par un serveur Web à la BDD – Dû à une mauvaise validation des paramètres Exemples – SELECT * FROM news WHERE id = -1 – SELECT * FROM news WHERE id = 1 or 1=1 – SELECT * FROM news WHERE id = 1 union ... Application Security Forum - Western Switzerland 27.10.2011 8 - 2011
  9. 9. Types de faille Essentiellement 3 méthodes pour extraire les informations de la base – “Error-based” • Messages derreur affichés révélant les informations convoitées – Failles “union” • Attaquant peut concaténer les résultats de plusieurs requêtes qui se retrouvent sur la page – Failles “blind” • La requête est effectuée mais le résultat jamais 27.10.2011 affiché Application Security Forum - Western Switzerland 9 - 2011
  10. 10. Déroulement dattaque Recherche dune faille – Où est la faille ? Identification de la faille – Quel type de faille ? Exploitation de la faille – Extraction des données Application Security Forum - Western Switzerland 27.10.2011 10 - 2011
  11. 11. Recherche dune faille Découvrir comment on peut interagir avec le site – Quels sont les paramètres ? • URL (GET), Formulaire (POST), Cookies Application Security Forum - Western Switzerland 27.10.2011 11 - 2011
  12. 12. Recherche dune faille Or 1=1 ? – Non non non • Pas toujours de différence • Détecté par la plupart des WAF/IDS/IPS Utiliser des requêtes donnant des résultats différents – AND 1=1 (aucun changement) – AND 1=2 (toujours faux, aucun résultat) • Si les pages générées ne sont pas identiques, grande probabilité Forum -failleSwitzerland Application Security de Western 27.10.2011 12 - 2011
  13. 13. Recherche dune faille Requête initiale Requête AND 1=1 Requête AND 1=2 Application Security Forum - Western Switzerland27.10.2011 13 - 2011
  14. 14. Obfuscation AND 1=1 – Souvent détecté par un WAF/IPS/IDS AND 1<2 AND/*toto*/0x41!=0x42 HaVinG%0a1337=1337 Application Security Forum - Western Switzerland 27.10.2011 14 - 2011
  15. 15. Identification de la faille Détecter si cest un champ numérique ou texte – Si texte, détecter le type de quote Analyser quel type de commentaire est possible – /**/, --, #, %00 Application Security Forum - Western Switzerland 27.10.2011 15 - 2011
  16. 16. Identification de la faille Déterminer nombre de colonnes de la requête initiale – Permet de créer des unions correctes – Id=1 order by 1,2,3,4,...,X Déterminer si une colonne est affichée sur la page – UNION SELECT toto,titi,tata,...,X – Sinon cest une injection “blind” Application Security Forum - Western Switzerland 27.10.2011 16 - 2011
  17. 17. Exploitation de la faille Explorer le contenu de la base de données – MySQL : information_schema – MSSQL : sysobjects – Oracle : all_tab_columns – Bruteforcer le nom des tables/colonnes à laide dun dictionnaire Application Security Forum - Western Switzerland 27.10.2011 17 - 2011
  18. 18. Démonstration Application Security Forum - Western Switzerland27.10.2011 18 - 2011
  19. 19. SQLat0r Automatisation de la recherche et exploitation de failles type UNION Buts – Simple et intuitif – Couverture dun maximum de failles Application Security Forum - Western Switzerland 27.10.2011 19 - 2011
  20. 20. Fonctionnement Un module de détection – Crawling du site – Détection de paramètres – Détection dinjections Un module dexploitation – Exploration de la base de données Application Security Forum - Western Switzerland 27.10.2011 20 - 2011
  21. 21. Crawler Crawler traditionnel – Détecte les pages liées de manière statiques – <a href=””> – Récupère liste de pages, de paramètres, ... – Impossible de détecter les pages chargées de manière dynamique • Ajax • XMLHttpRequest Application Security Forum - Western Switzerland 27.10.2011 21 - 2011
  22. 22. Crawler 2.0 Comment détecter les pages chargées dynamiquement ? – Analyse statique... – Analyse dynamique • Exécution du code et analyse Application Security Forum - Western Switzerland 27.10.2011 22 - 2011
  23. 23. Idée 1 Interpréteur JavaScript – Extraction de tout code JS – Insertion dans linterpréteur – Interception des appels à XMLHttpRequest() Application Security Forum - Western Switzerland 27.10.2011 23 - 2011
  24. 24. Idée 2 “Browsing forcé” – Chargement de la page dans un mini- navigateur – Recherche de tous les events de la page • onload, onmouseover, onclick, ... – Exécution de chaque event dans le contexte de la page Interception des requêtes par un Proxy Application Security Forum - Western Switzerland 27.10.2011 24 - 2011
  25. 25. Problèmes Forced Browsing – “this” • updateTable(this) Paramètres vides par défaut – Requièrent une interaction de lutilisateur • Propositions, ... Application Security Forum - Western Switzerland 27.10.2011 25 - 2011
  26. 26. Détection de vulnérabilité Algorithme de recherche des paramètres vulnérables – Base = contenu de la page “standard” – pTrue = contenu de la page “AND 1=1” – pFalse = contenu de la page “AND 1=2” – if(diff(Base,pTrue) < diff(pTrue,pFalse)) • Vulnerable ! diff basé sur le nombres de mots différents sur les deux pages Application Security Forum - Western Switzerland 27.10.2011 26 - 2011
  27. 27. Détection de vulnérabilité Ajout dune “tolérance” – Chargement dune même page pas toujours égale • Publicité • Commentaires • ... Application Security Forum - Western Switzerland 27.10.2011 27 - 2011
  28. 28. Exploitation Récupération du schéma de la base sous la forme dun arbre – Navigation simple dans la BDD Application Security Forum - Western Switzerland 27.10.2011 28 - 2011
  29. 29. Démonstration Application Security Forum - Western Switzerland27.10.2011 29 - 2011
  30. 30. Conclusion Outil simple et efficace – Point & Click Crawler Web 2.0 – Nécessaire pour tout scanner actuel Application Security Forum - Western Switzerland 27.10.2011 30 - 2011
  31. 31. © flickr.com/horiavarlan Vos questions ? Application Security Forum - Western Switzerland27.10.2011 31 - 2011
  32. 32. Merci! Alain Mowat alain@scrt.ch @plopz0r SLIDES A TELECHARGER PROCHAINEMENT: http://slideshare.net/ASF-WS Application Security Forum - Western Switzerland27.10.2011 32 - 2011
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×