Qu'est-ce qu'une attaque par inclusion de fichiers ?
Publié: 2023-03-31N'importe quel outil peut être utilisé avec de bonnes ou de mauvaises intentions, et l'inclusion de fichiers n'est pas différente. L'inclusion de fichiers est une méthode de programmation qui facilite la maintenance du code et l'extension des fonctions sur l'ensemble d'un site. Une attaque par inclusion de fichiers abuse de la façon dont PHP utilise l'inclusion de fichiers comme méthode valide d'unification et d'exécution de code à partir de nombreux fichiers distincts pour créer une seule page Web. Étant donné que PHP est un langage utilisé par WordPress, WordPress et d'autres applications PHP sont sujettes à des vulnérabilités d'inclusion de fichiers lorsque les mesures de sécurité appropriées sont brisées, incomplètes ou absentes.
Dans ce guide complet sur les attaques par inclusion de fichiers, nous explorerons les façons dont les pirates exploitent une mauvaise désinfection et validation des entrées utilisateur pour injecter des logiciels malveillants et envoyer de mauvaises instructions pour pénétrer dans les sites WordPress.
Vous apprendrez comment les attaques d'inclusion de fichiers WordPress se produisent et ce que vous pouvez faire pour protéger votre site Web contre elles.
Qu'est-ce que l'inclusion de fichiers ?
L'inclusion de fichiers est une technique de développement permettant d'inclure de nombreux fichiers dans un script ou une page Web pour ajouter des fonctionnalités, réutiliser un modèle de conception ou partager un élément de contenu sur plusieurs pages.
Les inclusions de fichiers sont absolument nécessaires. Les développeurs les utilisent couramment aux fins suivantes :
- Y compris les fichiers d'en-tête et de pied de page communs à toutes les pages d'un site Web pour assurer la cohérence de la conception et de la fonction.
- Inclut des scripts et des bibliothèques pour les fonctionnalités clés d'un site Web ou d'une application Web.
- Y compris les fichiers de configuration contenant les paramètres de l'application, tels que les informations de connexion à la base de données et les clés API.
- Y compris du contenu tel que des images, des vidéos, du texte ou d'autres contenus sur des pages Web.
- Y compris la fonctionnalité de génération de contenu dynamique basé sur l'entrée de l'utilisateur transmise en tant que paramètre d'URL. Par exemple, un utilisateur peut soumettre un formulaire pour générer certains résultats.
Types d'inclusion de fichiers
En utilisant la technique d'inclusion de fichiers, les développeurs peuvent ajouter des fichiers et des scripts à une page Web de manière statique ou dynamique.
À l'aide de l'inclusion de fichiers statiques, un développeur peut réutiliser le même texte ou code sur plusieurs pages en se référant à une URL (Uniform Resource Locator) ou à un chemin d'accès à un fichier stocké localement, c'est-à-dire sur le même serveur. Les inclusions de fichiers statiques permettent aux thèmes d'utiliser le même code d'en-tête, de pied de page ou de menu de navigation sur de nombreuses pages Web.
Les inclusions de fichiers dynamiques acceptent les entrées de l'utilisateur lors de l'exécution. L'utilisateur indique la sortie souhaitée en transmettant le chemin d'accès à un fichier spécifique. Généralement, l'entrée de l'utilisateur sera transmise en tant que paramètre dans une URL ou une soumission de formulaire. Par exemple, un utilisateur peut sélectionner "Anglais" dans une liste déroulante de sélection de langues, ce qui l'amène à une version en anglais de la page sur laquelle il se trouve en modifiant l'URL comme suit : /page.php?language=english
. Si quelqu'un a remplacé « english
» par l'URL d'un fichier distant, il peut être en mesure d'injecter un shell Web en tant que porte dérobée et/ou d'autres logiciels malveillants dans le site ciblé s'il n'y a pas de contrôles en place pour empêcher cela.
Comment l'inclusion de fichiers est-elle implémentée dans WordPress ?
Toutes les applications Web dynamiques écrites en PHP, comme WordPress, peuvent utiliser l'inclusion de fichiers en toute sécurité. Dans les applications écrites en PHP, les développeurs effectuent l'inclusion de fichiers en utilisant les instructions include
et require
. Les développeurs utilisent les deux instructions pour insérer le contenu d'un script PHP dans un autre. Cela se produit avant que le code ne soit exécuté sur le serveur.
Si vous regardez certains des fichiers de base de WordPress, beaucoup d'entre eux font référence à d'autres scripts de base. Lorsqu'ils sont tous chargés ensemble, ils construisent la structure de votre site et génèrent les pages Web individuelles demandées par un visiteur. L' index.php
principal fait référence wp-blog-header.php
, qui charge l'environnement WordPress et le modèle de thème - wp-load.php
et template-loader.php
, respectivement.
Avec le noyau WordPress, les plugins et les thèmes utilisent également l'inclusion de fichiers pour effectuer les tâches nécessaires. Cependant, avec des dizaines de milliers de plugins WordPress disponibles, tous ne sont pas aussi bien testés que le cœur de WordPress.
Les inclusions de fichiers introduisent de sérieux risques de sécurité lorsque les développeurs ne les sécurisent pas correctement. Si le code que vous utilisez ne valide pas et ne nettoie pas l'entrée de l'utilisateur, les pirates peuvent l'exploiter. Ils peuvent l'utiliser pour installer des logiciels malveillants et voler des informations sensibles, peut-être les vôtres ou celles de vos clients !
Qu'est-ce qu'une attaque par inclusion de fichiers ?
Deux types d'attaques par inclusion de fichiers sont possibles : l'inclusion de fichiers locaux (LFI) ou l'inclusion de fichiers distants (RFI).
Les attaques par inclusion de fichiers font partie de la classe plus large des attaques par injection . Cela inclut les injections SQL (SQLi), les scripts intersites (XSS) et les attaques par inclusion de commandes. Les pirates peuvent exploiter les vulnérabilités d'entrée pour effectuer d'autres types d'attaques, comme les attaques par débordement de la mémoire tampon.
Attaques par inclusion de fichiers locaux et distants
Les sites Web et les applications Web qui s'appuient sur des inclusions de fichiers dynamiques pour activer certaines fonctionnalités peuvent être exposés à la fois à des attaques par inclusion de fichiers distants et à des attaques par inclusion de fichiers locaux.
Inclusions de fichiers locaux (LFI)
Une attaque par inclusion de fichiers locaux peut injecter un fichier situé sur le même serveur que le site Web ou l'application Web ciblé(e). Les attaques LFI peuvent souvent accéder à des fichiers normalement restreints. Dans une attaque LFI, le fichier inclus doit déjà être présent sur le serveur d'application local ciblé. Dans une attaque LFI, un acteur malveillant peut lire des fichiers importants, accéder à des informations plus sensibles ou exécuter des commandes arbitraires.
Les attaques par inclusion de fichiers locaux peuvent également permettre à quelqu'un d'accéder à des données sensibles en dehors du site Web ciblé. Cela inclut les fichiers de configuration du serveur tels que /etc/passwd
ou les fichiers de configuration d'un autre site Web tels que wp-config.php
. Il est important de noter, cependant, que les fichiers ciblés doivent être lisibles pour les utilisateurs non privilégiés - par exemple, le fichier /etc/passwd
sur les systèmes Linux appartient à root, mais avec ses autorisations de fichier définies sur 644, tous les autres utilisateurs du système peut le voir.
Pour naviguer dans le système de fichiers, les attaquants utilisent la traversée de répertoire, une technique pour accéder aux fichiers en dehors du répertoire de travail actuel en manipulant des séquences de traversée de chemin de répertoire telles que ../../../
.
Inclusions de fichiers distants (RFI)
Les attaques par inclusion de fichiers à distance ciblent les sites Web et les applications qui appellent des fichiers hébergés sur un autre serveur. En exploitant l'inclusion de fichiers à distance, un attaquant peut tirer parti d'un code malveillant hébergé ailleurs. Une vulnérabilité doit exister sur le serveur ciblé, mais l'attaquant l'utilisera pour exécuter du code malveillant hébergé ailleurs.
Dans les attaques par inclusion de fichiers à distance, les pirates profitent de la commande « inclusion dynamique de fichiers » dans les applications Web. Les pirates peuvent exploiter les applications Web qui acceptent les entrées de l'utilisateur, telles que les URL et les valeurs des paramètres, et les transmettre aux mécanismes « d'inclusion de fichiers » sans nettoyage approprié. Dans ce type de vulnérabilité, les attaquants peuvent exploiter l'application Web pour inclure des fichiers distants avec des scripts malveillants.
Pourquoi les attaques par inclusion de fichiers WordPress se produisent-elles ?
Les sites WordPress représentent 43% d'Internet, ils sont donc une cible importante pour les attaquants. Notre rapport annuel sur les vulnérabilités WordPress 2022 montre que plus de 90 % de toutes les vulnérabilités WordPress découvertes l'année dernière concernaient des plugins et des thèmes. En règle générale, nous avons vu au moins une nouvelle faille de sécurité signalée chaque semaine dans 20 à 50 plugins.
Récemment, des chercheurs en sécurité ont découvert une vulnérabilité d'inclusion de fichiers dans le thème populaire OceanWP. OceanWP compte plus d'un demi-million d'utilisateurs actifs. (Nous l'avons signalé dans notre rapport hebdomadaire sur la vulnérabilité de WordPress.) Même si OceanWP a rapidement corrigé la vulnérabilité, les pirates ont eu le temps de l'exploiter alors que des millions de sites WordPress utilisaient encore le code obsolète.
Comment détecter une attaque par inclusion de fichiers WordPress
Contrairement aux attaques par déni de service qui peuvent considérablement ralentir votre site Web ou aux redirections malveillantes qui éloignent les internautes de votre site Web vers des ressources frauduleuses, les attaques par inclusion de fichiers sont difficiles à détecter. La raison en est simple. Les pirates utilisent l'inclusion de fichiers comme point d'entrée pour télécharger des logiciels malveillants et mener d'autres attaques. L'inclusion de fichiers est un chemin silencieux vers les dommages les plus visibles. Ainsi, lorsqu'un pirate informatique injecte un code malveillant dans un site Web ou accède à des informations sensibles, il y a de fortes chances que vous le remarquiez à peine.
Cela nous amène à une conclusion importante. La sécurité du site Web doit commencer par réduire la surface d'attaque et la renforcer. Cela aidera à empêcher les pirates d'exploiter les vulnérabilités d'entrée à l'origine des attaques par injection, telles que les attaques par inclusion de fichiers, les injections SQL et de commandes et les scripts intersites (XSS).
Comment se défendre contre les attaques par inclusion de fichiers WordPress ?
Avec le nombre croissant de cyberattaques ciblant WordPress, la sécurité des sites Web WordPress est plus importante que jamais. La défense contre les attaques par inclusion de fichiers WordPress nécessite une approche à multiples facettes qui limite la possibilité d'exploiter les vulnérabilités d'entrée et l'exécution de code arbitraire. Vous pouvez le faire si vous adoptez une combinaison de mesures de sécurité proactives et réactives.
Voici les trois principales recommandations de sécurité WordPress pour protéger votre site Web contre les attaques par inclusion de fichiers.
Gardez tous les logiciels à jour
Garder tous vos logiciels à jour - y compris le noyau WordPress, les thèmes, les plugins et les extensions - est essentiel lorsqu'il s'agit de réduire la surface d'attaque de votre site. Alors que de nouvelles vulnérabilités apparaissent chaque jour, ne donnez pas aux pirates une chance de les exploiter. Installez les correctifs de sécurité et effectuez les mises à jour dès qu'elles sont disponibles.
Prenez l'habitude de faire vous-même des mises à jour régulières ou activez les mises à jour automatiques pour vous assurer que votre site Web n'exécute jamais de code vulnérable. iThemes Security Pro peut s'occuper pour vous des mises à jour du noyau, des plugins et des thèmes de WordPress.
iThemes Security Pro recherche automatiquement les nouvelles versions du logiciel utilisé par votre site Web. Son système de gestion des versions garantit que tous les correctifs et mises à jour de sécurité sont installés dès qu'ils sont disponibles. En plus de cela, iThemes vous alertera également si vous exécutez un logiciel obsolète dans votre infrastructure de serveur. Par exemple, si vous utilisez une version de PHP ayant dépassé sa date de fin de vie ou un serveur MySQL vulnérable, iThemes Pro vous avertira.
Si vous avez plusieurs sites WordPress sous votre contrôle, iThemes Sync Pro vous offre une interface unique pour tous les gérer. Sync offre également une surveillance avancée de la disponibilité et des commentaires SEO.
Désactiver l'inclusion de fichiers à distance dans PHP
Il est possible pour un site Web de référencer des fichiers distants à partir d'une URL externe si l'option allow_url_fopen
est activée dans l'environnement PHP. Cela peut augmenter le risque d'attaques par inclusion de fichiers à distance. La désactivation allow_url_fopen
élimine efficacement la possibilité pour quelqu'un d'exécuter du code malveillant chargé à distance sur votre site Web WordPress.
Vous pouvez désactiver allow_url_fopen
dans la configuration globale de PHP ou en définissant allow_url_fopen
sur 0
dans un fichier local .user.ini
ou php.ini
créé pour un dossier Web individuel. Vous pouvez vérifier si l'option est désactivée dans votre environnement PHP en créant une simple page d'informations PHP à l'aide de la fonction phpinfo()
, comme indiqué ci-dessous.
Implémenter les en-têtes de sécurité WordPress
Les en-têtes de réponse HTTP tels que Content Security Policy (CSP) et Set-Cookie peuvent ajouter une couche de défense contre l'inclusion de fichiers et d'autres attaques par injection à votre site Web WordPress.
Les en-têtes de sécurité WordPress permettent de réduire ou de bloquer les vecteurs par lesquels les attaques d'inclusion de fichiers distants et de scripts intersites (XSS) peuvent se produire en créant une liste de sources fiables, de scripts et d'autres contenus pouvant être chargés. Toutes les autres sources seront refusées. En plus de cela, les en-têtes de réponse HTTP peuvent vous aider à ajouter une protection contre la falsification de requêtes intersites (CSRF) et le détournement de clics.
Protégez votre site WordPress contre les attaques par injection avec iThemes Security Pro
Avec les injections SQL et de commandes, les attaques par inclusion de fichiers constituent les vecteurs d'attaque les plus courants ciblant la sécurité des sites WordPress. Bien que WordPress prouve un niveau élevé de sécurité des applications, des sites hautement personnalisés combinés à de mauvaises pratiques de sécurité peuvent exposer un site Web WordPress à des attaques par injection exploitant les vulnérabilités des entrées.
Chaque jour, de nouvelles vulnérabilités sont découvertes dans la population croissante de plugins et de thèmes WordPress. Et bien qu'ils soient généralement corrigés rapidement, un manque de mises à jour opportunes et la dépendance à l'égard d'anciens logiciels peuvent faire de votre site Web WordPress une cible facile pour les pirates. Aujourd'hui, la sécurité des sites Web est plus critique que jamais. Le nombre croissant de cyberattaques signifie que même les propriétaires de sites Web les plus vigilants peuvent être victimes de pirates s'ils ne prennent pas de mesures proactives pour protéger leurs sites.
iThemes Security Pro est une puissante solution de sécurité WordPress qui vous permet d'adopter les meilleures pratiques de sécurité WordPress pour protéger votre site Web contre les cyberattaques les plus sophistiquées. Avec une surveillance avancée de l'intégrité des fichiers, une analyse des vulnérabilités et une atténuation automatique des attaques, iThemes Security Pro est un excellent choix si vous recherchez un moyen efficace et fiable de protéger votre site WordPress.
Le meilleur plugin de sécurité WordPress pour sécuriser et protéger WordPress
WordPress alimente actuellement plus de 40 % de tous les sites Web, il est donc devenu une cible facile pour les pirates ayant des intentions malveillantes. Le plugin iThemes Security Pro élimine les conjectures de la sécurité de WordPress pour faciliter la sécurisation et la protection de votre site Web WordPress. C'est comme avoir un expert en sécurité à plein temps dans le personnel qui surveille et protège constamment votre site WordPress pour vous.
Kiki possède un baccalauréat en gestion des systèmes d'information et plus de deux ans d'expérience sous Linux et WordPress. Elle travaille actuellement comme spécialiste de la sécurité pour Liquid Web et Nexcess. Avant cela, Kiki faisait partie de l'équipe de support de Liquid Web Managed Hosting où elle a aidé des centaines de propriétaires de sites Web WordPress et a appris les problèmes techniques qu'ils rencontrent souvent. Sa passion pour l'écriture lui permet de partager ses connaissances et son expérience pour aider les gens. Outre la technologie, Kiki aime apprendre sur l'espace et écouter de vrais podcasts sur le crime.