Web Security
Johnny da Costa
André Neto Da Silva
Cours de sécurité
Prof. Ninoslav Marina
DLMB
Table des matières
Pourquoi la sécurité des applications web est importante ?
Comment attaquer une application web?
Comment se protéger?

Par où commencer?
Table des matières
Types d'attaques les plus connues
Fonctionnement de chaque attaque
Démo en live d'une attaque par injection SQL
Comment se protéger de ces attaques

50%
des applications web testées par WhiteHat restent vulnérables chaque jour de l'année
93%
des attaques sont financées et préparées par des organisations criminelles
77%
sont réalisées par des botnets
$500M
Ashley Madison - Site de rencontre extra conjugal
Prix à payer pour les plaintes et poursuites
N'inclut pas le prix pour sécuriser la faille, ainsi que les pertes dues à la mauvaise réputation du site

Comprendre la sécurité des applications web



Présentation
(navigateur)
Logique
(serveur)
Données
(base de données)
Découvrir des failles de sécurité
https://www.owasp.org/
Reconnaissance et Footprinting

Généralement la phase initiale d'une attaque
Cartographie de la surface d'attaque permettant de concentrer l'effort de piratage
Généralement automatisable
Spidering
Méthode de scrawling

Parcourt tous les liens depuis la racine
Exemple d'outil existant:
Forced Browsing
Méthode similaire au Spidering
Brute force des chemins à la recherche de nouvelles ressources
Exemple d'outil existant:

Banner Grabbing
Récupérer des informations concernant le serveur, framework, service, etc...
Exemple avec un simple wget
wget --server-response hackyourselffirst.troyhunt.comEnsuite?
Exemple: CVE-2014-3704
Se renseigner sur les failles existantes:
Si nécessaire utiliser cet outil "magique":
Protection offerte par les navigateurs
Liste de phishing

Certificats SSL invalides

Cryptage faible

Cryptage cassé
Cryptage obsolète
Bon cryptage
Détection Cross Site Scripting

Types d'attaques les plus connues

Title Text

Injection
NoSQL
Javascript
SQL
Applications qui sont vulnérables
- Données utilisateurs non-validées ou filtrées par l'application
- Les données sont directement utilisées ou concaténées, de sorte que le SQL ou la commande contient à la fois des données de structure et des données hostiles dans les requêtes dynamiques, les commandes ou les procédures stockées.
http://newspaper.com/user.php?id=2
Exemple d'attaque : scenarios
http://newspaper.com/user.php?id=2 or 1=1
SELECT * FROM users WHERE ID = 2SELECT * FROM users WHERE ID = 2 or 1=1or 1=1 -- toujours vrai
Un hacker peut avoir accès à tous les noms d'utilisateurs et mots de passe dans une base de données, en insérant simplement OR 1 = 1 dans le champ de saisie.
Repérer les sites qui comportent des failles d'injection SQL
Google is your friend
Dork query
Google dorking, également connu sous le nom de Google piratage, peut renvoyer des informations difficiles à localiser grâce à des requêtes de recherche simples. Cette description comprend des informations qui ne sont pas destinées au public mais qui n'ont pas été protégées de manière adéquate.

Fresh Google Dorks 2018 for SQLi
https://www.nextleveltricks.com/latest-google-dorks-list/
- about.php?cartID=
- accinfo.php?cartId=
- acclogin.php?cartID=
- add.php?bookid=
- add_cart.php?num=
- addcart.php?
- addItem.php
- add-to-cart.php?ID=
- addToCart.php?idProduct=
- addtomylist.php?ProdId=
- adminEditProductFields.php?intProdID=
- advSearch_h.php?idCategory=
- ...
Démonstration

Se protéger d'une attaque par injection SQL
Utiliser des procédures stockées, à la place du SQL dynamique.
Utiliser une expression rationnelle afin de valider qu'une donnée entrée par l'utilisateur est bien de la forme souhaitée.
Utiliser des comptes utilisateurs SQL à accès limités (en lecture-seule) quand cela est possible.
Utilisation d'une White List Input Validation
CSRF
Cross-site request forgery
CSRF
!=
XSS
CSRF est une attaque qui force un utilisateur final à exécuter des actions indésirables sur une application Web dans laquelle il est actuellement authentifié

Gmail
MySpace
Windows Live Mail
Skyrock
Dynadot
...
Les victimes de ce type d'attaque
Recommandations générales pour la défense CSRF automatisée
Check standard headers to confirm that the request is of the same origin
https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet
Check CSRF token
https://laravel.com/docs/5.6/csrf
Laravel génère automatiquement un "jeton" CSRF pour chaque session utilisateur active gérée par l'application. Ce jeton est utilisé pour vérifier que l'utilisateur authentifié est celui qui envoie les requêtes à l'application.
https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet
Check CSRF token
GET request
GET request
token session
no token session
legal user
illegal user
site web
session
xxxxxxxx
logic
CSRF token check
http://www.mcherifi.org/hacking/les-attaques-csrf-injection.html
Vérification de l’url de provenance
if (!empty($_SERVER[‘HTTP_REFERER’])) {
if (!ereg($_SERVER[‘HTTP_HOST’], $_SERVER[‘HTTP_REFERER’])) {
die(“Vous ne pouvez pas venir ici!”);
}
} else {
die(“Désolé, Vous ne venez pas d’ici”);
}Pas une valeur sûre puisque modifiable, désactivable par l'utilisateur
Conclusion
Merci de votre attention
Johnny da Costa
André Neto Da Silva
Cours de sécurité
DLMB
Web security
By Johnny Da Costa
Web security
We will talking about web security
- 314