ASFWS 2011 - L’importance du protocole HTTP dans la menace APT
ASFWS 2011 - MiniMySqlat0r Reloaded
-
Upload
application-security-forum-western-switzerland -
Category
Technology
-
view
516 -
download
2
description
Transcript of ASFWS 2011 - MiniMySqlat0r Reloaded
Application Security ForumWestern Switzerland
27 octobre 2011 - HEIGVD Yverdon-les-Bainshttp://appsec-forum.ch
MiniMySqlat0r reloaded
Alain MowatIngénieur SécuritéSCRT Sàrl
$ whoami
27.10.2011 2Application Security Forum - Western Switzerland
- 2011
Ingénieur EPFL en Informatique Ingénieur Sécurité @ SCRT– Tests d'intrusion– Sécurité des applications Web
Agenda / Objectifs
Introduction– SQL, Injections, Types
Sqlat0r– Détection, Exploitation–Web 2.0
• Crawler Ajax
Conclusion
27.10.2011Application Security Forum - Western Switzerland
- 20113
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
27.10.2011Application Security Forum - Western Switzerland
- 20114
Utilisation
27.10.2011Application Security Forum - Western Switzerland
- 20115
Injection SQL
Existent depuis plus de 10 ans– Reste une des attaques les plus ravageuses
sur Internet– TOP 10 OWASP depuis 2004
27.10.2011Application Security Forum - Western Switzerland
- 20116
Et pourtant...
27.10.2011Application Security Forum - Western Switzerland
- 20117
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 ...
27.10.2011Application Security Forum - Western Switzerland
- 20118
Types de faille
Essentiellement 3 méthodes pour extraire les informations de la base– “Error-based”
• Messages d'erreur 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
affiché27.10.2011Application Security Forum - Western Switzerland
- 20119
Déroulement d'attaque
Recherche d'une faille–Où est la faille ?
Identification de la faille–Quel type de faille ?
Exploitation de la faille– Extraction des données
27.10.2011Application Security Forum - Western Switzerland
- 201110
Recherche d'une faille
Découvrir comment on peut interagir avec le site– Quels sont les paramètres ?• URL (GET), Formulaire (POST), Cookies
27.10.2011Application Security Forum - Western Switzerland
- 201111
Recherche d'une 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é de faille
27.10.2011Application Security Forum - Western Switzerland
- 201112
Recherche d'une faille
27.10.2011Application Security Forum - Western Switzerland
- 201113
Requête initiale
Requête AND 1=1
Requête AND 1=2
Obfuscation
AND 1=1– Souvent détecté par un WAF/IPS/IDS
AND 1<2 AND/*toto*/0x41!=0x42 HaVinG%0a1337=1337
27.10.2011Application Security Forum - Western Switzerland
- 201114
Identification de la faille
Détecter si c'est un champ numérique ou texte– Si texte, détecter le type de quote
Analyser quel type de commentaire est possible– /**/, --, #, %00
27.10.2011Application Security Forum - Western Switzerland
- 201115
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 c'est une injection “blind”
27.10.2011Application Security Forum - Western Switzerland
- 201116
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 à
l'aide d'un dictionnaire
27.10.2011Application Security Forum - Western Switzerland
- 201117
Démonstration
27.10.2011Application Security Forum - Western Switzerland
- 201118
SQLat0r
Automatisation de la recherche et exploitation de failles type 'UNION'
Buts– Simple et intuitif– Couverture d'un maximum de failles
27.10.2011Application Security Forum - Western Switzerland
- 201119
Fonctionnement
Un module de détection– Crawling du site– Détection de paramètres– Détection d'injections
Un module d'exploitation– Exploration de la base de données
27.10.2011Application Security Forum - Western Switzerland
- 201120
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
27.10.2011Application Security Forum - Western Switzerland
- 201121
Crawler 2.0
Comment détecter les pages chargées dynamiquement ?– Analyse statique...– Analyse dynamique
• Exécution du code et analyse
27.10.2011Application Security Forum - Western Switzerland
- 201122
Idée 1
Interpréteur JavaScript– Extraction de tout code JS– Insertion dans l'interpréteur– Interception des appels à
XMLHttpRequest()
27.10.2011Application Security Forum - Western Switzerland
- 201123
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
27.10.2011Application Security Forum - Western Switzerland
- 201124
Problèmes
27.10.2011Application Security Forum - Western Switzerland
- 201125
Forced Browsing– “this”• updateTable(this)
Paramètres vides par défaut–Requièrent une interaction de
l'utilisateur• Propositions, ...
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
27.10.2011Application Security Forum - Western Switzerland
- 201126
Détection de vulnérabilité
Ajout d'une “tolérance”–Chargement d'une même page pas
toujours égale• Publicité• Commentaires• ...
27.10.2011Application Security Forum - Western Switzerland
- 201127
Exploitation
Récupération du schéma de la base sous la forme d'un arbre– Navigation simple dans la BDD
27.10.2011Application Security Forum - Western Switzerland
- 201128
Démonstration
27.10.2011Application Security Forum - Western Switzerland
- 201129
Conclusion
27.10.2011Application Security Forum - Western Switzerland
- 201130
Outil simple et efficace– Point & Click
Crawler Web 2.0– Nécessaire pour tout scanner actuel
Vos questions ?
27.10.2011Application Security Forum - Western Switzerland
- 201131
© flickr.co
m/h
oria
varla
n
Merci!
Alain [email protected]@plopz0r
27.10.2011Application Security Forum - Western Switzerland
- 201132
SLIDES A TELECHARGER PROCHAINEMENT:
http://slideshare.net/ASF-WS