BBQ: Bloquer les mauvaises requêtes Examen du plugin WordPress

Publié: 2014-01-30

BBQ:Block Bad Queries est un pare-feu d'application Web WordPress qui bloque les requêtes HTTP malveillantes

Il existe de nombreux plugins de sécurité WordPress disponibles, mais seuls quelques-uns traitent correctement la sécurité de WordPress et vous aident à protéger votre installation WordPress contre les attaques de pirates malveillants.

L'un de ces plugins est BBQ: Block Bad Queries. Ce plugin est comme un pare-feu d'application Web WordPress hautement personnalisable, mais simple et sans entretien que chaque administrateur et gestionnaire WordPress devrait installer.

Ce post de sécurité WordPress explique :

  • Fonctionnement de BBQ:Block Bad Queries Plugin
  • Comment personnaliser le plugin BBQ:Block Bad Queries
    • Modification / ajout de motifs à bloquer
    • Bloquer les visiteurs à l'aide d'une chaîne d'agent utilisateur spécifique
    • Configuration d'un nombre maximum de caractères autorisés dans les requêtes HTTP
  • Comment tester BBQ : Bloquer les mauvaises requêtes et vos personnalisations

Fonctionnement du plugin WordPress BBQ:Block Bad Queries

Le plugin BBQ:Block Bad Queries analyse chaque requête envoyée à votre WordPress avant qu'elle ne soit exécutée par le noyau WordPress. Si la requête est malveillante, le plugin interdit au visiteur d'accéder à cette ressource en répondant par un code d'état HTTP 403, accès interdit.

La liste par défaut des blocs de modèles malveillants Block Bad Queries protégera non seulement votre WordPress des attaques ciblées de WordPress, mais protégera également votre WordPress des vulnérabilités potentielles du jour zéro et d'autres attaques typiques telles que les scripts intersites, l'injection SQL et la traversée de répertoires. Par conséquent, si vous installez BBQ:Block Bad Queries, les pirates malveillants ne peuvent toujours pas exploiter les vulnérabilités connues si vous exécutez une installation, un plugin ou un thème WordPress vulnérable (ancien).

Astuce de sécurité WP White : Même si vous exécutez BBQ:Block Bad Queries, vous devez toujours exécuter les versions les plus récentes et les plus sécurisées de WordPress, des plugins et des thèmes. Le plugin WordPress BBQ doit être utilisé comme couche de sécurité supplémentaire plutôt que pour combler les failles de sécurité existantes.

Personnalisation de BBQ:Block Bad Queries Plugin

Par défaut, Bloquer les mauvaises requêtes ne nécessite aucune personnalisation ou modification de la configuration, mais il existe toujours des exceptions aux règles. Si vous avez besoin de personnaliser BBQ:Block Bad Queries, voici une explication de ce que vous pouvez personnaliser. Pour commencer, il analyse trois parties de chaque requête envoyée à une installation WordPress :

Request URI : l'URL demandée par l'utilisateur, par exemple https://www.wpwhitesecurity.com/wordpress-security/

Query String : la chaîne de requête incluse avec l'URL, par exemple https://www.wpwhitesecurity.com/wordpress-security/?query_string=1

Chaîne de l'agent utilisateur : La chaîne de l'agent utilisateur est envoyée automatiquement par le logiciel client accédant à votre WordPress pour s'identifier. Par exemple, Google Chrome utilise la chaîne d'agent utilisateur suivante :

Mozilla/5.0 (Windows NT 6.2 ; Win64 ; x64) AppleWebKit/537.36 (KHTML, comme Gecko) Chrome/32.0.1667.0 Safari/537.36

Tous les modèles généralement utilisés dans les requêtes malveillantes sont stockés dans trois tableaux dans le plugin et leur nom est explicite :

  • $request_uri_array
  • $query_string_array
  • $user_agent_array

BBQ:Block Bad Queries n'a pas d'interface de configuration. Par conséquent, si vous souhaitez effectuer des modifications comme expliqué dans les exemples ci-dessous, vous devez modifier le code à partir du fichier du plugin php.

Modification des requêtes HTTP que le plugin BBQ:Block Bad Queries devrait bloquer

Si vous souhaitez bloquer un type spécifique de chaîne de requête, ajoutez le modèle de chaîne de requête au tableau $query_string_array. Une fois que vous avez ajouté un nouveau modèle, testez-le pour vous assurer que vous ne bloquez pas les demandes légitimes. Un exemple de syntaxe suit :

$query_string_array  = apply_filters( 'query_string_items',  array( 'PATTERN_1', 'PATTERN_2', 'PATTERN_3');

Remarque : Chaque modèle que vous ajoutez doit être déclaré entre guillemets simples (') et séparé des autres modèles par une virgule (,).

Bloquer les visiteurs avec un agent utilisateur spécifique de WordPress

Pour bloquer les visiteurs utilisant un agent utilisateur spécifique, comme les bots automatisés de virus et de logiciels malveillants, ajoutez leur chaîne d'agent utilisateur dans le $user_agent_array.

Configuration d'une limite de longueur d'URL maximale pour WordPress

En limitant le nombre de caractères pouvant être utilisés dans une requête HTTP, vous pouvez protéger votre installation WordPress des attaques du jour zéro et de plusieurs autres attaques malveillantes. Les attaques Zero Day sont des vulnérabilités logicielles qui sont exploitées par des pirates informatiques malveillants mais qui ne sont pas encore connues du fournisseur de logiciels. Par conséquent, aucun correctif n'existe encore.

La plupart des attaques d'applications Web malveillantes utilisent de longues URL pour exploiter les vulnérabilités connues. Par conséquent, si vous limitez le nombre de caractères pouvant être utilisés dans une requête HTTP, vous protégez automatiquement votre installation WordPress de ce type d'attaques.

En limitant le nombre de caractères utilisés dans une URL, vous pouvez également bloquer les requêtes légitimes. Par conséquent, avant d'activer cette fonctionnalité de sécurité, vérifiez quelle est la longueur de l'URL la plus longue que vous avez sur votre installation WordPress (y compris dans la section des pages d'administration WordPress (/wp-admin/).

Pour activer et configurer une longueur d'URL maximale, décommentez (en supprimant '//') la ligne de code ci-dessous dans le plugin et spécifiez le nombre maximum de caractères qu'une requête HTTP peut contenir. La valeur par défaut dans le plugin est 255, comme indiqué ci-dessous.

strlen( $_SERVER['REQUEST_URI'] ) > 255 ||

Test de votre pare-feu d'application Web WordPress

Une fois que vous avez installé le plugin WordPress BBQ:Block Bad Queries, exécutez plusieurs tests en demandant la liste ci-dessous d'exemples d'URL pour vous assurer qu'il fonctionne (remplacez some_site.com par votre domaine) :

  • http://www.some_site.com/../../../etc/passwd
  • http://www. some_site.com/path/?q=%00
  • http://www. some_site.com/path/base64_

Si le plug-in fonctionne correctement, le serveur doit répondre avec un code d'état HTTP de 403 Forbidden lors de la demande de telles URL. Les requêtes ci-dessus ne sont que des exemples d'URL qui doivent être bloquées par le plugin BBQ:Block Bad Requests. Vous pouvez exécuter plusieurs autres tests en utilisant des requêtes généralement utilisées dans des attaques de piratage réelles.

Tester le plugin BBQ:Block Bad Queries avec Fiddler

Si vous n'êtes pas sûr de la réponse du serveur lors de l'envoi de requêtes HTTP malveillantes, vous pouvez confirmer la réponse à l'aide du proxy Fiddler.

Comme indiqué dans la capture d'écran ci-dessous, dans ce test, nous avons demandé l'URL https://www.wpwhitesecurity.com/contact/base64_ et pouvons confirmer que le serveur répond avec une réponse HTTP 403 Forbidden.

Tester BBQ : Bloquer les mauvaises demandes du plugin WordPress avec Fiddler

Block Bad Queries Plugin - Un pare-feu d'application Web pour WordPress

Voilà! Si vous recherchiez un pare-feu d'application Web hautement personnalisable et puissant pour vos blogs et sites Web WordPress, installez le plug-in BBQ:Block Bad Queries et oubliez-le. Vous pouvez télécharger BBQ:Block Bad Queries à partir du référentiel de plugins WordPress ou acheter leur version PRO à partir d'ici.

Si, d'un autre côté, vous préférez quelque chose qui ne nécessite aucune configuration et qui analyse également les logiciels malveillants, je recommanderais le scanner de logiciels malveillants Malcare.