L’injection de code, souvent appelée exécution de code à distance (RCE), est une attaque perpétrée par la capacité d’un attaquant à injecter et à exécuter du code malveillant dans une application ; une attaque par injection. Ce code étranger est capable de violer la sécurité des données, de compromettre l’intégrité de la base de données ou des propriétés privées. Dans de nombreux cas, il peut contourner le contrôle d’authentification, et ces attaques sont généralement associées à des applications dont l’exécution dépend de l’entrée de l’utilisateur.
Généralement, les applications sont plus vulnérables si le code est exécuté sans passer au préalable par la validation. Un cas simple de code vulnérable est présenté ci-dessous.
Dans l’exemple ci-dessus, la page d’informations PHP est vulnérable et sera affichée si l’URL http://example.com/?code=phpinfo(); est exécuté.
Du fait que l’interaction de l’utilisateur avec les applications est de plus en plus une nécessité dans le monde en ligne d’aujourd’hui, l’injection de code s’est développée et est devenue une menace réelle pour de nombreuses ressources en ligne.
Types d’injections de code
Il existe principalement quatre types d’injections de code : injection SQL, injection de script, injection de shell et évaluation dynamique. Tous ces éléments ont le même principe de fonctionnement, c’est-à-dire que le code est introduit et exécuté par les applications, mais les deux sur lesquels je vais me concentrer sont l’injection SQL et l’injection de script.
Comment fonctionnent les injections SQL
Dans le cas de l’injection SQL, l’attaque vise à corrompre une requête de base de données légitime pour produire des données falsifiées. L’attaquant doit d’abord localiser une entrée dans l’application Web ciblée qui est incluse dans une requête SQL.
Cette méthode n’est efficace que si l’application Web a une entrée utilisateur incluse dans une instruction SQL. Une charge utile (une instruction SQL malveillante) peut ensuite être insérée et exécutée sur le serveur de base de données.
Le pseudo-code côté serveur suivant est un exemple simple d’authentification qui peut s’avérer vulnérable aux injections SQL.
Dans le code ci-dessus, l’attaquant pourrait insérer une charge utile qui modifierait l’instruction SQL exécutée par le serveur de base de données. Un exemple définirait le champ de mot de passe sur :
password’ OR 1=1
Cela provoque automatiquement l’exécution de l’instruction suivante sur le serveur de base de données :
SELECT id FROM users WHERE username=’username’ AND password=’password’ OR 1=1
Ce que l’injection SQL peut faire
C’est le type d’injection de code le plus courant. Compte tenu du fait que SQL est le langage utilisé pour manipuler les données stockées dans les systèmes de gestion de bases de données relationnelles (SGBDR), une attaque avec le pouvoir de donner et d’exécuter des instructions SQL peut être utilisée pour accéder, modifier et même supprimer des données.
Cela peut donner à l’attaquant la possibilité de contourner l’authentification, d’avoir une divulgation complète des données stockées dans la base de données, de compromettre l’intégrité des données et de provoquer des problèmes de répudiation, de modifier les soldes et d’annuler des transactions.
Comment empêcher les injections SQL
Il existe quelques étapes pour rendre vos applications moins vulnérables, mais avant chacune de ces étapes, il est préférable de supposer que toutes les données soumises par les utilisateurs sont mauvaises et de ne faire confiance à personne. Ensuite, vous pouvez envisager les éléments suivants :
- Désactiver l’utilisation du SQL dynamique – cela signifie ne pas construire de requêtes de base de données avec une entrée utilisateur. Si nécessaire, nettoyez, validez et échappez les valeurs avant d’effectuer une requête avec les données d’entrée utilisateur.
- Utiliser un pare-feu – Un pare-feu d’application Web (basé sur un logiciel ou une application) aidera à filtrer les données malveillantes.
- Achetez un meilleur logiciel – Cela signifie simplement que les codeurs seront chargés de vérifier et de corriger les défauts.
- Crypter ou hacher les mots de passe et toutes les autres données confidentielles dont vous disposez, cela devrait inclure les chaînes de connexion.
- Évitez de vous connecter à votre base de données avec des comptes privilégiés d’administrateur sauf si vous en avez absolument besoin.
Injection de scripts
Cette vulnérabilité de sécurité est une menace qui permet à un attaquant d’injecter du code malveillant directement dans les formulaires Web des sites Web basés sur les données via des éléments de l’interface utilisateur. Cette attaque est souvent appelée Cross-Site Scripting ou XSS. le <script>, <meta>, <html>, <body>, <embed>, <frame>, <frameset>, <img> Les balises sont les plus ciblées pour les injections de script.
Comment empêcher les injections de script
Les étapes pour empêcher les injections de script dépendent du code de programmation que vous utilisez. Généralement, vous voudrez :
- valider et désinfecter les entrées des utilisateurs (toute forme de champs de saisie) en supprimant ou en échappant au contenu potentiellement malveillant
- nettoyer les chaînes de requête dans les URL
- valider et désinfecter toutes les formes de données, de tableaux et d’objets avant l’exécution sur le serveur
Conclusion
En termes simples, mieux vaut prévenir que guérir. Avec les nouvelles mises à jour technologiques, nos systèmes seront exposés à davantage de menaces. Pour rester au courant, il est important d’avoir les derniers correctifs et mises à jour et de rester à l’écoute des meilleures pratiques. Il est donc plus difficile d’être victime de ces attaques malveillantes.
Soutenez notre effort ❤️
Si vous avez apprécié cet article, pensez à laisser un pourboire pour nous aider à continuer à publier du contenu de qualité.





















