sécurité des applications php

28
Sécurité des applications PHP AFUP Paris, France 10 Novembre 2006

Upload: mervyn

Post on 19-Jan-2016

31 views

Category:

Documents


0 download

DESCRIPTION

Sécurité des applications PHP. AFUP Paris, France 10 Novembre 2006. Intervenant. Damien Seguy Editeur de Nexen.net Mission conseils pour nexenservices.com [email protected] http://www.nexen.net/conferences/. Agenda. Enjeux Sécurité PHP Sécurité des applications Web - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Sécurité des applications PHP

Sécurité des applications PHPAFUP Paris, France

10 Novembre 2006

Page 2: Sécurité des applications PHP

Intervenant• Damien Seguy

• Editeur de Nexen.net

• Mission conseils pour nexenservices.com

[email protected]

• http://www.nexen.net/conferences/

Page 3: Sécurité des applications PHP

Agenda• Enjeux

• Sécurité PHP

• Sécurité des applications Web

• Injections SQL

• XSS

• CSRF

Page 4: Sécurité des applications PHP

Risques encourus• Exploitation indues des ressources

• Destruction des données

• Publication de données confidentielles

• Détournement de votre site

• Usurpation d’identité

• Ridicule...

Page 5: Sécurité des applications PHP

Sécurité PHP

• Exploitation des ressources PHP

• Modifier un script en injectant du code PHP

Page 6: Sécurité des applications PHP

Configuration

• safe_mode, magic_quote,

• register_global

• register_long_arrays

• open_basedir

Page 7: Sécurité des applications PHP

Configuration• error_reporting, error_display,

html_display, log

• disable_functions, disable_class,

• enable_dl

• memory_limit, max_execution_time, max_post_size, max_upload_size

• expose_php

Page 8: Sécurité des applications PHP

Sécurité du code PHP• Éviter les inclusions dynamiques

• require(), include() + allow_url_fopen

• include($_GET['action'].".inc");

• PHP 5.2 : allow_url_open_include

• Téléchargement de fichiers PHP

• eval() is evil()!

• Assert()

Page 9: Sécurité des applications PHP

Sécurité des applications Web

• PHP interagit avec de nombreuses technologies

• PHP peut servir de relais pour attaquer

• une autre technologie

• un autre site

• Responsabilité du programmeur

Page 10: Sécurité des applications PHP

Injections SQL• Objectifs :

• contournement de clause WHERE

• SELECT login FROM USERS WHERE email = '$_GET['email']';

• SELECT login FROM USERS WHERE email = 'admin' OR '1'='1';

• déni de service

• corruption de tables

Page 11: Sécurité des applications PHP

Contrer les injections SQL

• Utilisation de conteneurs

• Commandes préparées• SELECT login FROM USERS WHERE

email = ?;

• Procédures stockées / Variables SQL

• Protection des données

• mysql_real_escape_string()

Page 12: Sécurité des applications PHP

Attaque XSS• Cross Site Scripting

• A l’origine, via les frames

• Une XSS est une attaque de l’application Web, qui ses utilisateurs

• Origine : la possibilité d’injecter du code dans une page HTML

Page 13: Sécurité des applications PHP

Attaque XSS

URL?XSS

HTML + XSS

Page 14: Sécurité des applications PHP

Risques des XSS

• Vol de cookie

• Usurpation d'identité

• Exécution de code JavaScript arbitraire

• Détournement du navigateur

Page 15: Sécurité des applications PHP

Les voies des XSS• echo $_GET['variable'];

• Balises HTML complètes• PHP<script src="http://www.site.com/hack.js" />

• <A HREF=http://66.102.7.147/>PHP</A>

• <A HREF="http://0x42.0x0000066.0x7.0x93/">PHP</A>

• <A HREF="http://%77%77%77%2E%67%6F%6F%67%6C%65%2E%63%6F%6D">PHP</A>

• >PHP<script src="//1113982867/hack.js" />

Page 16: Sécurité des applications PHP

Les voies des XSS• Attributs HTML

• <IMG SRC=javascript:alert('XSS')>

• <IMG SRC=JaVaScRiPt:alert('XSS')>

• <IMG SRC="jav ascript:alert('XSS');">

• <IMG SRC=javascript:alert( String.fromCharCode(88,83,83)) >

• <form action=”index.php”><xss!><a" method

Page 17: Sécurité des applications PHP

Défenses contre XSS

• Concepts à retenir

• Valider les données entrantes

• Suivre les données validées

• Protéger les données sortantes

• Évitez les “, ‘, < et >

• UTF-8, entité HTML, hexadécimal...

Page 18: Sécurité des applications PHP

Virus XSS?

• XSS sauvée en base de données

• XSS retardées

• XSS publiées

• XSS administrateur

Page 19: Sécurité des applications PHP

Propagation d'une XSS

Page 20: Sécurité des applications PHP

CSRF• Cross Site Request Forgery

• Exploite un site vulnérable pour qu’un utilisateur de ce site attaque un autre site

• Ou le même site!

• La seule protection de la victime est l’identification de l’utilisateur

• Aucun contact entre le pirate et le site

Page 21: Sécurité des applications PHP

Attaque CSRFURL?XSS

HTML + XSS

Victime

Exécution

Page 22: Sécurité des applications PHP

CSRF

• Site victime

• http://admin.site.com/efface.php?id=33

• Site vulnérable

• <img src=” http://admin.site.com/efface.php?id=33”>

Page 23: Sécurité des applications PHP

CSRF

• Il faut se méfier d’un utilisateur qu’on a déjà identifié

• Faire des identifications fréquentes

• Réduire les temps de sessions

• Exploiter GET / POST

Page 24: Sécurité des applications PHP

Questions?

Page 25: Sécurité des applications PHP
Page 26: Sécurité des applications PHP

Autres attaques

• Spam et emails

• Injections HTTP

• Injections LDAP, ABAP, etc

• Exécution de commandes

• Téléchargement de fichiers

• AJAX!

Page 27: Sécurité des applications PHP

Autres défenses

• Chiffrement et signatures

• Pot de miel pour attirer les abeilles

• CAPTCHA

• Gestion des mots de passe

Page 28: Sécurité des applications PHP

Sessions

• Sensibles aux XSS (vol de cookie)

• Fixation de session

• Attention aux hébergements partagés

• Changer l’identifiant régulièrement

• Relier la session au navigateur