SlideShare une entreprise Scribd logo
1  sur  75
Webinar
TOP 10 OWASP et ses vulnérabilités
Jérôme Thémée
Jérôme Thémée
Jérôme Thémée
BIO :
● Consultant/formation en sécurité
de l’information
● Co-fondateur du cursus Expert(e)
sécurité Digitale (Bac+5)
● Membre du Club EBIOS
● Certifié CISM, ISO 27005, ITIL,
MCT, MCSA
Sommaire
● Présentation de l’OWASP TOP 10 et de son fonctionnement
● Les injections XXE, XPATH, LDAP, SQL + démonstration
● Violation de Gestion d'authentification et de Session + démonstration
● Les XSS, Stored, reflected et DOM
● Références directes non sécurisées à un objet + démonstration
● Mauvaise configuration sécurité + Démonstration
● Exposition de données sensibles + démonstration
● Manque de contrôle d’accès au niveau fonctionnel + démonstration
● Cross Site Request Forgery (CSRF) + démonstration
● Utilisation de composants avec des vulnérabilités connues + démonstration
● Redirections et Renvois Non Validés + démonstration
● Bonus (démonstration avec Burp suite)
Jérôme Thémée
Qu’est que l’OWASP et son TOP 10 ?
● Qu’est ce que l’Open Web Application Security Project ?
● Qu’est ce que le TOP 10 OWASP ?
Jérôme Thémée
Le constat en 2015
Jérôme Thémée
Fonctionnement du TOP 10 OWASP
Jérôme Thémée
Quel est mon risque?
Jérôme Thémée
Rappels des fondamentaux WEB
Jérôme Thémée
Rappels des fondamentaux HTTP
Jérôme Thémée
Natif, Framework, CMS
Jérôme Thémée
Présentation des risques & vulnérabilités
Jérôme Thémée
1 - Les injections
Jérôme Thémée
Les types d’injections :
Les injections
● XPATH
● XXE
● NoSql
● Code
● LDAP
● SQL
● etc
Jérôme Thémée
+ Évaluation du risque
Jérôme Thémée
Jérôme Thémée
Typologie de l’attaque
Une injection SQL est un type d'exploitation d'une faille de sécurité d'une application interagissant avec une base de
données, en injectant une requête SQL non prévue par le système et pouvant compromettre sa sécurité.
Prenons un exemple simple d’un script d’authentification:
Injection SQL
Jérôme Thémée
Démonstration avec DVWA :
Imaginons maintenant l’injection suivante :
Injection SQL
Jérôme Thémée
Injection SQL
Jérôme Thémée
Démonstration
avec DVWA
Se protéger :
N° Méthode Description
1 Framework Utiliser un framework pour le développement, de préférence avec un ORM (mapping objet-
relationnel)
2 Préparer vos requêtes Désinfecter (sanitized) les requêtes envoyées en base de données avec des méthodes telles que :
● JAVA - PreparedStatement()
● .NET - SqlCommand() ou OleDbCommand()
● PHP - utiliser PDO avec la méthode prepare() et bindParam() pour les paramètres
contenant des entiers (integer)
Voici un exemple en PHP d’un requête préparée contre les injections SQL :
if(is_numeric( $id )) {
$data = $db->prepare( 'SELECT nom, tel FROM users WHERE user = (:id) LIMIT 1;' );
$data->bindParam( ':id', $id, PDO::PARAM_INT );
$data->execute();
}
3 Réécriture d’URL L’utilisation de la réécriture d'URL permet de compliquer fortement la tâche au cybercriminel et
s’avère être une des protections contre les injections SQL.
4 WAF Installation d’un Web Application Firewall
2 - Violation de Gestion d'authentification et de Session
Jérôme Thémée
+ Violation de Gestion d'authentification et de Session
Jérôme Thémée
● Faiblesses des mot de passes
Parmi les défauts de conception d’une application WEB, l’autorisation des mots de passe dit
“faible” est courante. Beaucoup de sites WEB contenant des informations sensibles, laisse le
choix à l’utilisateur d’utiliser des mots de passe simples, voire très banaux comme des noms
de personnages de fictions, des dates de naissances, etc. une personne célèbre telle que
Mark Zuckerberg a vu ses comptes Twitter et Pinterest piratés en 2016 car son mot de passe
était “Dadada”.
Violation de gestion d’authentification
Jérôme Thémée
Violation de gestion d’authentification
Jérôme Thémée
Démonstration
avec Cupp.py et
Xhydra
● Se protéger ?
Violation de gestion d’authentification
N° Méthode Description
1 Mot de passe
complexe
Lors de la création de compte d’utilisateur, il est nécessaire de forcer celui-ci à
utiliser un mot de passe complexe (majuscule, minuscule, chiffre, caractère
complexe). Cette vérification doit s’effectuer côté client et serveur. Voici un
plugin jQuery très bien réalisé pour la partie client :
http://jquerycards.com/forms/inputs/strength-js/
2 Jeton La création d’un jeton sur la page d’authentification permet de rendre la tâche
plus compliquée pour les cybercriminels même s’il est possible d’absorber
celui-ci, cette méthode est déjà un premier rempart.
3 Captcha Suivant les exigences en matière de sécurité, si le token n'est pas suffisant, le
Captcha reste un moyen efficace pour les attaques par dictionnaire ou brute
force. Tous les captchas ne se valent pas, google propose un service de
Captcha (reCAPTCHA) simple et efficace. Pour plus d’informations sur
reCAPTCHA : https://www.google.com/recaptcha/intro/index.html
Jérôme Thémée
● Le vol de session (session hijacking)
Violation de gestion d’authentification
Jérôme Thémée
Violation de gestion d’authentification
Jérôme Thémée
Démonstration
avec Ettercap et
DVWA
● Se protéger ?
Violation de gestion d’authentification
N° Méthode Description
1 Ajout HTTPS Un moyen efficace est l’utilisation exclusive du protocole
HTTPS sur un serveur WEB. Le protocole se démocratise et
la plupart des hébergeurs le propose.
La Linux foundation propose des certificats reconnus et
gratuits, disponibles à cette adresse :https://letsencrypt.org/
2 Flag secure
cookie
Activer la fonctionnalité sur le serveur WEB flag secure
cookie déjà introduite lors du chapitre précédent
(cf.Panorama de la sécurité WEB - les sécurités des
navigateurs et serveurs WEB). Cette fonctionnalité permet de
transmettre les identifiants de session au serveur seulement
sous un protocole sécurisé (HTTPS). Ce qui permet de
réduire les attaques de l’homme du milieu.
Jérôme Thémée
● Autres vulnérabilités :
▹ Faiblesses dans la conception des sessions
▹ Mot de passe encoder en Base de données
▹ Aucun salage des mots de passe
▹ Etc ...
Violation de gestion d’authentification
Jérôme Thémée
3 - Cross-site scripting:
Jérôme Thémée
+ Évaluation du risque
Jérôme Thémée
XSS PERMANENT
Jérôme Thémée
XSS REFLECTED
Jérôme Thémée
XSS DOM
Jérôme Thémée
XSS
XSS DOM :
La vulnérabilité XSS DOM consiste à utiliser une entrée telle qu’un user-agent, URL, referrer
HTTP,... afin d’y injecter un code JavaScript malicieux (XSS) qui sera interprété à l’intérieur des
fonctions liées au DOM. Voici un exemple de code vulnérable :
<script>
document.write("<b>URL Courante<b> : " + document.baseURI);
</script>
Le script ci-dessous permet d’afficher l’URL courante. Voici un exemple d’utilisation d’un XSS
DOM :
http://www.exemple.com/test.html#<script>alert(1)</script>
Jérôme Thémée
XSS
Jérôme Thémée
Démonstration
avec DVWA ET
BEEF
4 - Références directes non sécurisées à un objet
Jérôme Thémée
+ Références directes non sécurisées à un objet
Jérôme Thémée
Références directes non sécurisées à un objet
Jérôme Thémée
Références directes non sécurisées à un objet
Jérôme Thémée
Démonstration
avec bWAPP
Références directes non sécurisées à un objet
Jérôme Thémée
Se protéger :
N° Méthode Description
1 Contrôle des
références
Afin de se protéger contre ce genre d’attaque, il est nécessaire de
mettre des contrôles stricts sur les références utilisateurs,
l’utilisateur. Une pattern permettant de vérifier si l’utilisateur est bien
le propriétaire de l’objet peut s’avérer très utile.
2 champs
cachés
Protéger les références avec la technique 1 présentée sur la
colonne ci-dessus pour les champs cachés. Même ceux non
affichés dans le DOM. Les techniques Data biding ou Mass
assignment vulnerability ont la fonction d’envoyer des requêtes
avec des paramètres aléatoires essayant de trouver des champs
cachés et compromettre l’application.
3 Framework Les framework actuels bien utilisés comportent une gestion des
rôles sur les applications efficaces. Encore une fois ne pas hésiter à
se servir de ce type d’outil pour développer.
5 - Mauvaise configuration Sécurité
Jérôme Thémée
+ Mauvaise configuration Sécurité
Jérôme Thémée
De façon à comprendre le risque voici une liste de scénarios possibles :
▸ Le cybercriminel provoque une erreur sur l’application ce qui lui permet d’obtenir des
informations importantes pour corrompre l’application.
▸ Le serveur hébergeant l'application a des utilisateurs et mot de passe par défaut sur les
services SQL, SSH, FTP, Apache, IIS, etc.
▸ Une application faite avec un framework est “poussée” en production mais la partie pré-
production avec des identifiants par défaut est aussi en production.
▸ Le serveur WEB liste les répertoires de type index of et permet à un attaquant de
télécharger des fichiers et obtenir des informations.
Mauvaise configuration sécurité
Jérôme Thémée
Mauvaise configuration sécurité
Jérôme Thémée
Démonstration
avec Shodan
▸ Il manque des mises à jour de sécurité sur les serveurs WEB et de stockage de données.
▸ Le serveur WEB autorise les requêtes HTTP de type TRACE ce qui permet à l’attaquant d’exploiter une
vulnérabilités XST (Cross Site Tracing).
▸ Le serveur de base de données utilise le même utilisateur pour toutes les bases de données ce qui permet
à un attaquant lors d’une injection de pivoter entre les bases.
▸ Mauvaise configuration du fichier Robots.txt permettant de récupérer des informations sur l'architecture de
l’application.
Se protéger :
Utiliser le hardening, pour aller plus loin sur le hardening, voici quelques liens (en Anglais) :
▸ Recommandations ASVS : https://www.owasp.org/index.php/ASVS, chapitre 12.
▸ Cheat sheet OWASP sur la configuration sécurisée
https://www.owasp.org/index.php/Insecure_Configuration_Management
▸ Hardening pour serveur Apache : https://geekflare.com/apache-web-server-hardening-security/
Mauvaise configuration sécurité
Jérôme Thémée
6 - Exposition de données sensibles
Jérôme Thémée
+ Exposition de données sensibles
Jérôme Thémée
Scénario :
▸ Utilisation de protocole de transport de données sécurisées faibles (SSL V2).
▸ Exposition des clés de chiffrements dans le code “Front”
▸ Pas de désactivation de l’attribut autocomplete dans les formulaires collectant des données sensibles.
Exposition de données sensibles
Jérôme Thémée
Exposition de données sensibles
Jérôme Thémée
Démonstration
avec les dork
▸ Stockage de données sensibles sur le serveur WEB sans rapport avec l’application.
▸ Utilisation de données sensibles à l’utilisateur dans les localStorage, SessionStorage, indexDB HTML5.
▸ Utilisation de cache dans les en-têtes HTTP pour la transition de données sensibles.
Se protéger :
Pour aller plus loin dans les contrôles de sécurité des données sensibles (en anglais) :
▸ Recommandations ASVS : https://www.owasp.org/index.php/ASVS, chapitre 7,9,10.
▸ Owasp Cryptographic Storage Cheat Sheet : https://www.owasp.org/index.php/Cryptographic_Storage_Cheat_Sheet
▸ MITRE CWE Weak encryption : http://cwe.mitre.org/data/definitions/326.html
Exposition de données sensibles
Jérôme Thémée
7- Manque de contrôle d’accès au niveau fonctionnel
Jérôme Thémée
+ Manque de contrôle d’accès au niveau fonctionnel
Jérôme Thémée
Manque de contrôle d’accès au niveau fonctionnel
Jérôme Thémée
Server Side Request Forgery (SSRF) :
Manque de contrôle d’accès au niveau fonctionnel
Jérôme Thémée
Démonstration
avec Facebook
Manque de contrôle d’accès au niveau fonctionnel
Jérôme Thémée
Se protéger :
N° Méthode Description
1 Retour
d’erreurs
Contrôler au maximum les retours d’erreurs (try and catch).
2 Désactiver les
protocoles
non
nécessaires
A l’aide d’une Whitelist, autoriser les protocoles nécessaires
(HTTP, HTTPS) et interdire implicitement les protocoles non
nécessaires. Ceci peut se faire sur le serveur WEB ou bien le
code lui-même.
8- Cross-site request forgery
Jérôme Thémée
+ Évaluation du risque
Jérôme Thémée
CSRF
Jérôme Thémée
CSRF
Jérôme Thémée
Démonstration
avec bWAPP
CSRF
● Se protéger :
N° Méthode Description
1 Jeton CSRF Un des meilleurs moyens pour sécuriser les CSRF est l’insertion dans les
formulaires d’un jeton unique attribué au tout début de la navigation
utilisateur. De ce fait, si une page extérieure essaye de soumettre un
formulaire alors elle devra d’abord passer par la page d’accueil ou bien
une autre page de l’application ainsi en respectant le chaînage d’une
navigation sur un site WEB.
Voici un exemple en Java (jeton dans le formulaire) :
<form action=”/transfert.do” method=”post”>
<input type=”hidden” name=”tokenCSRF”
value=”E4ODRjN2Q2OWY4NmQwODNTlhMmZlYWE”>
</form>
Pour plus d’informations sur la mise en place de A à Z de jeton CSRF, voici un lien sur PHP CSRF
GUARD de L’OWASP (en anglais) : https://www.owasp.org/index.php/PHP_CSRF_Guard
Jérôme Thémée
CSRF
● Se protéger :
2 Captcha Un Captcha peut s'avérer efficace pour contrer les CSRF. En particulier les
Captchas google dont l'efficacité est à la hauteur de la facilité d’installation.
3 Framework Les Frameworks modernes automatisent et initialisent les jetons CSRF
dans les formulaires des applications.
Jérôme Thémée
9 - Utilisation de composants avec des vulnérabilités
connues
Jérôme Thémée
+ Utilisation de composants avec des vulnérabilités
connues
Jérôme Thémée
Utilisation de composants avec des vulnérabilités
connues
Jérôme Thémée
● Wpscan :
Utilisation de composants avec des vulnérabilités
connues
● Nikto :
Jérôme Thémée
Utilisation de composants avec des vulnérabilités
connues
● OpenVas :
Jérôme Thémée
Utilisation de composants avec des vulnérabilités
connues
● Qualys SSL Labs:
L’éditeur Qualys a développé et mis à disposition une solution en ligne dont le but est de vérifier la
sécurité des chiffrements SSL/TLS (HTTPS) d’un serveur WEB ou d’un navigateur. Le chiffrement
étant partagé entre ces deux éléments, Qualys permet de ce fait, de faire la vérification de bout en
bout de la chaîne de chiffrement entre l’utilisateur et le service WEB. La solution est disponible à
cette adresse : https://www.ssllabs.com/. La solution est très simple, sur la page d’accueil un menu
propose de scanner votre serveur ou un client, choisir Test your server.
Utilisation de composants avec des vulnérabilités
connues
Jérôme Thémée
Démonstration
avec Nmap et
Metasploit
Utilisation de composants avec des vulnérabilités
connues
● Se protéger :
N° Méthode Description
1 Mise à jour Il est primordial de bien gérer les mises à jour sur les
bibliothèques, les plugins, les serveurs, les systèmes
d’exploitation autour de votre application. La plupart des CMS
proposent des plugins ou options pour la mise à jour du coeur
de l’application automatique. Des notifications sont envoyées
par email quand un plugin n’est plus à jour, veiller à bien
surveiller celles-ci.
2 Veille en
sécurité
S'inscrire à des flux RSS comme celui d’exploit-db.com
(https://www.exploit-db.com/rss.xml) ou bien à une mailing
list comme celle de http://www.securityfocus.com/ permet
d’avoir un rapport journalier sur les vulnérabilités dévoilées et
ainsi vérifier si l’on est concerné par celle-ci.
10 - Redirections et Renvois Non Validés
Jérôme Thémée
+ Redirections et Renvois Non Validés
Jérôme Thémée
Les redirections et les renvois non validés sont une vulnérabilité profitant d’une faiblesse dans le
code dont l’objectif est de rediriger, router l’utilisateur sur une page malveillante ou administrative
du site WEB. Il est courant de voir des redirections d’URL interne sur la plupart des applications
utilisant un modèle MVC (model View Controller).
Redirections et Renvois Non Validés
Démonstration :
● Sur l’application bWAPP, se diriger vers la page : Unvalidated Redirects & Forwards(2).
● La page s’affiche avec un lien click here to go back to the portal. A l’aide d’un clic droit sur le
lien sélectionner l’option proposé Copy Link Location.
● Copier ensuite le lien sur la barre d’adresse, l’URL suivante s’affiche :
http://localhost/eni/bWAPP/unvalidated_redir_fwd_2.php?ReturnUrl=portal.php
● Vérifier si le paramètre ReturnUrl= est fiable, pour ce faire remplacer=portal.php par google.fr
● La page redirige vers google.
Utilisation de composants avec des vulnérabilités
connues
● Se protéger :
N° Méthode Description
1 pas de
redirection
éviter au maximum les redirections en dur sur une application.
Si cela n’est pas possible, utiliser une whitelist avec des
identifiants pour chaque item.
Exemple :
$redirect = array(
1=>’http://www.editions-eni.fr/’,
2=>’https://google.fr’,
3=>’https://duckduckgo.com/’);
if($redirect ==1){
header(location: $redirect[0])}
1 Utiliser un
framework
La plupart des frameworks actuels utilisent bien les
redirections.
Aller plus loin
Jérôme Thémée
Merci de votre attention
Jérôme Thémée

Contenu connexe

Tendances

Tendances (20)

Tp n 4 linux
Tp n 4 linuxTp n 4 linux
Tp n 4 linux
 
Gestion des vulnérabilités dans l'IoT
Gestion des vulnérabilités dans l'IoTGestion des vulnérabilités dans l'IoT
Gestion des vulnérabilités dans l'IoT
 
Breach and attack simulation tools
Breach and attack simulation toolsBreach and attack simulation tools
Breach and attack simulation tools
 
Alphorm.com Formation Hacking et Sécurité 2020 (3of4) : Attaques Réseaux, Sys...
Alphorm.com Formation Hacking et Sécurité 2020 (3of4) : Attaques Réseaux, Sys...Alphorm.com Formation Hacking et Sécurité 2020 (3of4) : Attaques Réseaux, Sys...
Alphorm.com Formation Hacking et Sécurité 2020 (3of4) : Attaques Réseaux, Sys...
 
Sensibilisation sur la cybersécurité
Sensibilisation sur la cybersécuritéSensibilisation sur la cybersécurité
Sensibilisation sur la cybersécurité
 
Mise en place d'une Plateforme de Supervision et de Détection d'Intrusion Sys...
Mise en place d'une Plateforme de Supervision et de Détection d'Intrusion Sys...Mise en place d'une Plateforme de Supervision et de Détection d'Intrusion Sys...
Mise en place d'une Plateforme de Supervision et de Détection d'Intrusion Sys...
 
Sécurité informatique - Etat des menaces
Sécurité informatique - Etat des menacesSécurité informatique - Etat des menaces
Sécurité informatique - Etat des menaces
 
Piratage informatique
Piratage informatiquePiratage informatique
Piratage informatique
 
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
 
Sécurité des Applications Web avec Json Web Token (JWT)
Sécurité des Applications Web avec Json Web Token (JWT)Sécurité des Applications Web avec Json Web Token (JWT)
Sécurité des Applications Web avec Json Web Token (JWT)
 
Cours sécurité 2_asr
Cours sécurité 2_asrCours sécurité 2_asr
Cours sécurité 2_asr
 
Ch_1 - Généralités sur la sécurité informatique.pdf
Ch_1 - Généralités sur la sécurité informatique.pdfCh_1 - Généralités sur la sécurité informatique.pdf
Ch_1 - Généralités sur la sécurité informatique.pdf
 
Ethical Hacking n VAPT presentation by Suvrat jain
Ethical Hacking n VAPT presentation by Suvrat jainEthical Hacking n VAPT presentation by Suvrat jain
Ethical Hacking n VAPT presentation by Suvrat jain
 
Support de cours Spring M.youssfi
Support de cours Spring  M.youssfiSupport de cours Spring  M.youssfi
Support de cours Spring M.youssfi
 
La Sécurité informatiques
La Sécurité informatiquesLa Sécurité informatiques
La Sécurité informatiques
 
Siem OSSIM
Siem OSSIMSiem OSSIM
Siem OSSIM
 
INITIATION A LA SÉCURITÉ INFORMATIQUE.pptx
INITIATION A LA SÉCURITÉ INFORMATIQUE.pptxINITIATION A LA SÉCURITÉ INFORMATIQUE.pptx
INITIATION A LA SÉCURITÉ INFORMATIQUE.pptx
 
Vulnérabilité des sites web
Vulnérabilité des sites webVulnérabilité des sites web
Vulnérabilité des sites web
 
Mise en place d'un reseau securise par Cisco ASA
Mise en place d'un reseau securise par Cisco ASAMise en place d'un reseau securise par Cisco ASA
Mise en place d'un reseau securise par Cisco ASA
 
Mise en place d’un système de détection
Mise en place d’un système de détectionMise en place d’un système de détection
Mise en place d’un système de détection
 

Similaire à Webinaire : sécurité informatique sur le web - Jérôme Thémée

Securitedesapplications 091011120426-phpapp02
Securitedesapplications 091011120426-phpapp02Securitedesapplications 091011120426-phpapp02
Securitedesapplications 091011120426-phpapp02
Asma Messaoudi
 
Owasp top 10 2010 Resist toulouse
Owasp top 10   2010  Resist toulouseOwasp top 10   2010  Resist toulouse
Owasp top 10 2010 Resist toulouse
Sébastien GIORIA
 
Conférence #nwxtech2 : Sécurité web/PHP par Maxime Mauchaussée
Conférence #nwxtech2 : Sécurité web/PHP par Maxime MauchausséeConférence #nwxtech2 : Sécurité web/PHP par Maxime Mauchaussée
Conférence #nwxtech2 : Sécurité web/PHP par Maxime Mauchaussée
Normandie Web Xperts
 
Sécurité des Applications WEB -LEVEL1
 Sécurité des Applications WEB-LEVEL1 Sécurité des Applications WEB-LEVEL1
Sécurité des Applications WEB -LEVEL1
Tarek MOHAMED
 

Similaire à Webinaire : sécurité informatique sur le web - Jérôme Thémée (20)

Securitedesapplications 091011120426-phpapp02
Securitedesapplications 091011120426-phpapp02Securitedesapplications 091011120426-phpapp02
Securitedesapplications 091011120426-phpapp02
 
Epitech securite-2012.key
Epitech securite-2012.keyEpitech securite-2012.key
Epitech securite-2012.key
 
Securité des applications web
Securité des applications webSecurité des applications web
Securité des applications web
 
Securité web
Securité webSecurité web
Securité web
 
La Sécurité Sur Le Web
La Sécurité Sur Le WebLa Sécurité Sur Le Web
La Sécurité Sur Le Web
 
Owasp top 10 2010 Resist toulouse
Owasp top 10   2010  Resist toulouseOwasp top 10   2010  Resist toulouse
Owasp top 10 2010 Resist toulouse
 
Introduction à la sécurité des applications web avec php [fr]
Introduction à la sécurité des applications web avec php [fr]Introduction à la sécurité des applications web avec php [fr]
Introduction à la sécurité des applications web avec php [fr]
 
Conférence #nwxtech2 : Sécurité web/PHP par Maxime Mauchaussée
Conférence #nwxtech2 : Sécurité web/PHP par Maxime MauchausséeConférence #nwxtech2 : Sécurité web/PHP par Maxime Mauchaussée
Conférence #nwxtech2 : Sécurité web/PHP par Maxime Mauchaussée
 
Tuto atelier securisation_site_web
Tuto atelier securisation_site_webTuto atelier securisation_site_web
Tuto atelier securisation_site_web
 
Securite web is_ima
Securite web is_imaSecurite web is_ima
Securite web is_ima
 
La sécurité avec SQL Server 2012
La sécurité avec SQL Server 2012La sécurité avec SQL Server 2012
La sécurité avec SQL Server 2012
 
Introduction vulnérabilité web
Introduction vulnérabilité webIntroduction vulnérabilité web
Introduction vulnérabilité web
 
Sécurité des Applications WEB -LEVEL1
 Sécurité des Applications WEB-LEVEL1 Sécurité des Applications WEB-LEVEL1
Sécurité des Applications WEB -LEVEL1
 
OpenSSO Aquarium Paris
OpenSSO Aquarium ParisOpenSSO Aquarium Paris
OpenSSO Aquarium Paris
 
Sécurité MySQL
Sécurité MySQLSécurité MySQL
Sécurité MySQL
 
Durcissement de code - Sécurité Applicative Web
Durcissement de code - Sécurité Applicative WebDurcissement de code - Sécurité Applicative Web
Durcissement de code - Sécurité Applicative Web
 
2019-06-12 aOS Aix Marseille - B4 - Gestion des comptes à privilèges - Jean-P...
2019-06-12 aOS Aix Marseille - B4 - Gestion des comptes à privilèges - Jean-P...2019-06-12 aOS Aix Marseille - B4 - Gestion des comptes à privilèges - Jean-P...
2019-06-12 aOS Aix Marseille - B4 - Gestion des comptes à privilèges - Jean-P...
 
Systemes authentification
Systemes authentificationSystemes authentification
Systemes authentification
 
White paper: SSTIC 2008: Advanced CSRF
White paper: SSTIC 2008: Advanced CSRFWhite paper: SSTIC 2008: Advanced CSRF
White paper: SSTIC 2008: Advanced CSRF
 
LemonLDAP::NG et le support SAML2 (RMLL 2010)
LemonLDAP::NG et le support SAML2 (RMLL 2010)LemonLDAP::NG et le support SAML2 (RMLL 2010)
LemonLDAP::NG et le support SAML2 (RMLL 2010)
 

Webinaire : sécurité informatique sur le web - Jérôme Thémée

  • 1. Webinar TOP 10 OWASP et ses vulnérabilités Jérôme Thémée
  • 2. Jérôme Thémée Jérôme Thémée BIO : ● Consultant/formation en sécurité de l’information ● Co-fondateur du cursus Expert(e) sécurité Digitale (Bac+5) ● Membre du Club EBIOS ● Certifié CISM, ISO 27005, ITIL, MCT, MCSA
  • 3. Sommaire ● Présentation de l’OWASP TOP 10 et de son fonctionnement ● Les injections XXE, XPATH, LDAP, SQL + démonstration ● Violation de Gestion d'authentification et de Session + démonstration ● Les XSS, Stored, reflected et DOM ● Références directes non sécurisées à un objet + démonstration ● Mauvaise configuration sécurité + Démonstration ● Exposition de données sensibles + démonstration ● Manque de contrôle d’accès au niveau fonctionnel + démonstration ● Cross Site Request Forgery (CSRF) + démonstration ● Utilisation de composants avec des vulnérabilités connues + démonstration ● Redirections et Renvois Non Validés + démonstration ● Bonus (démonstration avec Burp suite) Jérôme Thémée
  • 4. Qu’est que l’OWASP et son TOP 10 ? ● Qu’est ce que l’Open Web Application Security Project ? ● Qu’est ce que le TOP 10 OWASP ? Jérôme Thémée
  • 5. Le constat en 2015 Jérôme Thémée
  • 6. Fonctionnement du TOP 10 OWASP Jérôme Thémée
  • 7. Quel est mon risque? Jérôme Thémée
  • 8. Rappels des fondamentaux WEB Jérôme Thémée
  • 9. Rappels des fondamentaux HTTP Jérôme Thémée
  • 11. Présentation des risques & vulnérabilités Jérôme Thémée
  • 12. 1 - Les injections Jérôme Thémée
  • 13. Les types d’injections : Les injections ● XPATH ● XXE ● NoSql ● Code ● LDAP ● SQL ● etc Jérôme Thémée
  • 14. + Évaluation du risque Jérôme Thémée
  • 16. Une injection SQL est un type d'exploitation d'une faille de sécurité d'une application interagissant avec une base de données, en injectant une requête SQL non prévue par le système et pouvant compromettre sa sécurité. Prenons un exemple simple d’un script d’authentification: Injection SQL Jérôme Thémée
  • 17. Démonstration avec DVWA : Imaginons maintenant l’injection suivante : Injection SQL Jérôme Thémée
  • 19. Se protéger : N° Méthode Description 1 Framework Utiliser un framework pour le développement, de préférence avec un ORM (mapping objet- relationnel) 2 Préparer vos requêtes Désinfecter (sanitized) les requêtes envoyées en base de données avec des méthodes telles que : ● JAVA - PreparedStatement() ● .NET - SqlCommand() ou OleDbCommand() ● PHP - utiliser PDO avec la méthode prepare() et bindParam() pour les paramètres contenant des entiers (integer) Voici un exemple en PHP d’un requête préparée contre les injections SQL : if(is_numeric( $id )) { $data = $db->prepare( 'SELECT nom, tel FROM users WHERE user = (:id) LIMIT 1;' ); $data->bindParam( ':id', $id, PDO::PARAM_INT ); $data->execute(); } 3 Réécriture d’URL L’utilisation de la réécriture d'URL permet de compliquer fortement la tâche au cybercriminel et s’avère être une des protections contre les injections SQL. 4 WAF Installation d’un Web Application Firewall
  • 20. 2 - Violation de Gestion d'authentification et de Session Jérôme Thémée
  • 21. + Violation de Gestion d'authentification et de Session Jérôme Thémée
  • 22. ● Faiblesses des mot de passes Parmi les défauts de conception d’une application WEB, l’autorisation des mots de passe dit “faible” est courante. Beaucoup de sites WEB contenant des informations sensibles, laisse le choix à l’utilisateur d’utiliser des mots de passe simples, voire très banaux comme des noms de personnages de fictions, des dates de naissances, etc. une personne célèbre telle que Mark Zuckerberg a vu ses comptes Twitter et Pinterest piratés en 2016 car son mot de passe était “Dadada”. Violation de gestion d’authentification Jérôme Thémée
  • 23. Violation de gestion d’authentification Jérôme Thémée Démonstration avec Cupp.py et Xhydra
  • 24. ● Se protéger ? Violation de gestion d’authentification N° Méthode Description 1 Mot de passe complexe Lors de la création de compte d’utilisateur, il est nécessaire de forcer celui-ci à utiliser un mot de passe complexe (majuscule, minuscule, chiffre, caractère complexe). Cette vérification doit s’effectuer côté client et serveur. Voici un plugin jQuery très bien réalisé pour la partie client : http://jquerycards.com/forms/inputs/strength-js/ 2 Jeton La création d’un jeton sur la page d’authentification permet de rendre la tâche plus compliquée pour les cybercriminels même s’il est possible d’absorber celui-ci, cette méthode est déjà un premier rempart. 3 Captcha Suivant les exigences en matière de sécurité, si le token n'est pas suffisant, le Captcha reste un moyen efficace pour les attaques par dictionnaire ou brute force. Tous les captchas ne se valent pas, google propose un service de Captcha (reCAPTCHA) simple et efficace. Pour plus d’informations sur reCAPTCHA : https://www.google.com/recaptcha/intro/index.html Jérôme Thémée
  • 25. ● Le vol de session (session hijacking) Violation de gestion d’authentification Jérôme Thémée
  • 26. Violation de gestion d’authentification Jérôme Thémée Démonstration avec Ettercap et DVWA
  • 27. ● Se protéger ? Violation de gestion d’authentification N° Méthode Description 1 Ajout HTTPS Un moyen efficace est l’utilisation exclusive du protocole HTTPS sur un serveur WEB. Le protocole se démocratise et la plupart des hébergeurs le propose. La Linux foundation propose des certificats reconnus et gratuits, disponibles à cette adresse :https://letsencrypt.org/ 2 Flag secure cookie Activer la fonctionnalité sur le serveur WEB flag secure cookie déjà introduite lors du chapitre précédent (cf.Panorama de la sécurité WEB - les sécurités des navigateurs et serveurs WEB). Cette fonctionnalité permet de transmettre les identifiants de session au serveur seulement sous un protocole sécurisé (HTTPS). Ce qui permet de réduire les attaques de l’homme du milieu. Jérôme Thémée
  • 28. ● Autres vulnérabilités : ▹ Faiblesses dans la conception des sessions ▹ Mot de passe encoder en Base de données ▹ Aucun salage des mots de passe ▹ Etc ... Violation de gestion d’authentification Jérôme Thémée
  • 29. 3 - Cross-site scripting: Jérôme Thémée
  • 30. + Évaluation du risque Jérôme Thémée
  • 34. XSS XSS DOM : La vulnérabilité XSS DOM consiste à utiliser une entrée telle qu’un user-agent, URL, referrer HTTP,... afin d’y injecter un code JavaScript malicieux (XSS) qui sera interprété à l’intérieur des fonctions liées au DOM. Voici un exemple de code vulnérable : <script> document.write("<b>URL Courante<b> : " + document.baseURI); </script> Le script ci-dessous permet d’afficher l’URL courante. Voici un exemple d’utilisation d’un XSS DOM : http://www.exemple.com/test.html#<script>alert(1)</script> Jérôme Thémée
  • 36. 4 - Références directes non sécurisées à un objet Jérôme Thémée
  • 37. + Références directes non sécurisées à un objet Jérôme Thémée
  • 38. Références directes non sécurisées à un objet Jérôme Thémée
  • 39. Références directes non sécurisées à un objet Jérôme Thémée Démonstration avec bWAPP
  • 40. Références directes non sécurisées à un objet Jérôme Thémée Se protéger : N° Méthode Description 1 Contrôle des références Afin de se protéger contre ce genre d’attaque, il est nécessaire de mettre des contrôles stricts sur les références utilisateurs, l’utilisateur. Une pattern permettant de vérifier si l’utilisateur est bien le propriétaire de l’objet peut s’avérer très utile. 2 champs cachés Protéger les références avec la technique 1 présentée sur la colonne ci-dessus pour les champs cachés. Même ceux non affichés dans le DOM. Les techniques Data biding ou Mass assignment vulnerability ont la fonction d’envoyer des requêtes avec des paramètres aléatoires essayant de trouver des champs cachés et compromettre l’application. 3 Framework Les framework actuels bien utilisés comportent une gestion des rôles sur les applications efficaces. Encore une fois ne pas hésiter à se servir de ce type d’outil pour développer.
  • 41. 5 - Mauvaise configuration Sécurité Jérôme Thémée
  • 42. + Mauvaise configuration Sécurité Jérôme Thémée
  • 43. De façon à comprendre le risque voici une liste de scénarios possibles : ▸ Le cybercriminel provoque une erreur sur l’application ce qui lui permet d’obtenir des informations importantes pour corrompre l’application. ▸ Le serveur hébergeant l'application a des utilisateurs et mot de passe par défaut sur les services SQL, SSH, FTP, Apache, IIS, etc. ▸ Une application faite avec un framework est “poussée” en production mais la partie pré- production avec des identifiants par défaut est aussi en production. ▸ Le serveur WEB liste les répertoires de type index of et permet à un attaquant de télécharger des fichiers et obtenir des informations. Mauvaise configuration sécurité Jérôme Thémée
  • 44. Mauvaise configuration sécurité Jérôme Thémée Démonstration avec Shodan
  • 45. ▸ Il manque des mises à jour de sécurité sur les serveurs WEB et de stockage de données. ▸ Le serveur WEB autorise les requêtes HTTP de type TRACE ce qui permet à l’attaquant d’exploiter une vulnérabilités XST (Cross Site Tracing). ▸ Le serveur de base de données utilise le même utilisateur pour toutes les bases de données ce qui permet à un attaquant lors d’une injection de pivoter entre les bases. ▸ Mauvaise configuration du fichier Robots.txt permettant de récupérer des informations sur l'architecture de l’application. Se protéger : Utiliser le hardening, pour aller plus loin sur le hardening, voici quelques liens (en Anglais) : ▸ Recommandations ASVS : https://www.owasp.org/index.php/ASVS, chapitre 12. ▸ Cheat sheet OWASP sur la configuration sécurisée https://www.owasp.org/index.php/Insecure_Configuration_Management ▸ Hardening pour serveur Apache : https://geekflare.com/apache-web-server-hardening-security/ Mauvaise configuration sécurité Jérôme Thémée
  • 46. 6 - Exposition de données sensibles Jérôme Thémée
  • 47. + Exposition de données sensibles Jérôme Thémée
  • 48. Scénario : ▸ Utilisation de protocole de transport de données sécurisées faibles (SSL V2). ▸ Exposition des clés de chiffrements dans le code “Front” ▸ Pas de désactivation de l’attribut autocomplete dans les formulaires collectant des données sensibles. Exposition de données sensibles Jérôme Thémée
  • 49. Exposition de données sensibles Jérôme Thémée Démonstration avec les dork
  • 50. ▸ Stockage de données sensibles sur le serveur WEB sans rapport avec l’application. ▸ Utilisation de données sensibles à l’utilisateur dans les localStorage, SessionStorage, indexDB HTML5. ▸ Utilisation de cache dans les en-têtes HTTP pour la transition de données sensibles. Se protéger : Pour aller plus loin dans les contrôles de sécurité des données sensibles (en anglais) : ▸ Recommandations ASVS : https://www.owasp.org/index.php/ASVS, chapitre 7,9,10. ▸ Owasp Cryptographic Storage Cheat Sheet : https://www.owasp.org/index.php/Cryptographic_Storage_Cheat_Sheet ▸ MITRE CWE Weak encryption : http://cwe.mitre.org/data/definitions/326.html Exposition de données sensibles Jérôme Thémée
  • 51. 7- Manque de contrôle d’accès au niveau fonctionnel Jérôme Thémée
  • 52. + Manque de contrôle d’accès au niveau fonctionnel Jérôme Thémée
  • 53. Manque de contrôle d’accès au niveau fonctionnel Jérôme Thémée Server Side Request Forgery (SSRF) :
  • 54. Manque de contrôle d’accès au niveau fonctionnel Jérôme Thémée Démonstration avec Facebook
  • 55. Manque de contrôle d’accès au niveau fonctionnel Jérôme Thémée Se protéger : N° Méthode Description 1 Retour d’erreurs Contrôler au maximum les retours d’erreurs (try and catch). 2 Désactiver les protocoles non nécessaires A l’aide d’une Whitelist, autoriser les protocoles nécessaires (HTTP, HTTPS) et interdire implicitement les protocoles non nécessaires. Ceci peut se faire sur le serveur WEB ou bien le code lui-même.
  • 56. 8- Cross-site request forgery Jérôme Thémée
  • 57. + Évaluation du risque Jérôme Thémée
  • 60. CSRF ● Se protéger : N° Méthode Description 1 Jeton CSRF Un des meilleurs moyens pour sécuriser les CSRF est l’insertion dans les formulaires d’un jeton unique attribué au tout début de la navigation utilisateur. De ce fait, si une page extérieure essaye de soumettre un formulaire alors elle devra d’abord passer par la page d’accueil ou bien une autre page de l’application ainsi en respectant le chaînage d’une navigation sur un site WEB. Voici un exemple en Java (jeton dans le formulaire) : <form action=”/transfert.do” method=”post”> <input type=”hidden” name=”tokenCSRF” value=”E4ODRjN2Q2OWY4NmQwODNTlhMmZlYWE”> </form> Pour plus d’informations sur la mise en place de A à Z de jeton CSRF, voici un lien sur PHP CSRF GUARD de L’OWASP (en anglais) : https://www.owasp.org/index.php/PHP_CSRF_Guard Jérôme Thémée
  • 61. CSRF ● Se protéger : 2 Captcha Un Captcha peut s'avérer efficace pour contrer les CSRF. En particulier les Captchas google dont l'efficacité est à la hauteur de la facilité d’installation. 3 Framework Les Frameworks modernes automatisent et initialisent les jetons CSRF dans les formulaires des applications. Jérôme Thémée
  • 62. 9 - Utilisation de composants avec des vulnérabilités connues Jérôme Thémée
  • 63. + Utilisation de composants avec des vulnérabilités connues Jérôme Thémée
  • 64. Utilisation de composants avec des vulnérabilités connues Jérôme Thémée ● Wpscan :
  • 65. Utilisation de composants avec des vulnérabilités connues ● Nikto : Jérôme Thémée
  • 66. Utilisation de composants avec des vulnérabilités connues ● OpenVas : Jérôme Thémée
  • 67. Utilisation de composants avec des vulnérabilités connues ● Qualys SSL Labs: L’éditeur Qualys a développé et mis à disposition une solution en ligne dont le but est de vérifier la sécurité des chiffrements SSL/TLS (HTTPS) d’un serveur WEB ou d’un navigateur. Le chiffrement étant partagé entre ces deux éléments, Qualys permet de ce fait, de faire la vérification de bout en bout de la chaîne de chiffrement entre l’utilisateur et le service WEB. La solution est disponible à cette adresse : https://www.ssllabs.com/. La solution est très simple, sur la page d’accueil un menu propose de scanner votre serveur ou un client, choisir Test your server.
  • 68. Utilisation de composants avec des vulnérabilités connues Jérôme Thémée Démonstration avec Nmap et Metasploit
  • 69. Utilisation de composants avec des vulnérabilités connues ● Se protéger : N° Méthode Description 1 Mise à jour Il est primordial de bien gérer les mises à jour sur les bibliothèques, les plugins, les serveurs, les systèmes d’exploitation autour de votre application. La plupart des CMS proposent des plugins ou options pour la mise à jour du coeur de l’application automatique. Des notifications sont envoyées par email quand un plugin n’est plus à jour, veiller à bien surveiller celles-ci. 2 Veille en sécurité S'inscrire à des flux RSS comme celui d’exploit-db.com (https://www.exploit-db.com/rss.xml) ou bien à une mailing list comme celle de http://www.securityfocus.com/ permet d’avoir un rapport journalier sur les vulnérabilités dévoilées et ainsi vérifier si l’on est concerné par celle-ci.
  • 70. 10 - Redirections et Renvois Non Validés Jérôme Thémée
  • 71. + Redirections et Renvois Non Validés Jérôme Thémée
  • 72. Les redirections et les renvois non validés sont une vulnérabilité profitant d’une faiblesse dans le code dont l’objectif est de rediriger, router l’utilisateur sur une page malveillante ou administrative du site WEB. Il est courant de voir des redirections d’URL interne sur la plupart des applications utilisant un modèle MVC (model View Controller). Redirections et Renvois Non Validés Démonstration : ● Sur l’application bWAPP, se diriger vers la page : Unvalidated Redirects & Forwards(2). ● La page s’affiche avec un lien click here to go back to the portal. A l’aide d’un clic droit sur le lien sélectionner l’option proposé Copy Link Location. ● Copier ensuite le lien sur la barre d’adresse, l’URL suivante s’affiche : http://localhost/eni/bWAPP/unvalidated_redir_fwd_2.php?ReturnUrl=portal.php ● Vérifier si le paramètre ReturnUrl= est fiable, pour ce faire remplacer=portal.php par google.fr ● La page redirige vers google.
  • 73. Utilisation de composants avec des vulnérabilités connues ● Se protéger : N° Méthode Description 1 pas de redirection éviter au maximum les redirections en dur sur une application. Si cela n’est pas possible, utiliser une whitelist avec des identifiants pour chaque item. Exemple : $redirect = array( 1=>’http://www.editions-eni.fr/’, 2=>’https://google.fr’, 3=>’https://duckduckgo.com/’); if($redirect ==1){ header(location: $redirect[0])} 1 Utiliser un framework La plupart des frameworks actuels utilisent bien les redirections.
  • 75. Merci de votre attention Jérôme Thémée