Comment trouver quel WAF protège un site Web

Photo of author

By pierre



Il est toujours avisé, pour un attaquant, de déterminer la présence d’un WAF sur un réseau avant de débuter toute tentative d’identification.

Les experts en tests d’intrusion doivent tenir compte de l’existence d’un WAF avant de s’engager dans l’évaluation d’une application web, car cela peut influencer le résultat de leurs attaques.

Mais avant d’aller plus loin…

Qu’est-ce qu’un WAF exactement ?

Un pare-feu d’application web (WAF) est un élément clé dans la protection d’un site web. Il agit en filtrant et surveillant le trafic. Ces pare-feux offrent une barrière contre les vulnérabilités critiques. De nombreuses entreprises modernisent leurs infrastructures en y intégrant des WAF. Cependant, les spécialistes en cybersécurité rappellent que les WAF ne sont pas une solution miracle : une configuration adéquate est nécessaire pour identifier et bloquer efficacement les menaces externes.

Un WAF se distingue d’un pare-feu classique par sa capacité à filtrer le contenu spécifique des applications web, tandis que les pare-feux traditionnels se contentent de sécuriser les échanges entre les serveurs.

Les communications HTTP sont régies par un ensemble de règles qui visent à contrer les vulnérabilités courantes, telles que les attaques de type cross-site scripting (XSS) et les injections SQL.

De nombreux outils, gratuits et open source, sont disponibles en ligne pour identifier les pare-feux qui protègent les applications web.

Dans cet article, nous allons explorer différentes méthodes et outils pour détecter la présence d’un WAF.

Note importante : cet article est basé sur des tests réalisés sur mon propre site web à des fins de démonstration. N’effectuez jamais d’analyse ou de tentative d’intrusion sur un site sans l’autorisation préalable de son propriétaire.

Détection Manuelle

Détection par TELNET

Telnet est un outil principalement utilisé par les administrateurs réseau et les testeurs d’intrusion. Il permet de se connecter à des hôtes distants sur n’importe quel port.

  • Les informations HTTP sont souvent incluses dans les en-têtes de réponse par les pare-feux d’applications web.
  • Telnet peut être employé pour collecter des informations de base, comme le serveur et les cookies utilisés lors du processus d’identification.
  • Saisissez la commande : Telnet nomdusite.com 80
utilisateur@machine: # telnet nomdusite.com 80
Tentative de connexion à l'adresse IP...
Connecté à nomdusite.com.
Caractère d'échappement : '^]'. 

Une fois la commande exécutée, entrez `HEAD / HTTP / 1.1` et validez avec la touche Entrée.

utilisateur@machine: # telnet 192.168.1.100  80
Tentative de connexion à 192.168.1.100...
Connecté à 192.168.1.100.
Caractère d'échappement : '^]'.
HEAD / HTTP/1.1
Host: 192.168.1.100

HTTP/1.1 200 OK
Date: Ven, 25 Oct 2024 10:00:00 GMT
Server: Nginx
Content-Type: text/html; charset=UTF-8
Connection: close
Set-Cookie: PHPSESSID=abcdefghijklmnopqrstuvwxyz; path=/; HttpOnly
X-Cache: MISS from proxy
Via: 1.1 proxy.example.com
X-Powered-By: PHP/8.0
Age: 5

Connexion fermée par l'hôte distant.

Cette commande permet de déterminer le serveur sur lequel le site est hébergé, ainsi que le langage principal utilisé pour sa création. Cela révèle des informations après l’utilisation de telnet sur le port 80.

Certains WAF peuvent altérer l’en-tête, ce qui peut entraîner des réponses HTTP différentes des réponses standards.

Comme indiqué dans l’exemple ci-dessus, le serveur a répondu à notre demande, révélant que le pare-feu/passerelle périphérique est un serveur Nginx.

Détection Automatisée

#1. Détection avec NMAP

Nmap est un outil qui possède un script permettant d’identifier un pare-feu d’application web.

  • Nmap est un outil d’évaluation de sécurité couramment utilisé par les testeurs d’intrusion et les administrateurs réseau.
  • Nmap est utilisé pour recueillir des informations sur une cible.
  • Le script a été testé sur le même site web qu’auparavant.
  • Saisissez la commande : nmap –script=http-waf-fingerprint nomdusite.com
utilisateur@machine:# nmap --script=http-waf-fingerprint nomdusite.com
Démarrage de Nmap 7.90 ( https://nmap.org ) le 2024-10-25 12:00 CEST
Rapport d'analyse Nmap pour nomdusite.com (192.168.1.100)
L'hôte est actif (latence de 0.12s).
Ports filtrés non affichés : 982
PORT    STATE SERVICE
22/tcp    open  ssh
80/tcp    open  http
| http-waf-fingerprint:
|   WAF détecté :
|   ModSecurity
443/tcp  open   https
3306/tcp closed mysql

Nmap fait : 1 adresse IP (1 hôte actif) analysée en 15.46 secondes

Après l’exécution de la commande Nmap ci-dessus, le pare-feu ModSecurity a été détecté.

#2. Détection avec WhatWaf

WhatWaf est un outil de sécurité dédié à l’identification des applications web et à la détection de la présence d’un WAF. Il est très utile lors d’évaluations de sécurité pour déterminer si une application web est protégée par un WAF.

Le cas échéant, des techniques de contournement et d’évitement peuvent être utilisées pour tester ou exploiter l’application.

WhatWaf est régulièrement employé pour le contournement de pare-feux, la détection d’applications, l’identification d’applications et la reconnaissance de logiciels. Cet outil cible les testeurs d’intrusion et les professionnels de la sécurité.

Comment installer WhatWaf ?

Installation sur Kali-Linux :

sudo apt install python3-pip

git clone https://github.com/ekultek/whatwaf

cd whatwaf

sudo pip3 install -r requirements.txt

Au démarrage, sans version Python spécifique, il est possible de cibler un fichier exécutable :

./whatwaf --help

Cependant, comme les dépendances Python 2 ne sont pas installées, il est recommandé de préciser la version de Python :

python3 ./whatwaf --help

Utilisation de l’outil

L’outil de détection de pare-feu WhatWaf est simple à utiliser : exécutez simplement la commande suivante :

./whatwaf -u https://www.nomdusite.com

Comme illustré ci-dessous, l’outil a détecté le pare-feu pour l’URL du site web fourni.

Important : cet exemple a été réalisé sur mon propre site à des fins de test.

utilisateur@machine:~/WhatWaf
# ./whatwaf -u https://www.monsite.com

                                  ,------.
                                 '  .--.  '
        ,--.   .--.   ,--.   .--.|  |  |  |
        |  |   |  |   |  |   |  |'--'  |  |
        |  |   |  |   |  |   |  |    __.  |
        |  |.'.|  |   |  |.'.|  |   |   .'
        |         |   |         |   |___|
        |   ,'.   |hat|   ,'.   |af .---.
        '--'   '--'   '--'   '--'   '---'
/>