La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Par Michael Tran Injection. Présentation du problème C’est faire en sorte que l’entrée utilisateur de l’attaquant est considérée de façon spéciale Permet.

Présentations similaires


Présentation au sujet: "Par Michael Tran Injection. Présentation du problème C’est faire en sorte que l’entrée utilisateur de l’attaquant est considérée de façon spéciale Permet."— Transcription de la présentation:

1 Par Michael Tran Injection

2 Présentation du problème C’est faire en sorte que l’entrée utilisateur de l’attaquant est considérée de façon spéciale Permet à l’attaquant d’influencer l’exécution d’un programme et d’exécuter son propre code Profiter des informations soutirées Profiter de l’exécution des commandes de l’attaquant Peut être très dommageable Vol de données Prise de contrôle du serveur Facile à trouver et à éviter Encore commun même dans les environnements managés

3 Environnements affectés Tout environnement qui traite de l’entrée utilisateur et qui soumet cette entrée à des modules externes Exemples de modules SQL (MS SQL, MySQL, PostgreSQL) Commandes (cmd, sh) Email / HTTP LDAP HTML (XSS) (Côté client)

4 Exemples de cas Passer outre une authentification (accès admin) Bell Voler des mots de passe Les leaks de mot de passe Exécuter des virus/vers Code Red (unmanagé, buffer overflow)

5 Injection SQL Ne pas construire de requêtes en concaténant bêtement les chaînes Le classique ‘ OR 1=1’ --’ Erreurs dans le contenu Indiquent une injection SQL possible Attaque aveugle La base de données peut montrer les erreurs Révéler le schéma de la base et d’autres informations

6 Injection SQL Révéler trop d’information sur la configuration de l’application Source: http://www.troyhunt.com/2014/02/heres-how-bell-was-hacked-sql-injection.htmlhttp://www.troyhunt.com/2014/02/heres-how-bell-was-hacked-sql-injection.html

7 Injection SQL Situation normale Avec la chaîne « ’ OR 1=1 -- » SELECT * FROM Utilisateur WHERE NomUtilisateur=' ' AND MotDePasse=' ' AND EstAdmin=1; string.Format("SELECT * FROM Utilisateur WHERE NomUtilisateur='{0}' AND MotDePasse='{1}' AND EstAdmin=1;", nomUtilisateur, HasherMotDePasse(motDePasse)); SELECT * FROM Utilisateur WHERE NomUtilisateur='' OR 1=1; -- AND MotDePasse=' ' AND EstAdmin=1;

8 Injection de commande Encore une fois, ne pas construire une commande à exécuter en en concaténant bêtement les chaînes Sur Windows, exécuter plusieurs commandes avec le ‘&’, commenter avec ‘rem’ Même principe qu’en SQL Ajouter nos propres commandes à celle déjà existante mkdir " " mkdir "C:\www\nouveauclient" & start C:\Windows\System32\calc.exe & rem " Si le nom complet du répertoire est « C:\www\nouveauclient" & start C:\Windows\System32\calc.exe & rem » : ExecuterCommande(string.Format("mkdir \"{0}\"", pathAbsolu));

9 Injection email et HTTP Les en-têtes sont des clés-valeurs séparées avec des entrée (‘\r\n’ ou 0x0d 0x0a) Donc avoir une valeur qui contient ‘\r\n’ permet d’ajouter des en-tête Dans un email, ajouter l’en-tête pour une copie carbone (Bcc) Dans HTTP, créer une nouvelle réponse (plus rare) From: Jebediah's Junkyard \r\n To: Michael Jackson \r\n Subject: Confirmation de la commande #45\r\n From: Jebediah's Junkyard \r\n To: Mallory\r\n Bcc: email1@domaine.com,email2@domaine.com\r\n Dummy: \r\n Subject: Confirmation de la commande #45\r\n Si votre nom est « Mallory\r\nBcc: email1@domaine.com,email2@domaine.com\r\nDummy: »:

10 Prévention de la faille Utiliser les mécanismes pour séparer les données du code Requêtes préparées et binding en SQL Échapper TOUS les caractères spéciaux Prévoir tous les caractères qui sont spéciaux Sanitiser l’entrée utilisateur Certains caractères sont invalides dans certains cas Ne jamais faire confiance à l’entrée utilisateur Même dans les headers Tout ce qui peut être manipulé par l’utilisateur

11 Conclusion Faille facile à éviter et facile à trouver Malheureusement, elle est encore commune Par exemple, les versions plus anciennes de Drupal (un CMS) 7.32 dans la série des 7.x sont vulnérables à l’injection SQL dans leur module d’abstraction de SGBD (4 novembre 2014) http://www.esecurityplanet.com/network-security/drupal-acknowledges-major-sql-injection-vulnerability.html NEVER TRUST USER INPUT NEVER TRUST USER INPUT (est-ce clair ?)


Télécharger ppt "Par Michael Tran Injection. Présentation du problème C’est faire en sorte que l’entrée utilisateur de l’attaquant est considérée de façon spéciale Permet."

Présentations similaires


Annonces Google