Que sont l'inclusion de fichiers et l'exécution de code arbitraire ? - MalCare
Publié: 2023-04-13Inclusion de fichiers et exécution de code arbitraire : Plus tôt ce mois-ci, un site Web de billets d'avion construit sur WordPress a été piraté, laissant les données personnelles de centaines de milliers de visiteurs exposées. Dans un article précédent sur pourquoi les pirates piratent-ils , nous avons discuté de toutes les raisons pour lesquelles les pirates piratent, y compris le vol de données, l'envoi de spams, ils pourraient même utiliser des techniques de référencement black hat pour classer leurs propres produits (lecture recommandée - pharma hack) , etc.
Apprendre comment les pirates piratent un site Web est essentiel pour les prévenir, c'est pourquoi nous avons répertorié les attaques de piratage les plus courantes effectuées sur les sites Web WordPress dans un article précédent.
Lorsque nous parlons d'attaques de piratage courantes, vous pensez très probablement aux attaques par force brute. Mais saviez-vous que l'inclusion de fichiers et l'exécution de code arbitraire est également l'une des attaques de piratage les plus courantes effectuées sur les sites Web WordPress. Dans cet article, nous allons approfondir un peu ces attaques dans le but de les comprendre en détail.
Pour comprendre le fonctionnement de ces attaques, la première chose que vous devez savoir est qu'il s'agit de fichiers PHP.Vous devez vous demander pourquoi ? C'est parce que les attaques par inclusion de fichiers et par exécution de code arbitraire impliquent l'utilisation de fichiers PHP.
Mais qu'est-ce qu'un fichier PHP ? Pensez à une armoire de cuisine. À l'intérieur de l'armoire, il y a un certain nombre d'articles comme le sucre, le sel, les épices, les ustensiles, etc. Chacun de ces articles a un but à servir dans la cuisine.Un fichier PHP est une armoire et les codes à l'intérieur des fichiers sont les éléments qui permettent l'exécution de certaines fonctions souhaitées par le pirate.C'est la raison pour laquelle les pirates préfèrent télécharger un fichier PHP plutôt que tout autre fichier, comme par exemple un fichier JPEG ou PDF. Les fichiers JPEG et PDF ne sont pas exécutables, c'est-à-dire que les pirates ne peuvent pas utiliser ces fichiers pour exécuter une fonction. On ne peut que les lire (c'est-à-dire les visualiser). Ils ne peuvent pas être utilisés pour apporter des modifications à un site piraté.
Un pirate qui a téléchargé un fichier PHP sur le serveur de votre site Web peut l'utiliser pour faire n'importe quoi sur votre site Web. Et c'est pourquoi les fichiers PHP sont utilisés pour exécuter des attaques d'inclusion de fichiers et d'exécution de code arbitraire.
Qu'est-ce qu'une attaque par inclusion de fichiers ?
La meilleure façon de comprendre une attaque de site Web complexe comme celle-ci est d'illustrer un scénario réel. Supposons que vous gérez un site Web pour votre établissement et que le site s'appelle college.com. Vous autorisez quelques étudiants à accéder au site afin qu'ils puissent publier des photos prises lors d'un récent événement universitaire. Quelqu'un abuse de l'accès que vous avez donné et télécharge un fichier PHP malveillant (nommé hack.php) sur le site Web. L'objectif est de prendre le contrôle des sites Web du collège. Lorsque l'élève télécharge le fichier PHP malveillant, celui-ci est par défaut stocké dans le dossier Upload.Quiconque connaît la structure de base de WordPresssait où va un fichier téléchargé.
Le fichier agit comme une porte permettant au pirate d'interagir avec le fichier à distance. Notez que le pirate n'a toujours pas le contrôle du site, il a juste une fenêtre de communication. Pour faciliter la compréhension, imaginez que la personne A souhaite se rendre dans un pays où elle n'est pas autorisée. Il envoie donc un agent, la personne B. La personne A est le pirate informatique, le pays représente le site Web du collège et la personne B est le fichier hack.php.
Fichiers PHP téléchargés sur le site Web du collège —-> Le fichier est stocké sur le serveur du site Web
La personne B n'est formée que dans peu de choses et ne peut pas faire grand-chose. Ainsi, la personne A doit lui indiquer ce qu'il faut faire ensuite. Dans le même ordre d'idées, le fichier PHP crée une fenêtre de communication puis attend d'autres commandes du pirate.
Supposons que le hack.php est créé de manière à permettre le téléchargement de plus de fichiers sur le site Web. Le pirate crée un fichier (nommé control.php) qu'il télécharge à l'aide de hack.php qui est déjà présent sur le serveur du site Web. Le nouveau fichier - control.php permettra au pirate d'avoir un accès complet au site Web. Il utilise la fenêtre fournie par le fichier hack.php pour télécharger le fichier control.php sur le site.Ce processus de téléchargement du fichier control.php à l'aide d'un fichier (hack.php) déjà présent sur le serveur du site Web s'appelle Local File Inclusion .
Un bon exemple d'exécution de fichier local est la vulnérabilité observée sur le plugin WordPress Easy Forms pour MailChimp (v 6.0.5.5) . En utilisant le plugin MailChimp, les propriétaires de sites Web peuvent ajouter différents types de formulaires à leur site WordPress. Une vulnérabilité permettait aux pirates de télécharger un fichier PHP sur un serveur de site Web à l'aide du formulaire MailChimp.Une fois le fichier stocké sur le serveur du site Web, les pirates ont pu communiquer avec eux et exécuter des codes leur permettant de contrôler le serveur ou d'endommager le site de nombreuses manières.
Voici un scénario : le site Web du collège a un pare-feu installé et, par conséquent, le pirate ne peut pas télécharger le fichier control.php. Bien qu'il ne puisse pas télécharger un autre fichier séparé, il peut "inclure" un fichier. Cela signifie qu'il peut insérer un fichier dans le fichier hack.php qui est déjà présent sur le serveur du site Web du collège. Si le pirate a pu télécharger le fichier control.php, le serveur du site Web lira le fichier et exécutera le code à l'intérieur qui permettra au pirate de faire tout ce qu'il veut. Mais comme il ne peut pas télécharger le fichier, il devra trouver d'autres moyens pour que le serveur lise le fichier control.php. Un chemin créé par un pirate informatique est disponible en ligne et le serveur du site Web du collège devrait pouvoir le lire. Par conséquent, le pirate crée un chemin et les rend disponibles en ligne afin que le serveur du site Web du collège puisse le lire. Le serveur commence alors à exécuter le code acquis à partir du chemin et puisque le code est écrit de manière à permettre au pirate de contrôler totalement le site, le pirate contrôle désormais le site Web du collège. Ce processus permettant au serveur de lire un fichier distant est appelé Remote File Inclusion.
Le cas de vulnérabilité TimThumb est un exemple populaire d'inclusion de fichiers à distance. TimThumb était un plugin WordPress qui permettait d'éditer facilement des images sur un site WordPress. Il permettait à quiconque d'utiliser des images obtenues à partir de sites Web de partage d'images comme imgur.com et flickr.com. TimThumb reconnaît imgur comme un site valide (ou sur liste blanche). Les pirates profitant de ce critère créent des fichiers avec des URL mentionnant un site valide comme http://www.imgur.com.badsite.com.Lorsqu'ils téléchargent un fichier malveillant avec une URL comme celle que nous avons mentionnée ci-dessus, le plugin est trompé en croyant que le fichier provient d'un site Web valide.Et cela permet de télécharger un fichier malveillant sur le serveur du site Web. Tout ce processus d'inclusion d'un fichier malveillant de l'extérieur du serveur du site Web en tirant parti d'une vulnérabilité dans un plugin est l'inclusion de fichiers à distance. Une fois le fichier PHP malveillant stocké sur le serveur du site Web, les pirates peuvent communiquer avec lui pour exécuter les actions souhaitées.
Qu'est-ce qu'une attaque par exécution de code arbitraire ?
Maintenant que nous savons ce qu'est l'inclusion de fichiers distants et locaux, passons à autre chose et essayons de comprendre ce qu'est l'exécution de code arbitraire. L'inclusion de fichiers et l'inclusion de code arbitraire sont interdépendantes. Dans tous les cas d'inclusion de fichiers, le but des pirates est d'exécuter un code arbitraire sur le site Web. Revenons à l'exemple de l'inclusion de fichiers locaux où le pirate a téléchargé un hack.php sur le site Web du collège, puis a téléchargé control.php à l'aide de hack.php.L'expression Arbitrary Code Execution est une description de la capacité d'un pirate à exécuter n'importe quelle commande de son choix sur un site Web piraté.Une fois les fichiers PHP (hack.php et control.php) installés sur le serveur du site, le pirate peut exécuter n'importe quel code qu'il souhaite. Ce processus d'exécution de tout code à partir des fichiers qu'il a téléchargés s'appelle l'exécution de code arbitraire.
Les hacks sont complexes. Dans cet article, nous avons essayé de l'expliquer aussi simplement mais s'il y a une partie qui n'a aucun sens pour vous, nous invitons nos lecteurs à nous écrire . Dans le prochain article, nous discutons d'une autre attaque de piratage courante sur un site WordPress appelée Cross-Site Scripting (XSS). Regarde.