Empêcher l’exécution de scripts PHP dans le dossier uploads de WordPress 1

Tout est dans le titre !

Il s’agit ici de faire un pansement à WordPress histoire de limiter un peu les failles de sécurité, et elles sont nombreuses.

Différentes attaques sévissent actuellement, visant à se servir de votre serveur comme relais pour du spam, ce qui n’est que moyennement cool, vous en conviendrez.

Failles de sécurité WordPress, en bref

On ne va pas s’étaler sur les milliards de possibilités de se faire hacker un WP, on n’aurait pas assez d’une vie. Juste un petit rappel pour éviter de voir son site banni d’un mutualisé ou pire, son dédié bloqué pour abuse :

  1. Je mets à jour le core de mon CMS dès que sort une nouvelle version (elles sont stables, il n’y a pas de beta)
  2. Je mets à jour les extensions/plugins de mon WordPress dès que sort une nouvelle version (idem, mais vérifiez la compatibilité avec la version de votre WP)
  3. Je mets à jour les thèmes dès que sort une nouvelle version (encore une fois idem, même si je sais que je suis censé n’avoir qu’un seul thème sur mon WP, inutile d’en stocker 50, c’est tendre le bâton pour se faire battre..)
  4. Je choisis des mots de passe sécurisés, j’ai bien compris que « toto » et « 0000 » c’était pas ultra secure

Ce n’est évidemment pas la liste exhaustive des choses à faire, mais ça vous permettra de sécuriser contre grand nombre d’attaques.

Comment protéger le répertoire uploads

Vous allez me dire mais pourquoi juste uploads ? Eh bien tout simplement car c’est un répertoire qui, par définition n’est pas prévu pour exécuter des fichiers PHP, donc le patch un peu bourrin que je vais vous exposer est parfait dans ce cas bien précis.

Bon vous l’aurez compris (parce qu’en même temps, je viens de le dire), on va empêcher l’exécution de PHP pour l’ensemble des fichiers se trouvant dans le dossier uploads, lui même se trouvant dans le dossier wp-content (et lui même à la racine de WordPress).

Pour ce faire, rien de plus simple, on suit les étapes suivantes :

  • Je créé un fichier .htaccess dans le répertoire /uploads/ (on part du principe que vous savez faire ça via n’importe quel éditeur de texte + logiciel FTP ou directement en SSH pour les pus foufous d’entre vous)
  • Dans mon fichier je viens renseigner les trois lignes suivantes :

<Files *.php>
SetHandler default-handler
</Files>

  • J’enregistre le fichier et je m’assure que personne à part le propriétaire n’a les droits en écriture (CHMOD 644)

Alors, pour les plus curieux, on met *.php pour dire que c’est tous les fichiers avec l’extension PHP qui seront pris en compte, on ne met surtout pas * sinon on bloque tous les types de fichiers du répertoire !

Ensuite, en gros on dit que le Handler qui prend en charge les fichiers PHP est celui par défaut, donc les fichiers PHP se trouvant dans /uploads/ ne seront plus exécutés mais téléchargés s’ils sont appelés, ce qui empêchera les fonctions qu’ils contiennent d’être exécutées par le serveur et donc le spam de se faire, uniquement pour le dossier /uploads/ hein, ailleurs ça passera. L’avantage de procéder ainsi, c’est que l’on ne bloque pas seulement l’exécution des fichiers PHP mais également celle des fichiers fonctionnant avec le Handler Fast CGI (ou PHP CGI) pour ceux d’entre-vous qui sont à la recherche de performances/sécurisation.

Victime d’une attaque sur votre WordPress ? Venez partager votre expérience en nous contant vos déboires. Et si vous souhaitez que je prenne en charge le nettoyage et la sécurisation de votre site ou de votre serveur, contactez moi.

A propos de Tony (28 Posts)

Développeur Web et consultant SEO, je vous invite à venir échanger et partager sur ce vaste sujet. Je vous propose également mes services en référencement naturel, afin d'améliorer la visibilité de votre site Internet.


One comment on “Empêcher l’exécution de scripts PHP dans le dossier uploads de WordPress

  1. Reply Dge-06 Nov 23, 2015 16 h 01 min

    Si ça peut aider quelqu’un, j’ai développé un plugin wordpress qui permet de détecter les fichier présents dans le wp-upload qui n’ont rien à faire là et de les supprimer.

    Types de fichiers que mon plugin détecte : php, sql, js, htaccess, exe, zip, rar, czip

    https://wordpress.org/plugins/scan-upload-par-jm-crea/

    Enjoy 🙂

Leave a Reply