ASFWS 2011 - MiniMySqlat0r Reloaded

32
Application Security Forum Western Switzerland 27 octobre 2011 - HEIGVD Yverdon-les-Bains http://appsec-forum.ch MiniMySqlat0r reloaded Alain Mowat Ingénieur Sécurité SCRT Sàrl

description

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

Transcript of ASFWS 2011 - MiniMySqlat0r Reloaded

Page 1: 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

Page 2: ASFWS 2011 - MiniMySqlat0r Reloaded

$ 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

Page 3: ASFWS 2011 - MiniMySqlat0r Reloaded

Agenda / Objectifs

Introduction– SQL, Injections, Types

Sqlat0r– Détection, Exploitation–Web 2.0

• Crawler Ajax

Conclusion

27.10.2011Application Security Forum - Western Switzerland

- 20113

Page 4: ASFWS 2011 - MiniMySqlat0r Reloaded

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

Page 5: ASFWS 2011 - MiniMySqlat0r Reloaded

Utilisation

27.10.2011Application Security Forum - Western Switzerland

- 20115

Page 6: ASFWS 2011 - MiniMySqlat0r Reloaded

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

Page 7: ASFWS 2011 - MiniMySqlat0r Reloaded

Et pourtant...

27.10.2011Application Security Forum - Western Switzerland

- 20117

Page 8: ASFWS 2011 - MiniMySqlat0r Reloaded

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

Page 9: ASFWS 2011 - MiniMySqlat0r Reloaded

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

Page 10: ASFWS 2011 - MiniMySqlat0r Reloaded

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

Page 11: ASFWS 2011 - MiniMySqlat0r Reloaded

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

Page 12: ASFWS 2011 - MiniMySqlat0r Reloaded

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

Page 13: ASFWS 2011 - MiniMySqlat0r Reloaded

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

Page 14: ASFWS 2011 - MiniMySqlat0r Reloaded

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

Page 15: ASFWS 2011 - MiniMySqlat0r Reloaded

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

Page 16: ASFWS 2011 - MiniMySqlat0r Reloaded

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

Page 17: ASFWS 2011 - MiniMySqlat0r Reloaded

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

Page 18: ASFWS 2011 - MiniMySqlat0r Reloaded

Démonstration

27.10.2011Application Security Forum - Western Switzerland

- 201118

Page 19: ASFWS 2011 - MiniMySqlat0r Reloaded

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

Page 20: ASFWS 2011 - MiniMySqlat0r Reloaded

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

Page 21: ASFWS 2011 - MiniMySqlat0r Reloaded

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

Page 22: ASFWS 2011 - MiniMySqlat0r Reloaded

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

Page 23: ASFWS 2011 - MiniMySqlat0r Reloaded

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

Page 24: ASFWS 2011 - MiniMySqlat0r Reloaded

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

Page 25: ASFWS 2011 - MiniMySqlat0r Reloaded

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, ...

Page 26: ASFWS 2011 - MiniMySqlat0r Reloaded

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

Page 27: ASFWS 2011 - MiniMySqlat0r Reloaded

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

Page 28: ASFWS 2011 - MiniMySqlat0r Reloaded

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

Page 29: ASFWS 2011 - MiniMySqlat0r Reloaded

Démonstration

27.10.2011Application Security Forum - Western Switzerland

- 201129

Page 30: ASFWS 2011 - MiniMySqlat0r Reloaded

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

Page 31: ASFWS 2011 - MiniMySqlat0r Reloaded

Vos questions ?

27.10.2011Application Security Forum - Western Switzerland

- 201131

© flickr.co

m/h

oria

varla

n

Page 32: ASFWS 2011 - MiniMySqlat0r Reloaded

Merci!

Alain [email protected]@plopz0r

27.10.2011Application Security Forum - Western Switzerland

- 201132

SLIDES A TELECHARGER PROCHAINEMENT:

http://slideshare.net/ASF-WS