Sécurité des applications PHP

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

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 of Sécurité des applications PHP

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