C’est toujours une bonne idée pour un attaquant de savoir où un WAF est généralement utilisé sur un réseau avant de commencer à prendre des empreintes.

Les testeurs de pénétration doivent être au courant de l’existence d’un WAF avant de commencer à travailler sur une application web, car l’issue de leurs assauts peut en être affectée.

Mais avant cela…

Qu’est-ce qu’un WAF ?

Le WAF(Web Application Firewall ) joue un rôle important dans la sécurité des sites web. Il filtre et surveille le trafic. Les pare-feu pour applications web offrent une protection contre les failles majeures. De nombreuses organisations modernisent leur infrastructure pour y inclure des pare-feux d’application web. Selon les experts en piratage éthique, les pare-feu d’application web ne peuvent pas résoudre seuls les problèmes de sécurité; une configuration adéquate est nécessaire pour reconnaître et bloquer les menaces externes.

Un WAF diffère d’un pare-feu traditionnel en ce qu’il peut filtrer le contenu d’applications en ligne spécifiques, alors que les pare-feu traditionnels agissent comme une barrière de sécurité entre les serveurs.

Une interaction HTTP est soumise à un ensemble de règles. Ces règles traitent des vulnérabilités typiques telles que les scripts intersites et l’injection SQL en général.

Il existe de nombreux outils gratuits et libres sur l’internet qui peuvent découvrir les pare-feux derrière les applications web.

Dans cet article, nous examinerons les approches et les outils qui peuvent être utilisés pour découvrir un WAF.

Remarque : dans ce tutoriel, j’ai utilisé mon propre site pour énumérer les détails. N’effectuez pas de balayage ou d’autres activités de piratage sur un site web sans l’autorisation préalable du propriétaire.

Découverte manuelle

Détection par TELNET

Telnet est principalement utilisé par les administrateurs de réseau et les testeurs de pénétration. Telnet vous permet de vous connecter à des hôtes distants via n’importe quel port, comme indiqué précédemment.

  • Les paramètres HTTP sont souvent laissés (ou insérés) dans les en-têtes de réponse par les pare-feu des applications web.
  • Telnet peut être utilisé pour obtenir des informations de base telles que le serveur et les cookies utilisés dans le cadre de l’empreinte digitale.
  • Tapez Telnet Targetwebsite.com 80
root@writer : # telnet Targetwebsite.com 80
Essai sur 18.166.248.208...
Connecté à Targetwebsite.com.
Le caractère d'échappement est '^]'. 

Après avoir exécuté la commande ci-dessus, écrivez HEAD / HTTP / 1.1 et appuyez sur la touche Entrée.

root@writer : # telnet 18.166.248.208 80 
Essai sur 18.166.248.208... 
Connecté à 18.166.248.208. 
Le caractère d'échappement est '^]'. 
HEAD / HTTP/1.1 
Hôte : 18.166.248.208

HTTP/1.1 200 OK 
Date : SUN, 10 Oct 2021 05:08:03 IST 
Server : Apache X-Powered-By : PHP/5.3.5 ZendServer/5.0 
Set-Cookie : SESSIONID VULN SITE=t25put8gliicvqf62u3ctgjm21 ; path=/ 
Expires : Thu, 19 Nov 1981 08:52:00 IST
Cache-Control : no-store, no-cache, must-revalidate, post-check=0, pre-check=0 
Pragma : no-cache 
X-Varnish : 4723782781
Age : 0
Via : 1.1 varnish
Connexion : close 
Content-Type : text/html

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

Il indique le serveur sur lequel le site web est hébergé et le langage back-end sur lequel il a été créé après avoir utilisé telnet sur le port cible 80.

Certains systèmes WAF permettent de modifier l’en-tête et peuvent également amener le serveur web à envoyer des réponses HTTP différentes des réponses standard.

Comme le montre le résultat ci-dessus, le serveur web a répondu à notre demande et a révélé que le firewall/edge gateway était Varnish.

Découverte automatisée

#1. Détection à l’aide de la NMAP

Nmap, qui dispose d’un script permettant d’identifier un pare-feu d’application web, peut également être utilisé à cette fin.

  • Nmap est un outil d’évaluation de la sécurité que de nombreux pen-testers et administrateurs réseau utilisent couramment.
  • Nmap est utilisé pour obtenir des informations sur la cible.
  • Le script a été exécuté sur la même page web que précédemment
  • Tapez la commande nmap -script=http-waf-fingerprint targetweb.com
root@writer:# nmap --script=http-waf-fingerprint targetwebsite.com
Démarrage de Nmap 7.90 ( https://nmap.org ) à 2021-10-10 07:58 IST
Rapport de scan Nmap pour targetsite.com (18.166.248.208)
 L'hôte est en ligne (latence de 0.24s).
Non montré : 982 ports filtrés
ÉTAT DU PORT SERVICE
53/tcp ouvert domaine
80/tcp ouvert http
| http-waf-fingerprint :
| WAF détecté
| Citrix Netscaler
443/tcp ouvert https
5432/tcp fermé postgresql
8080/tcp fermé http-proxy

Nmap effectué : 1 adresse IP (1 hôte disponible) analysée en 25,46 secondes 

Après avoir utilisé la commande Nmap ci-dessus, le pare-feu Citrix Netscaler a été détecté.

#2. Détection à l’aide de Whatwaf

Whatwaf est un outil de sécurité qui permet de prendre l’empreinte des applications web et de détecter la présence d’un WAF. Cet outil est utile pour déterminer si une application web est protégée par un WAF lors des évaluations de sécurité.

Si c’est le cas, des stratégies de contournement et d’évitement peuvent être utiles pour tester ou exploiter davantage l’ application en ligne.

Le contournement de pare-feu, la détection d’applications, l’empreinte d’applications et l’identification de logiciels sont autant d’utilisations fréquentes de WhatWaf. Réseau
Les Pen-testers et les professionnels de la sécurité sont les utilisateurs prévus de ce programme.

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 lancement, sans version de Python, nous pouvons facilement spécifier un fichier exécutable :

./whatwaf --help   
Cependant, comme nous n'avons pas installé les dépendances de Python 2, il est conseillé de fournir spécifiquement la version de Python.
python3 ./whatwaf --help

Utilisation de l’outil

L’outil de détection de pare-feu Whatwaf est simple à utiliser ! Il suffit d’exécuter la commande suivante :

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

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

Rappelez-vous ! – J’ai utilisé mon propre site pour l’analyse

┌──(root💀kali)-[/home/writer/WhatWaf]
└─# ./whatwaf -u https://www.renjith.org

                                  ,------.
                                 ' .--.  '
        ,--. .--.   ,--. .--.| | | |
        | | | | | | | |'--'  |  |
        | | | | | | | | __.  |
        | |.'.| | | |.'.| | | .'
        | | | | |___|
        | ,'.   | ,'.   |af .---.
        '--' '--' '--' '--' '---'
/><script>alert("WhatWaf?<|>v2.0.3($dev)");</script>

[11:12:34][ERREUR] vous devez d'abord installer psutil `pip install psutil` pour démarrer l'exploitation minière XMR
[11:12:34][INFO] vérification des mises à jour
[11:12:34][WARN] Il est fortement conseillé d'utiliser un proxy lorsque vous utilisez WhatWaf. Faites-le en passant le drapeau proxy (IE `--proxy http://127.0.0.1:9050`) ou en passant le drapeau Tor (IE `--tor`)
[11:12:34][INFO] using User-Agent 'whatwaf/2.0.3 (Language=2.7.18 ; Platform=Linux)'
[11:12:34][INFO] utilisation des charges utiles par défaut
[11:12:34][INFO] test de connexion à l'URL cible avant de lancer l'attaque 
[11:12:35][SUCCESS] connexion réussie, poursuite de l'attaque
[11:12:35][INFO] exécution d'une seule application web 'https://www.renjith.org'
[11:12:35][WARN] L'URL ne semble pas avoir de requête (paramètre), ce qui peut interférer avec les résultats de la détection
[11:12:35][INFO] type de requête : GET
[11:12:35][INFO] collecte des réponses HTTP
[11:12:42][INFO] collecte les réponses normales pour les comparer
[11:12:42][INFO] chargement des scripts de détection du pare-feu
[11:12:42][INFO] Exécution des vérifications de détection du pare-feu
[11:12:44][FIREWALL] détection d'une protection de site web identifiée comme 'Apache Generic'
[11:12:44][INFO] démarrage de l'analyse de contournement
[11:12:44][INFO] chargement des scripts d'altération de la charge utile
[11:12:45][INFO] Exécution des vérifications de contournement de l'altération
[11:19:09][SUCCESS] tampons fonctionnels apparents pour la cible :
------------------------------
(#1) description : falsification de la charge utile en changeant les caractères en caractères génériques
exemple : '/bin/cat /et?/?asswd'
chemin de chargement : content.tampers.randomwildcard
------------------------------

Comme le montre le résultat ci-dessus, le serveur web a répondu à notre demande et a révélé que le pare-feu était Apache. Nous pouvons également utiliser le service tor pour rechercher le WAF, mais cela peut augmenter la latence.

./whatwaf -u https://www.targetsite.com --tor

Le principal avantage de l’outil Whatwaf est qu’il essaie automatiquement de donner les charges utiles pour contourner le pare-feu révélé.

#3. Détection à l’aide de Wafw00f

L’outil le plus connu pour détecter le pare-feu d’application web est Wafw00f. Wafw00f envoie une requête HTTP au pare-feu applicatif pour l’identifier. Si l’envoi de requêtes HTTP échoue, Wafw00f envoie une requête HTTP malveillante. Si l’envoi d’une requête HTTP malveillante échoue, wafw00f examine les requêtes HTTP précédentes et utilise un algorithme simple pour déterminer si le pare-feu d’ application web réagit à nos attaques.

Wafw00f n’est pas préinstallé dans les distributions Kali Linux.

Comment installer Wafw00f ?

Le paquet zip est disponible au téléchargement depuis la source officielle GitHub.

Téléchargez l’outil Wafwoof. Vous pouvez également utiliser le client git pour cloner le dépôt. Pour obtenir le paquet, exécutez les commandes suivantes :

$ git clone https://github.com/EnableSecurity/wafw00f.git

Pour télécharger l’outil wafw00f dans le système, naviguez jusqu’au dossier ou répertoire wafw00f et exécutez la commande suivante.

$ python setup.py install

Le fichier d’installation sera traité et wafw00f sera installé dans le système.

Utilisation de l’outil

Pour utiliser cet outil, exécutez la commande suivante

$ wafw00f <url>

RAPPEL – Ne scannez que les sites web que vous êtes autorisé à tester

┌──(root💀kali)-[/home/writer/wafw00f]
└─# wafw00f https://webhashes.com 

                   ______
                  /      \ 
                 ( Woof ! ) 
                  \ ____/ )      
                  ,, ) (_  
             .-. -    _______ ( |__|   
            ()`` ; |==|_______) .)|__|   
            / (' /|\ ( |__|   
        ( / ) / | \ . |__|   
         \(_)_))      / | \ |__|   

                    ~ WAFW00F : v2.1.0 ~
    La boîte à outils de prise d'empreintes digitales du pare-feu d'application Web (Web Application Firewall Fingerprinting Toolkit)        
                                                                                                                        
[*] Vérifier https://whatismyip.com
[Le site https://whatismyip.com est derrière le WAF de Cloudflare (Cloudflare Inc.).
[Nombre de requêtes : 2

Dommage, le pare-feu a été détecté !

Nous allons essayer un autre site cible pour les besoins de la discussion.

┌──(root💀kali)-[/home/writer/wafw00f]
└─# wafw00f https://renjith.org

                   ______
                  /      \ 
                 ( Woof ! ) 
                  \ ____/ )                                                                       
                  ,, ) (_  
             .-. -    _______ ( |__|    
            ()`` ; |==|_______) .)|__|      
            / (' /|\ ( |__|    
        ( / ) / | \ . |__|    
         \(_)_))      / | \ |__|    

                    ~ WAFW00F : v2.1.0 ~
    La boîte à outils de prise d'empreintes digitales du pare-feu d'application Web (Web Application Firewall Fingerprinting Toolkit)        
                                                                                                                        
[*] Vérification https://renjith.org
[Résultats de la détection générique :
[Aucun WAF n'a été détecté par la détection générique
[Nombre de requêtes : 7

Aucun pare-feu n’est détecté cette fois-ci.

Et pour l’utiliser en mode verbeux, exécutez la commande suivante.

wafw00f <url> -v 

Vous pouvez voir quelques capacités supplémentaires de cet utilitaire en exécutant la commande suivante.

wafw00f <url> --help 

Récapitulation de 👨‍💻

Dans cet article, nous avons examiné différentes stratégies et différents outils pour détecter les pare-feu d’application web. Il s’agit d’une activité importante qui doit être réalisée au cours de la phase de collecte d’informations de chaque test de pénétration d’application web.

En outre, le fait de savoir qu’un WAF est en place permet au testeur de pénétration d’ essayer différentes approches pour contourner les défenses et exploiter les failles de l’application en ligne.

Selon un chercheur en piratage éthique, il est de plus en plus nécessaire de disposer d’un pare-feu d’application web (WAF). Il est toujours important d’analyser les journaux de votre application web pour détecter les nouveaux assauts qui se produisent sur le serveur d’application web dorsal. Cela vous permet de personnaliser les règles de votre pare-feu d’application web afin de fournir le niveau de protection le plus élevé.

Vous pourriez également être intéressé par la lecture de ce document : Vulnérabilités à l’aide de Nikto Scanner.