31
XSSF : démontrer le danger des XSS XSSFRAMEWORK Ludovic COURGNAUD [email protected] 8 juin 2011

XSSF : démontrer le danger des XSS - XSSFramework · JavaScript utilisé sur une majorité d’applications Pas de solution miracle côté client Sensibilisation des développeurs

  • Upload
    lyhanh

  • View
    223

  • Download
    0

Embed Size (px)

Citation preview

Page 1: XSSF : démontrer le danger des XSS - XSSFramework · JavaScript utilisé sur une majorité d’applications Pas de solution miracle côté client Sensibilisation des développeurs

XSSF : démontrer le danger des XSSXSSFRAMEWORK

Ludovic COURGNAUD

[email protected]

8 juin 2011

Page 2: XSSF : démontrer le danger des XSS - XSSFramework · JavaScript utilisé sur une majorité d’applications Pas de solution miracle côté client Sensibilisation des développeurs

Introduction Principes XSSFRAMEWORK Protections XSS Conclusion

1 Principes

2 XSSFRAMEWORK

3 Protections XSS

2 / 26

Page 3: XSSF : démontrer le danger des XSS - XSSFramework · JavaScript utilisé sur une majorité d’applications Pas de solution miracle côté client Sensibilisation des développeurs

Introduction Principes XSSFRAMEWORK Protections XSS Conclusion

1 PrincipesCross-Site Scripting (XSS)Utilité d’un frameworkÉlements perturbateurs ?

2 XSSFRAMEWORK

3 Protections XSS

3 / 26

Page 4: XSSF : démontrer le danger des XSS - XSSFramework · JavaScript utilisé sur une majorité d’applications Pas de solution miracle côté client Sensibilisation des développeurs

Introduction Principes XSSFRAMEWORK Protections XSS Conclusion

Kézako ? ? ? XSSF

<script> alert(‘Définition’) </script>Injection de données arbitraires dans les paramètres d’uneapplication webExécution de code malveillant sur le navigateur web

Expliquer les risques ?Explications souvent limitées à des PoC (popup, vol decookie, etc.)Adaptation de l’attaque pour chaque vulnérabilitérencontrée

4 / 26

Page 5: XSSF : démontrer le danger des XSS - XSSFramework · JavaScript utilisé sur une majorité d’applications Pas de solution miracle côté client Sensibilisation des développeurs

Introduction Principes XSSFRAMEWORK Protections XSS Conclusion

Kézako ? ? ? XSSF

<script> alert(‘Définition’) </script>Injection de données arbitraires dans les paramètres d’uneapplication webExécution de code malveillant sur le navigateur web

Expliquer les risques ?Explications souvent limitées à des PoC (popup, vol decookie, etc.)Adaptation de l’attaque pour chaque vulnérabilitérencontrée

4 / 26

Page 6: XSSF : démontrer le danger des XSS - XSSFramework · JavaScript utilisé sur une majorité d’applications Pas de solution miracle côté client Sensibilisation des développeurs

Introduction Principes XSSFRAMEWORK Protections XSS Conclusion

Pourquoi un nouveau Framework ? XSSF

C’est pour mieux t’attaquer, mon enfant !Attaque générique quelle que soit la XSSMise à disposition d’une bibliothèque d’attaquesIntégration directement dans Metasploit Framework

5 / 26

Page 7: XSSF : démontrer le danger des XSS - XSSFramework · JavaScript utilisé sur une majorité d’applications Pas de solution miracle côté client Sensibilisation des développeurs

Introduction Principes XSSFRAMEWORK Protections XSS Conclusion

Aarrgghhh : Same-Origin Policy (SOP) XSSF

Mesure de sécurité à l’intérieur du navigateurRestreint les échanges de données entre deux domaines(AJAX)Pourquoi es-tu si méchante ? ? ?

Impossibilité de récupérer des données depuis un domaineB vers un domaine vulnérable AImpossibilité d’envoyer des données vers un domaine Bdepuis un domaine vulnérable A

6 / 26

Page 8: XSSF : démontrer le danger des XSS - XSSFramework · JavaScript utilisé sur une majorité d’applications Pas de solution miracle côté client Sensibilisation des développeurs

Introduction Principes XSSFRAMEWORK Protections XSS Conclusion

Ouuff : “Contournement” de la SOP XSSF

Récupération de données vers le navigateur

Envoie de données depuis le navigateur

7 / 26

Page 9: XSSF : démontrer le danger des XSS - XSSFramework · JavaScript utilisé sur une majorité d’applications Pas de solution miracle côté client Sensibilisation des développeurs

Introduction Principes XSSFRAMEWORK Protections XSS Conclusion

Ouuff : “Contournement” de la SOP XSSF

Récupération de données vers le navigateur

Envoie de données depuis le navigateur

7 / 26

Page 10: XSSF : démontrer le danger des XSS - XSSFramework · JavaScript utilisé sur une majorité d’applications Pas de solution miracle côté client Sensibilisation des développeurs

Introduction Principes XSSFRAMEWORK Protections XSS Conclusion

HTML5 : A new hope ! XSSF

Support du HTML5 par les nouveaux navigateursPortée des attaques XSS élargie :

Nouvelles balises HTML et évènements JavaScriptCross-Origin Resource Sharing :

Possibilité de désactiver la SOP entre deux domainesConfiguration d’un serveur d’attaque possible pour autoriserles chargements de données depuis un domaine attaqué

8 / 26

Page 11: XSSF : démontrer le danger des XSS - XSSFramework · JavaScript utilisé sur une majorité d’applications Pas de solution miracle côté client Sensibilisation des développeurs

Introduction Principes XSSFRAMEWORK Protections XSS Conclusion

1 Principes

2 XSSFRAMEWORK

PrincipesAttaques XSSRebond et tunnel XSS

3 Protections XSS

9 / 26

Page 12: XSSF : démontrer le danger des XSS - XSSFramework · JavaScript utilisé sur une majorité d’applications Pas de solution miracle côté client Sensibilisation des développeurs

Introduction Principes XSSFRAMEWORK Protections XSS Conclusion

Intégration dans Metasploit XSSF

Mais t’as quoi ? ? ? Metasploit !

Projet open-sourceMSF est un dessous-projets de MetasploitDéveloppement etexécution d’exploits contreune machine distanteUtilisé par :

Auditeurs pour tester leniveau de vulnérabilitédes systèmesPirates pour exploiterdes machines distantes

10 / 26

Page 13: XSSF : démontrer le danger des XSS - XSSFramework · JavaScript utilisé sur une majorité d’applications Pas de solution miracle côté client Sensibilisation des développeurs

Introduction Principes XSSFRAMEWORK Protections XSS Conclusion

One ring to rule them all. . . XSSF

11 / 26

Page 14: XSSF : démontrer le danger des XSS - XSSFramework · JavaScript utilisé sur une majorité d’applications Pas de solution miracle côté client Sensibilisation des développeurs

Introduction Principes XSSFRAMEWORK Protections XSS Conclusion

A l’attaque ! XSSF

Injection du fichier “http://10.100.48.247:8888/loop”

12 / 26

Page 15: XSSF : démontrer le danger des XSS - XSSFramework · JavaScript utilisé sur une majorité d’applications Pas de solution miracle côté client Sensibilisation des développeurs

Introduction Principes XSSFRAMEWORK Protections XSS Conclusion

Module XSSF XSSF

13 / 26

Page 16: XSSF : démontrer le danger des XSS - XSSFramework · JavaScript utilisé sur une majorité d’applications Pas de solution miracle côté client Sensibilisation des développeurs

Introduction Principes XSSFRAMEWORK Protections XSS Conclusion

Exploits MSF + XSSF XSSF

Gestion simple des modules :Codés “à la façon MSF”MSF possède ses modulesXSSF possède ses modulesChacun peut utiliser les modules de l’autre

Lancement d’exploits MSF depuis une XSS :Exploits ciblésSuite d’exploits possibleAucune modification nécessaire sur les exploits existantsContrôle total de la machine

14 / 26

Page 17: XSSF : démontrer le danger des XSS - XSSFramework · JavaScript utilisé sur une majorité d’applications Pas de solution miracle côté client Sensibilisation des développeurs

Introduction Principes XSSFRAMEWORK Protections XSS Conclusion

Démonstration XSSF

http://securitytube.net/XSSF-(Attacking-with-XSS-using-Metasploit)-Part-1-video.aspx

http://blog.conixsecurity.fr/?p=436

15 / 26

Page 18: XSSF : démontrer le danger des XSS - XSSFramework · JavaScript utilisé sur une majorité d’applications Pas de solution miracle côté client Sensibilisation des développeurs

Introduction Principes XSSFRAMEWORK Protections XSS Conclusion

XSSF Tunnel XSSF

16 / 26

Page 19: XSSF : démontrer le danger des XSS - XSSFramework · JavaScript utilisé sur une majorité d’applications Pas de solution miracle côté client Sensibilisation des développeurs

Introduction Principes XSSFRAMEWORK Protections XSS Conclusion

“Tunnelé” ! XSSF

17 / 26

Page 20: XSSF : démontrer le danger des XSS - XSSFramework · JavaScript utilisé sur une majorité d’applications Pas de solution miracle côté client Sensibilisation des développeurs

Introduction Principes XSSFRAMEWORK Protections XSS Conclusion

Démonstration XSSF

http://securitytube.net/XSSF-(Attacking-with-XSS-using-Metasploit)-Part-2-video.aspx

18 / 26

Page 21: XSSF : démontrer le danger des XSS - XSSFramework · JavaScript utilisé sur une majorité d’applications Pas de solution miracle côté client Sensibilisation des développeurs

Introduction Principes XSSFRAMEWORK Protections XSS Conclusion

1 Principes

2 XSSFRAMEWORK

3 Protections XSSProtectionsSolutions réelles ?

19 / 26

Page 22: XSSF : démontrer le danger des XSS - XSSFramework · JavaScript utilisé sur une majorité d’applications Pas de solution miracle côté client Sensibilisation des développeurs

Introduction Principes XSSFRAMEWORK Protections XSS Conclusion

Bloqueurs XSS XSSF

AvantagesBlocage préventif de scripts basé sur une liste blanchePermet d’éviter l’exploitation de failles

InconvénientsSystème très restrictifVulnérabilité XSS sur un site de confiance ?

20 / 26

Page 23: XSSF : démontrer le danger des XSS - XSSFramework · JavaScript utilisé sur une majorité d’applications Pas de solution miracle côté client Sensibilisation des développeurs

Introduction Principes XSSFRAMEWORK Protections XSS Conclusion

Bloqueurs XSS XSSF

AvantagesBlocage préventif de scripts basé sur une liste blanchePermet d’éviter l’exploitation de failles

InconvénientsSystème très restrictifVulnérabilité XSS sur un site de confiance ?

20 / 26

Page 24: XSSF : démontrer le danger des XSS - XSSFramework · JavaScript utilisé sur une majorité d’applications Pas de solution miracle côté client Sensibilisation des développeurs

Introduction Principes XSSFRAMEWORK Protections XSS Conclusion

Web Application Firewalls (WAF) XSSF

AvantagesCréation de règles personnalisées de conversation HTTPRegroupement des contrôles sur un même niveauPrévention contres les attaques de type XSS ou SQLi

InconvénientsImpossibilité de détecter tous les codes malicieux

eval(eval((![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+(!+[]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]+(!![]+[])[+[]]+"(+[])"))eval(String.fromCharCode(97, 108, 101, 114, 116, 40, 48, 41, 59));

Nécessité de mettre à jour régulièrement les règles

21 / 26

Page 25: XSSF : démontrer le danger des XSS - XSSFramework · JavaScript utilisé sur une majorité d’applications Pas de solution miracle côté client Sensibilisation des développeurs

Introduction Principes XSSFRAMEWORK Protections XSS Conclusion

Web Application Firewalls (WAF) XSSF

AvantagesCréation de règles personnalisées de conversation HTTPRegroupement des contrôles sur un même niveauPrévention contres les attaques de type XSS ou SQLi

InconvénientsImpossibilité de détecter tous les codes malicieux

eval(eval((![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+(!+[]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]+(!![]+[])[+[]]+"(+[])"))eval(String.fromCharCode(97, 108, 101, 114, 116, 40, 48, 41, 59));

Nécessité de mettre à jour régulièrement les règles

21 / 26

Page 26: XSSF : démontrer le danger des XSS - XSSFramework · JavaScript utilisé sur une majorité d’applications Pas de solution miracle côté client Sensibilisation des développeurs

Introduction Principes XSSFRAMEWORK Protections XSS Conclusion

Filtres XSS XSSF

AvantagesPermet d’éviter les attaques XSS volatiles (75% des XSS)Filtre la réponse HTTP en fonction de la requête

InconvénientsPas de filtre pour les XSS persistantesCertaines applications restent vulnérablesDifficulté à filtrer tous les codes JavaScript :

Exemple de bypass récent découvert sur Chrome :<img src=none onerror="XSS">

22 / 26

Page 27: XSSF : démontrer le danger des XSS - XSSFramework · JavaScript utilisé sur une majorité d’applications Pas de solution miracle côté client Sensibilisation des développeurs

Introduction Principes XSSFRAMEWORK Protections XSS Conclusion

Filtres XSS XSSF

AvantagesPermet d’éviter les attaques XSS volatiles (75% des XSS)Filtre la réponse HTTP en fonction de la requête

InconvénientsPas de filtre pour les XSS persistantesCertaines applications restent vulnérablesDifficulté à filtrer tous les codes JavaScript :

Exemple de bypass récent découvert sur Chrome :<img src=none onerror="XSS">

22 / 26

Page 28: XSSF : démontrer le danger des XSS - XSSFramework · JavaScript utilisé sur une majorité d’applications Pas de solution miracle côté client Sensibilisation des développeurs

Introduction Principes XSSFRAMEWORK Protections XSS Conclusion

Avenir des protections ? XSSF

Templates d’auto-échappements XSSÉchanges structurés entre client et serveur (XML, etc.)Facebook XHP, Google CSAS, OWASP JXTObligation d’adapter le projet au template utilisé !

JavaScript SandboxingUtilisation du JavaScript pour contrôler le JavaScriptContrôle des éléments tiers (iframes, scripts) lancés àl’intérieur d’une applicationGoogle CAJA, JSReg, ECMAScript 5

Évolution des protections dans les navigateursFiltres XSSSupports de nouvelles en-têtes HTTP(X-Content-Security-Policy sur Firefox)

23 / 26

Page 29: XSSF : démontrer le danger des XSS - XSSFramework · JavaScript utilisé sur une majorité d’applications Pas de solution miracle côté client Sensibilisation des développeurs

Introduction Principes XSSFRAMEWORK Protections XSS Conclusion

“Security is not a product : it’s a process. . .” XSSF

JavaScript utilisé sur une majorité d’applicationsPas de solution miracle côté clientSensibilisation des développeurs aux failles XSS (coût ?)Filtrage de toutes les entrées utilisateur côté serveurMise en place de protections à l’intérieur même desnavigateurs

24 / 26

Page 30: XSSF : démontrer le danger des XSS - XSSFramework · JavaScript utilisé sur une majorité d’applications Pas de solution miracle côté client Sensibilisation des développeurs

Introduction Principes XSSFRAMEWORK Protections XSS Conclusion

Première version mise en ligne il y a quelques moisNombreux retours de personnes ayant testé XSSFDeuxième version fin juin 2011

Gestion des échanges binairesInterface graphique pour les logsAméliorations et corrections de bugsEncore de gros problèmes pour l’échange de résultatsd’attaques en HTTPS et notamment pour l’utilisation duTunnel XSS

Intégration officielle Metasploit ?Hébergement sur Google Code ?

25 / 26

Page 31: XSSF : démontrer le danger des XSS - XSSFramework · JavaScript utilisé sur une majorité d’applications Pas de solution miracle côté client Sensibilisation des développeurs