Aller au contenu
bughunter.pro

Audit de sécurité WordPress, du thème aux extensions.

Un audit de sécurité WordPress, ou pentest WordPress, teste votre site tel qu'il existe réellement : le cœur, mais surtout les extensions, le thème sur mesure, les rôles et tout ce que les années ont empilé dessus. Nos outils maison passent chaque extension en revue, et notre expertise manuelle cherche ce qu'un plugin de sécurité ne voit pas.

En bref

  • Le périmètreLe cœur, les extensions, le thème sur mesure, et le tunnel WooCommerce s'il y en a un.
  • Ce que nous cherchonsDes capacités mal vérifiées, des actions AJAX laissées ouvertes, une API REST bavarde, des uploads et des fichiers oubliés.
  • Ce qu'il nous fautUn compte par rôle réellement utilisé sur le site.
  • Ce que vous recevezUn rapport avec la preuve et le correctif de chaque faille, une restitution avec votre équipe et un retest sous 60 jours.

Vulnérabilités trouvées dans ces secteurs

  • Services publics (.gouv.fr)
  • Groupes du CAC 40
  • Leaders du luxe
  • Médias nationaux
  • Mairies et collectivités

Le problème n'est presque jamais WordPress. C'est ce qu'on a ajouté dessus.

Une extension abandonnée par son auteur, un thème sur mesure vulnérable, une action AJAX qui oublie de vérifier qui l'appelle. Un scanner n'en repère qu'une partie.

Le cœur de WordPress est relu par beaucoup de monde et corrigé vite. Ce n'est presque jamais là que nous trouvons des failles, ni là que les attaquants en trouvent.

Le risque vient de ce qu'on ajoute : une extension gratuite que son auteur a cessé de maintenir, un formulaire de contact qui construit sa requête à la main, un ancien plugin désactivé mais toujours présent sur le serveur, et toujours joignable par son adresse.

Un scan de vulnérabilités ne connaît que les failles déjà publiées. Celles-là se trouvent en lisant et en manipulant le site, ce que font nos outils maison et notre expertise manuelle.

Avant le correctif

Un simple abonné déclenche l'export de tous les comptes : l'extension ne vérifie pas la capacité de l'appelant.

Après le correctif

Adminexport_users200
Abonnéexport_users403

L'action vérifie la capacité à chaque appel : un abonné reçoit un refus.

La même action, un simple abonné. Retournez la carte pour voir la correction.

Quand auditer votre WordPress.

Un site WordPress ne cesse de changer : chaque extension ajoutée, chaque mise à jour, chaque refonte déplace sa surface.

  • Avant la mise en ligne

    Avant qu'un site neuf, ou refait par une agence, ne soit indexé et balayé par les robots.

  • Après l'ajout d'une extension

    Un formulaire, un espace membre ou un module de paiement ajoute une surface qui n'a pas encore été testée.

  • Avant d'ouvrir une boutique

    WooCommerce apporte un tunnel de commande, des remises et des données clients : une vraie logique métier à tester.

  • Une fois par an

    Vos extensions changent de version, parfois de propriétaire, et vous ne savez pas toujours ce qui arrive avec.

  • Après un piratage ou une alerte

    Nettoyer ne suffit pas : il faut savoir par quelle extension c'est entré, et fermer la porte.

Ce que nous testons.

Six familles de failles WordPress, cherchées à chaque audit, et l'endroit de votre site où chacune se cache.

  • Versions vulnérables connues, et aussi les failles propres à votre configuration et à vos combinaisons d'extensions.

  • Requêtes construites à la main, sorties non échappées, fichiers PHP appelables directement.

  • Ce qu'un abonné, un contributeur ou un auteur atteint réellement, et les actions AJAX qui oublient de vérifier sa capacité ou son Le jeton à usage unique que WordPress joint à une action pour prouver qu'elle vient bien de votre site..

  • Routes exposées par défaut ou par les extensions, énumération des utilisateurs, écriture non contrôlée.

  • Types de fichiers acceptés à l'upload, exécution possible, sauvegardes, journaux de débogage et dépôts Git laissés en ligne.

  • Tunnel de commande, règles de remise, L'appel que votre prestataire de paiement envoie à votre site pour confirmer une commande : s'il n'est pas vérifié, il peut être imité. de paiement et accès aux données des clients, si la boutique est en place.

Comment se déroule un audit WordPress.

Six étapes, du cadrage au retest, pensées pour ce qu'on a ajouté au cœur.

Lire la méthodologie complète
  1. 01

    Cadrage

    On fixe avec vous le périmètre : le site, les rôles utilisés, ce qui a été développé pour vous et ce qui est exclu. NDA dès que l'on entre dans le détail technique, convention d'autorisation de test d'intrusion une fois le devis signé, avant tout accès.

  2. 02

    Inventaire

    Recensement des extensions et de leurs versions, du thème, des points d'entrée exposés, et de tout ce qui traîne sur le serveur sans être référencé nulle part. Cette étape seule remonte régulièrement des surprises : une ancienne préproduction encore accessible, une sauvegarde téléchargeable, une extension désactivée mais toujours atteignable.

  3. 03

    Test des rôles

    Nous nous connectons avec chaque rôle et tentons d'atteindre ce qui ne lui est pas destiné : actions d'administration, contenus d'autres auteurs, réglages du site, actions AJAX réservées. Les escalades de privilèges dans WordPress viennent le plus souvent d'une capacité mal vérifiée dans une extension.

  4. 04

    Analyse du sur-mesure

    Le code écrit pour vous reçoit l'attention la plus soutenue, parce qu'aucune base de failles publiques ne le couvre : formulaires, requêtes, affichage des données saisies par les utilisateurs, traitement des fichiers.

  5. 05

    Rapport et restitution

    Un rapport classé par gravité réelle, avec une preuve de concept reproductible et une correction concrète pour chaque faille, formulée pour la personne qui maintient votre site. Puis une restitution avec votre équipe. Voir un exemple de rapport.

  6. 06

    Retest & clôture

    Une fois les correctifs en place, nous rejouons chaque faille. Une extension mise à jour ne corrige pas toujours le problème : le retest, inclus, le vérifie.

Boîte noire, grise ou blanche.

Ce que vous nous donnez au départ décide de ce que l'audit peut atteindre. Sur WordPress, notre conseil : un compte par rôle réellement utilisé.

Boîte noire : l'adresse, rien d'autre

Vous fournissez
L'adresse du site. Aucun compte, aucun accès aux fichiers.
Le test atteint
Ce qu'un visiteur atteint : extensions et versions exposées, API REST, xmlrpc.php, fichiers oubliés. La connexion arrête le reste, sauf faille pour la franchir.
À choisir quand
Vous voulez savoir ce qu'un robot ou un inconnu trouve sur votre site depuis Internet.

Boîte grise : un compte par rôle Notre conseil

Vous fournissez
Un compte pour chaque rôle réellement utilisé : abonné, client, auteur, éditeur, et un administrateur si les escalades de privilèges sont dans le périmètre.
Le test atteint
Tout ce que chaque rôle atteint, et surtout ce qu'il ne devrait pas : actions AJAX, réglages, contenus des autres.
À choisir quand
Dans presque tous les cas : c'est ainsi que se trouvent les escalades de privilèges.

Boîte blanche : les comptes et le code

Vous fournissez
Les comptes, plus un accès en lecture au thème et aux extensions développés pour vous.
Le test atteint
Aussi la logique écrite dans votre code sur mesure, qu'aucun scanner ne couvre.
À choisir quand
Quand une bonne partie des fonctionnalités a été développée sur mesure.

Ce que ça donne en pratique.

Des failles réelles trouvées sur des sites WordPress, toutes corrigées depuis.

+184

rapports envoyés avec une vulnérabilité critique

Sur plus de 485 rapports envoyés, en test d'intrusion et en bug bounty.

+485

rapports envoyés au total

En test d'intrusion et en bug bounty.

Actifs en bug bounty

Chercheurs sur YesWeHack et Intigriti, deux plateformes européennes où chaque faille est vérifiée avant d'être acceptée.

YesWeHackIntigriti
  • Critique

    Escalade de privilèges

    Action AJAX d'une extension enregistrée sans vérification de capacité, atteignable par un simple abonné.

    Corrigée
  • Critique

    Injection SQL

    Filtre de recherche d'un thème sur mesure construisant sa requête par concaténation.

    Corrigée
  • Critique

    Exposition de fichiers

    Sauvegarde complète de la base laissée téléchargeable à une adresse devinable.

    Corrigée
  • Élevée

    XSS stockée

    Champ d'un formulaire d'extension affiché sans échappement dans l'interface d'administration.

    Corrigée

Nous ne divulguons jamais le nom d'un client, ni aucun détail qui permettrait de le reconnaître.

Le rapport que vous recevez.

Chaque faille prouvée, expliquée et rattachée à l'extension ou au fichier en cause : lisible par votre direction, applicable par votre équipe ou votre prestataire.

bughunter.pro Confidentiel, sous NDA
Rapport d'audit de sécurité WordPress
Exemple interactif, construit à partir des failles présentées plus haut
Critique3
Élevée1
Moyenne0

Une action réservée aux administrateurs, déclenchable par un simple abonné, c'est-à-dire par n'importe qui pouvant créer un compte sur le site.

GravitéCritique, depuis un compte abonné

Requêtes, captures et étapes de reproduction : caviardées dans cet exemple. Votre rapport contient chacune d'elles, prête à rejouer.

Vérifier la capacité de l'appelant et le nonce dans chaque action AJAX enregistrée, et refuser par défaut.

PrioritéImmédiate, retest inclus

Le filtre de recherche du thème construisait sa requête par concaténation : la base de données du site, lisible depuis un simple champ de recherche.

GravitéCritique, un champ de recherche

Requêtes, captures et étapes de reproduction : caviardées dans cet exemple. Votre rapport contient chacune d'elles, prête à rejouer.

Passer toutes les requêtes du thème par les requêtes préparées de WordPress, et ne jamais concaténer une saisie.

PrioritéImmédiate, retest inclus

Une sauvegarde complète de la base, téléchargeable à une adresse devinable : comptes, contenus et données clients en un seul fichier.

GravitéCritique, une adresse devinée

Requêtes, captures et étapes de reproduction : caviardées dans cet exemple. Votre rapport contient chacune d'elles, prête à rejouer.

Retirer les sauvegardes du répertoire public, les stocker hors du site et bloquer le téléchargement des archives.

PrioritéImmédiate, retest inclus

Restitution avec votre équipe Corrigé et retesté
  • Rapport priorisé

    Chaque faille du site classée par gravité réelle : ce qu'un attaquant obtiendrait vraiment, pas un score théorique.

  • Preuve de concept reproductible

    Les requêtes exactes, que votre équipe ou votre prestataire rejoue sur une copie du site pour voir la faille de ses yeux.

  • Impact métier

    Quels comptes, quelles données, quelles commandes sont exposés, dit en clair pour votre direction.

  • Correctifs précis

    La mise à jour, le réglage ou la correction de code attendus, formulés pour la personne qui maintient votre site.

  • Retest inclus

    Une fois les correctifs en place, chaque faille est rejouée : elle n'est close que lorsque la preuve ne passe plus.

  • Restitution & échange

    Un échange avec vous et votre équipe technique pour parcourir les failles et prioriser les corrections.

Combien ça coûte.

Sur devis, et voici pourquoi : deux sites WordPress d'apparence identique peuvent cacher des volumes de code très différents. Pour vous situer, voici nos tarifs selon le type de mission.

  • À partir de2 700 € TTC

    Site vitrine ou boutique

    Quatre à six jours. Un site WordPress, ses extensions, ses formulaires et, s'il y en a une, sa boutique WooCommerce.

  • À partir de7 500 € TTC

    Application métier ou SaaS

    Dix à quinze jours ou plus. Un WordPress devenu plateforme : espaces membres, rôles multiples, développements sur mesure.

  • À partir de3 200 € TTC

    API ciblée

    Quatre à huit jours. L'API REST d'un WordPress qui sert une application ou un front découplé.

Ce qui fait varier le prix

Le volume de code sur mesure, d'abord : un site monté avec des extensions du dépôt officiel et un thème du commerce demande beaucoup moins de temps qu'un site dont la moitié des fonctionnalités a été développée sur mesure.

Ensuite le nombre d'extensions, et surtout leur nature : celles qui ajoutent des formulaires, des espaces membres, des droits ou des paiements comptent bien plus que celles qui gèrent un cache. Enfin la présence de WooCommerce ou d'un espace client, qui ajoute une couche entière de logique métier.

Le premier échange sert à savoir dans quel cas vous êtes, sans engagement. Si votre site demande moins que prévu, nous vous le dirons.

25vérifications de capacité

Doit être accordéDoit être refusé

Chaque case est une vérification. Ce rôle a-t-il cette capacité, et chaque extension la vérifie-t-elle vraiment ?

Vos questions, nos réponses.

Une autre question ?

Nous contacter
WordPress est-il un CMS peu sûr ?

Le cœur de WordPress est audité en permanence et corrigé vite. Le risque vient de l'écosystème : des extensions écrites par des auteurs très inégaux, des thèmes sur mesure vulnérables, et des sites qui accumulent des années de dépendances. En pratique, presque toutes les compromissions que nous voyons passent par un élément ajouté, pas par le cœur.

Un plugin de sécurité ne suffit-il pas ?

Un plugin de sécurité bloque les attaques connues et génériques, ce qui est utile. Il ne détecte pas qu'une extension expose une action AJAX sans vérification de capacité, ni qu'un formulaire développé sur mesure permet une injection. Ces failles sont souvent propres à votre installation, donc absentes des bases de signatures.

L'audit se fait-il sur le site en production ?

Oui dans la plupart des cas, sans interruption de service. Les tests destructifs sont exclus par défaut. Si vous disposez d'une copie de préproduction fidèle, on peut y mener les tests les plus intrusifs, puis confirmer les points sensibles en production.

Faut-il vous donner un accès administrateur ?

Un compte de chaque rôle utilisé sur le site est recommandé, y compris un compte administrateur si le périmètre inclut les escalades de privilèges. C'est ce qui permet de vérifier qu'un abonné ou un contributeur ne peut pas atteindre des capacités qui ne lui reviennent pas.

Testez-vous aussi WooCommerce ?

Oui. Une boutique WooCommerce ajoute un tunnel de commande, des règles de remise, des webhooks de paiement et des données clients, donc une surface de logique métier importante. C'est souvent la partie la plus intéressante à tester sur un site WordPress.

Faites auditer votre WordPress.

Votre site WordPress est une cible.

Dites-nous combien d'extensions compte votre site, s'il a un thème sur mesure, et s'il y a un espace client ou une boutique. Nous répondons avec un cadrage et un devis. Premier échange sans engagement.