sécurité des applications php
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 PresentationTRANSCRIPT
![Page 1: Sécurité des applications PHP](https://reader035.vdocument.in/reader035/viewer/2022062519/56814ef2550346895dbc8100/html5/thumbnails/1.jpg)
Sécurité des applications PHPAFUP Paris, France
10 Novembre 2006
![Page 2: Sécurité des applications PHP](https://reader035.vdocument.in/reader035/viewer/2022062519/56814ef2550346895dbc8100/html5/thumbnails/2.jpg)
Intervenant• Damien Seguy
• Editeur de Nexen.net
• Mission conseils pour nexenservices.com
• http://www.nexen.net/conferences/
![Page 3: Sécurité des applications PHP](https://reader035.vdocument.in/reader035/viewer/2022062519/56814ef2550346895dbc8100/html5/thumbnails/3.jpg)
Agenda• Enjeux
• Sécurité PHP
• Sécurité des applications Web
• Injections SQL
• XSS
• CSRF
![Page 4: Sécurité des applications PHP](https://reader035.vdocument.in/reader035/viewer/2022062519/56814ef2550346895dbc8100/html5/thumbnails/4.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062519/56814ef2550346895dbc8100/html5/thumbnails/5.jpg)
Sécurité PHP
• Exploitation des ressources PHP
• Modifier un script en injectant du code PHP
![Page 6: Sécurité des applications PHP](https://reader035.vdocument.in/reader035/viewer/2022062519/56814ef2550346895dbc8100/html5/thumbnails/6.jpg)
Configuration
• safe_mode, magic_quote,
• register_global
• register_long_arrays
• open_basedir
![Page 7: Sécurité des applications PHP](https://reader035.vdocument.in/reader035/viewer/2022062519/56814ef2550346895dbc8100/html5/thumbnails/7.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062519/56814ef2550346895dbc8100/html5/thumbnails/8.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062519/56814ef2550346895dbc8100/html5/thumbnails/9.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062519/56814ef2550346895dbc8100/html5/thumbnails/10.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062519/56814ef2550346895dbc8100/html5/thumbnails/11.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062519/56814ef2550346895dbc8100/html5/thumbnails/12.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062519/56814ef2550346895dbc8100/html5/thumbnails/13.jpg)
Attaque XSS
URL?XSS
HTML + XSS
![Page 14: Sécurité des applications PHP](https://reader035.vdocument.in/reader035/viewer/2022062519/56814ef2550346895dbc8100/html5/thumbnails/14.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062519/56814ef2550346895dbc8100/html5/thumbnails/15.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062519/56814ef2550346895dbc8100/html5/thumbnails/16.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062519/56814ef2550346895dbc8100/html5/thumbnails/17.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062519/56814ef2550346895dbc8100/html5/thumbnails/18.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062519/56814ef2550346895dbc8100/html5/thumbnails/19.jpg)
Propagation d'une XSS
![Page 20: Sécurité des applications PHP](https://reader035.vdocument.in/reader035/viewer/2022062519/56814ef2550346895dbc8100/html5/thumbnails/20.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062519/56814ef2550346895dbc8100/html5/thumbnails/21.jpg)
Attaque CSRFURL?XSS
HTML + XSS
Victime
Exécution
![Page 22: Sécurité des applications PHP](https://reader035.vdocument.in/reader035/viewer/2022062519/56814ef2550346895dbc8100/html5/thumbnails/22.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062519/56814ef2550346895dbc8100/html5/thumbnails/23.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062519/56814ef2550346895dbc8100/html5/thumbnails/24.jpg)
Questions?
![Page 25: Sécurité des applications PHP](https://reader035.vdocument.in/reader035/viewer/2022062519/56814ef2550346895dbc8100/html5/thumbnails/25.jpg)
![Page 26: Sécurité des applications PHP](https://reader035.vdocument.in/reader035/viewer/2022062519/56814ef2550346895dbc8100/html5/thumbnails/26.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062519/56814ef2550346895dbc8100/html5/thumbnails/27.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062519/56814ef2550346895dbc8100/html5/thumbnails/28.jpg)
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