TAS. Le Terrible Audit de Sécurité

Documents pareils
OWASP Open Web Application Security Project. Jean-Marc Robert Génie logiciel et des TI

Principales failles de sécurité des applications Web Principes, parades et bonnes pratiques de développement

CREATION WEB DYNAMIQUE

Revue de code Sécuritéou Test d Intrusion Applicatif. Quel est le plus efficace pour évaluer un niveau de sécurité applicatif?

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

Sécurité des sites Web Pas un cours un recueil du net. INF340 Jean-François Berdjugin

Tech-Evenings Sécurité des applications Web Sébastien LEBRETON

PHP 4 PARTIE : BASE DE DONNEES

PHP 5. La base de données MySql. A. Belaïd 1

Analyse statique de code dans un cycle de développement Web Retour d'expérience

SQL Parser XML Xquery : Approche de détection des injections SQL

laposte.net) Ministère de l'éducation nationale Atelier sécurité Rabat RALL 2007

Audit Sécurité vendredi 13 novembre

Attaques applicatives

Par l'exemple de. Laurent Destailleur

Modélisation PHP Orientée Objet pour les Projets Modèle MVC (Modèle Vue Contrôleur) Mini Framework

PySQLi. Framework d'injection de code SQL

Sommaire. Préface 1 : Pourquoi choisir Magento? Chapitre 1 : Magento, quésaco? Chapitre 2 : Quoi sous le capot?

La programmation orientée objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des données PHP/MySQL. Le langage PHP (2)

PHP. Bertrand Estellon. 26 avril Aix-Marseille Université. Bertrand Estellon (AMU) PHP 26 avril / 214

Hébergement de site web Damien Nouvel

SYSTÈMES D INFORMATIONS

Mysql. Les requêtes préparées Prepared statements

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013

Suppositions du tutoriel

Comment Connecter une Base de Données MySQL via un Driver JDBC Avec OpenOffice.org

Fonctionnalités.

Mysql avec EasyPhp. 1 er mars 2006

Stockage du fichier dans une table mysql:

Pratique et administration des systèmes

OZSSI NORD 4 JUIN LILLE. Conférence thématique: Sécurité des applications

WEB & DÉVELOPPEMENT LES BASES DU WEB LE LANGAGE HTML FEUILLES DE STYLES CSS HISTORIQUE D INTERNET ET DU WEB LES DIFFÉRENTS LANGAGES

2 Formation utilisateur

Sécurité des applications web. Daniel Boteanu

Découvrir les vulnérabilités au sein des applications Web

Le langage SQL pour Oracle - partie 1 : SQL comme LDD

Tom Pertsekos. Sécurité applicative Web : gare aux fraudes et aux pirates!

DÉPARTEMENT FORMATIONS 2015 FORMATION-RECRUTEMENT CATALOGUE. CONTACTS (+226)


Performance web. Mesurer. Analyser. Optimiser. Benjamin Lampérier - Benoît Goyheneche. RMLL Beauvais. 8 Juillet 2015

DÉVELOPPER DES APPLICATIONS WEB SÉCURISÉES

Comprendre et optimiser la base de données WordPress WP TECH 2014

Devenez un véritable développeur web en 3 mois!

PDO : PHP Data Object 1/13

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

Etude de la pertinence et de l'intérêt des appliances WAF (IPS web) à l'inria

Un montant fixe Un montant flexible, afin d adapter notre offre le plus juste possible à vos besoins et exigences. 899 htva

FileMaker Server 11. Publication Web personnalisée avec XML et XSLT

PHP. PHP et bases de données

FONCTIONNALITES PACK E-COMMERCE

Olivier Mondet

HTTP. Technologies du Web. Programmation Web côté serveur. Mastère spécialisé Management et nouvelles technologies, 16 novembre 2009

BTS S.I.O PHP OBJET. Module SLAM4. Nom du fichier : PHPRévisionObjetV2.odt Auteur : Pierre Barais

Démonstration de la mise en cache via HTML 5 sur iphone

Bases de données et sites WEB

OWASP Code Review Guide Revue de code. Paris The OWASP Foundation. Victor Vuillard

Squid. Olivier Aubert 1/19

SÉCURITÉ DES APPLICATIONS WEB LA SOLUTION D ANALYSE IDÉALE POUR LES APPLICATIONS WEB

SQL Historique

e-boutique Fonctions de base

Gestion centralisée d un réseau de sites discrets. Nicolas JEAN

Le langage SQL (première partie) c Olivier Caron

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes

1 Position du problème

CATALOGUE FORMATIONS DOMAINE Bases de données

SECURITY ADVISORY VULNERABILITE SUR LES DONNEES CLIENTS MAGENTO

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

Protocole SSH-2.0. Tuan-Tu, TRAN. Janvier 2009

Technologies du Web. Créer et héberger un site Web. Pierre Senellart. Page 1 / 26 Licence de droits d usage

DÉVELOPPER DES APPLICATIONS WEB SÉCURISÉES

3W Academy Programme de Formation Développeur Intégrateur web Total : 400 heures

Présentation du module Base de données spatio-temporelles

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

WordPress Référencement naturel (SEO) Optimiser. son référencement. Daniel Roch. Préface d Olivier Andrieu

Haute disponibilité des données

ADF 2009 Sécurisation d applications PHP/MySQL

PHP CLÉS EN MAIN. 76 scripts efficaces pour enrichir vos sites web. par William Steinmetz et Brian Ward

Vulnérabilités logicielles. Jean-Marc Robert


IFT3030 Base de données. Chapitre 1 Introduction

Méthode de Test. Pour WIKIROUTE. Rapport concernant les méthodes de tests à mettre en place pour assurer la fiabilité de notre projet annuel.

Traitement et exploration du fichier Log du Serveur Web, pour l extraction des connaissances: Web Usage Mining

PHP et les Bases de données - Généralités

Construire une application marketing Facebook sur la plateforme Windows Azure

L envoi d un formulaire par courriel. Configuration requise Mail Texte Mail HTML Check-list

AWS avancé. Surveiller votre utilisation d EC2

Failles des applications Web. Ce document est extrait du travail de diplôme de M. DIZON dans l état.

Mercredi 15 Janvier 2014

JSSI mars 2012 Laurent Butti Orange France DMGP/PORTAIL

Webinar. Découvrez Rubedo, la première solution CMS open-source tirant profit des atouts de Zend Framework et du NoSQL. avec la participation de

Maarch Framework 3 - Maarch. Tests de charge. Professional Services. 11, bd du Sud Est Nanterre

Zemma Mery BTS SIO SISR. Session Projets Personnels Encadrés

Optimiser ses attaques Web avec Burp Suite

SharePoint et la continuité de services

Ce qu'il faut savoir : La programmation orientée objet avec PHP. Le concept des bases de données relationnelles.

NFA016 : Introduction. Pour naviguer sur le Web, il faut : Naviguer: dialoguer avec un serveur web

Transcription:

TAS Le Terrible Audit de Sécurité

Ordre du jour Identifier les objectifs de sécurité Préparer un référentiel Vérifier la sécurité de son code

Qui parle? Damien Seguy Verbicruciste Alter Way Consulting L expertise à coeur ouvert damien.seguy@alterway.fr

Référentiel de sécurité

Référentiel de sécurité Rappels du métier Liste des risques et vecteurs Matrice de sécurité Liste des détails des points de sécurité Références

Référentiel sécurité Liste des risques Destruction, modification, lecture DOS, détournement, image Liste des vecteurs XSS, CSRF, injections, remplacement

Matrice de sécurité DOS Destruction Image XSS X CSRF X X X headers X X

Points de sécurité Nom du point Description Risques courus Exemples et anti-exemples Méthode de vérification dans le code : automatique, manuel, méthode

Références OWASP PCI HIPAA ISO-27002 ESSRII FISMA BASELII SOX

TOP 10 OWASP Injections XSS Session et identification Accès direct aux objets CSRF Configuration Stockage chiffré Restriction d URL Couche de transport Redirections

TOP 10 OWASP Injections XSS Session et identification Accès direct aux objets CSRF Configuration Stockage chiffré Restriction d URL Couche de transport Redirections

PIMCORE CMS PHP, MySQL Zend Framework Meilleur Projet OS Packt http://www.pimcore.org/

Méthode Prendre un point OWASP Trouver le point d entrée Fouiller le code source Valider manuellement le point

Injections

Injections Points d entrées SQL mysql_query, pdo->query query, execute, fetchall, delete, update, select Injection de variables getparams, getparam, $_GET/POST

Recherche Grep Rapide, efficace Trouve trop Tokenizer PHP, sémantique Implique le tri et la reconstruction

Tokenizer <?php print ("hello $world! ");?> [1] => Array ( [0] => 266 [1] => print [2] => 1 ) [2] => Array ( [0] => 370 [1] => [2] => 1 ) [3] => ( [4] => " [5] => Array ( [0] => 314 [1] => hello [2] => 1 ) [6] => Array ( [0] => 309 [1] => $world [2] => 1 ) [7] => Array ( [0] => 314 [1] =>! [2] => 1 ) [8] => " [9] => ) [10] => ; [1] => Array ( [0] => token PHP [1] => code PHP [2] => ligne ) [2] => "

$this->db->fetchall ("SHOW COLUMNS FROM documents_permissions") $this->db->update ("documents_permissions", $data, "id='". $this->model->getid(). "'"); $this->db->insert ("documents_permissions", array()); $this->db->delete ("documents_permissions", "id=". $this->model->getid()); $this->db->fetchrow ("SELECT * FROM dp WHERE id =?", $this->model->getid());

$data = json_decode($this->_getparam ("data")); if (!empty($data->id)) { $nodes[] = $data; } else { $nodes = $data; } //loop through store nodes = documents if (is_array($nodes)) { foreach ($nodes as $node) {

Bilan Pas de protections au niveau des requêtes SQL Transmission directe depuis le contrôleur au modèle Utilisation de valeurs sans contrôle

Bilan Pas de protections au niveau des requêtes SQL Transmission directe depuis le contrôleur au modèle Utilisation de valeurs sans contrôle

Sessions

Session et identification Utilisation des sessions standards Nécessite un arrimage plus fort Durée de vie courte recommandée User-Agent, IP, LANGAGE-ACCEPT, token aléatoire à mettre en session + via le Web

Bilan Utilisation standard des sessions PHP Pas de mécanisme spécifique d arrimage

Bilan Utilisation standard des sessions PHP Pas de mécanisme spécifique d arrimage

Redirections

Redirections Redirections mal validée Méthodes redirect ou _redirect Idéalement, interne au site, et fixe

Points d entrée $this->_redirect("/admin/"); $this->_redirect("/admin/login/"); $this->_redirect("/admin/login/?auth_failed=true&inactive=". $userinactive);

Bilan Validation systématique Bonne discipline

Bilan Validation systématique Bonne discipline

Accès direct aux objets

Accès direct aux objets

Accès direct aux objets http://www.elysee.fr/president/lesactualites/les-actualites.4.html http://www.decathlon.fr/tee-shirtmanches-longues-id_8152082.html Les identifiants sont des auto_increment...

Par fois, c est drôle http://www.decathlon.fr/ surtout-n-allez-pas-a-l-afupid_8152082.html

public function deleteaction() { $success = false; $document = Document::getById ($this->_getparam("id")); $document->getpermissionsforuser ($this->getuser()); if ($document->isallowed("delete")) { Element_Recyclebin_Item::create ($document, $this->getuser()); } else { Logger::debug //**** } $this->_helper->json(array ("success" => $success)); }

Accès direct aux objets Ne jamais exposer ses structures internes sur le site Web Faire une traduction, et stocker les vraies valeurs dans la session

Bilan Accès direct aux objets

Bilan Accès direct aux objets

Accès aux URL Les URL doivent bien porter des vérifications d accès (type ACL)

<?php class Admin_AssetController extends Pimcore_Controller_Action_Admin { public function init() { parent::init(); // check permissions $notrestrictedactions = array("get-im if (!in_array($this->_getparam("actio if (!$this->getuser()->isallowed(?> } } } $this->_redirect("/admin/logi die();

Accès aux URL 16 contrôleurs d administration 16 dérivation de Pimcore_Controller_Action_Admin 7 utilisations de /admin/login Vérifier l héritage ET parent::init

Bilan Pas de protection particulière Évite les outils ZF

Bilan Pas de protection particulière Évite les outils ZF

CSRF

CSRF Utilisation de Zend_Form et l anti-csrf? Non Test sur /admin/login Pas de vérification de token Sur deleteaction? Non Pas moyen de surveiller facilement

Bilan Pas de protection particulière Évite les outils ZF

Bilan Pas de protection particulière Évite les outils ZF

XSS

XSS Injection de code HTML/Javascript Etudier les Vues Etudier les contrôleurs Grosse partie Javascript de présentation : protection par encodage

die($document->getpath(). $document->getkey()); $this->removeviewrenderer(); $this->_helper->json( array("doctypes" => $doctypes)); echo Zend_Json::encode( array( "error" => "plugin_dir_error" )); readfile(pimcore_document_root. $image->getthumbnail($thumbnail));

Bilan Peu de suivi des conventions Zend Framework Des die Utilisation intensive de javascript Difficile à auditer

Bilan Peu de suivi des conventions Zend Framework Des die Utilisation intensive de javascript Difficile à auditer

Injections CSRF XSS URL Sessions Redirections Accès direct

Récapitulatif Rédigez un référentiel Convertissez-le en code à éviter / recommander Vérifiez le vous-même

Merci