Comment trouver quel WAF protège un site Web ?

Publié: 2021-10-11

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 digitales.

Les testeurs de pénétration doivent être au courant d'un WAF avant de commencer un engagement d'application Web, car le résultat de leurs agressions peut être affecté.

Mais avant ça…

Qu'est-ce que le WAF ?

WAF (Web Application Firewall) joue un rôle important dans la sécurité des sites Web. Ils filtrent et surveillent le trafic. Les pare-feu applicatifs Web offrent une protection contre les failles majeures. De nombreuses organisations modernisent leur infrastructure pour inclure des pare-feu d'applications Web. Selon les experts en piratage éthique, les pare-feu d'applications Web ne peuvent pas résoudre les problèmes de sécurité à eux seuls ; une configuration adéquate est requise 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, tandis 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 open source sur Internet qui peuvent découvrir les pare-feu derrière les applications Web.

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

Veuillez noter : dans ce tutoriel, j'ai utilisé mon propre site pour énumérer les détails. N'effectuez aucune analyse ou autre activité de piratage sur un site Web sans l'autorisation préalable du propriétaire.

Découverte manuelle

Détection à l'aide de TELNET

Telnet est principalement utilisé par les administrateurs réseau et les testeurs d'intrusion. Telnet vous permet de vous connecter à des hôtes distants sur 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 collecte de base telles que le serveur et les cookies utilisés pour la prise d'empreintes digitales.
  • Tapez Telnet Targetwebsite.com 80
 [email protected]: # telnet Targetwebsite.com 80 Trying 18.166.248.208... Connected to Targetwebsite.com. Escape character is '^]'.

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

 [email protected]: # telnet 18.166.248.208 80 Trying 18.166.248.208... Connected to 18.166.248.208. Escape character is '^]'. HEAD / HTTP/1.1 Host: 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 Connection: close Content-Type: text/html Connection closed by foreign host.

Il indique le serveur sur lequel le site Web est hébergé et la langue principale sur laquelle 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 pare-feu/passerelle Edge était Varnish.

Découverte automatisée

#1. Détection à l'aide de NMAP

Nmap, qui possède un script capable 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-testeurs 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 qu'auparavant
  • Tapez la commande nmap –script=http-waf-fingerprint targetweb.com
 [email protected]:# nmap --script=http-waf-fingerprint targetwebsite.com Starting Nmap 7.90 ( https://nmap.org ) at 2021-10-10 07:58 IST Nmap scan report for targetsite.com (18.166.248.208) Host is up (0.24s latency). Not shown: 982filtered ports PORT STATE SERVICE 53/tcp open domain 80/tcp open http | http-waf-fingerprint: | Detected WAF | Citrix Netscaler 443/tcp open https 5432/tcp closed postgresql 8080/tcp closed http-proxy Nmap done: 1 IP address (1 host up) scanned in 25.46 seconds

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

#2. Détection avec Whatwaf

Whatwaf est un outil de sécurité permettant de prendre les empreintes digitales des applications Web et de détecter la présence de tout 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 tel 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 du pare-feu, la détection des applications, les empreintes digitales des applications et l'identification des logiciels sont des utilisations fréquentes de WhatWaf. Réseau
Les pen-testeurs 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 Python, on peut facilement spécifier un fichier exécutable :

 ./whatwaf --help

Cependant, comme nous n'avons pas installé de dépendances Python 2, il est conseillé de fournir spécifiquement la version 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.

Rappel! – J'ai utilisé mon propre site pour le scan

 ┌──(rootkali)-[/home/writer/WhatWaf] └─# ./whatwaf -u https://www.renjith.org ,------. ' .--. ' ,--. .--. ,--. .--.| | | | | | | | | | | |'--' | | | | | | | | | | __. | | |.'.| | | |.'.| | | .' | | | | |___| | ,'. |hat| ,'. |af .---. '--' '--' '--' '--' '---' /><script>alert("WhatWaf?<|>v2.0.3($dev)");</script>%00 [11:12:34][ERROR] you must install psutil first `pip install psutil` to start mining XMR [11:12:34][INFO] checking for updates [11:12:34][WARN] it is highly advised to use a proxy when using WhatWaf. do so by passing the proxy flag (IE `--proxy http://127.0.0.1:9050`) or by passing the Tor flag (IE `--tor`) [11:12:34][INFO] using User-Agent 'whatwaf/2.0.3 (Language=2.7.18; Platform=Linux)' [11:12:34][INFO] using default payloads [11:12:34][INFO] testing connection to target URL before starting attack [11:12:35][SUCCESS] connection succeeded, continuing [11:12:35][INFO] running single web application 'https://www.renjith.org' [11:12:35][WARN] URL does not appear to have a query (parameter), this may interfere with the detection results [11:12:35][INFO] request type: GET [11:12:35][INFO] gathering HTTP responses [11:12:42][INFO] gathering normal response to compare against [11:12:42][INFO] loading firewall detection scripts [11:12:42][INFO] running firewall detection checks [11:12:44][FIREWALL] detected website protection identified as 'Apache Generic' [11:12:44][INFO] starting bypass analysis [11:12:44][INFO] loading payload tampering scripts [11:12:45][INFO] running tampering bypass checks [11:19:09][SUCCESS] apparent working tampers for target: ------------------------------ (#1) description: tamper payload by changing characters into a wildcard example: '/bin/cat /et?/?asswd' load path: 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 aux charges utiles de 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 des applications Web est Wafw00f. Wafw00f envoie une requête HTTP au pare-feu de l'application Web pour l'identifier. Lorsque l'envoi de requêtes HTTP échoue, wafw00f effectue une requête HTTP malveillante. Si 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 de l'application Web réagit à nos attaques.

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

Comment installer Wafw00f ?

Le package zip est disponible en téléchargement à partir de la source officielle GitHub.

Téléchargez l'outil Wafwoof. Vous pouvez également utiliser le client git pour cloner le référentiel. Pour obtenir le package, exécutez les commandes :

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

Pour télécharger l'outil wafw00f dans le système, accédez au dossier ou au 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 cette commande.

 $ wafw00f <url>

RAPPEL – Scannez uniquement les sites Web que vous êtes autorisé à tester

 ┌──(rootkali)-[/home/writer/wafw00f] └─# wafw00f https://webhashes.com ______ / \ ( Woof! ) \ ____/ ) ,, ) (_ .-. - _______ ( |__| ()``; |==|_______) .)|__| / (' /|\ ( |__| ( / ) / | \ . |__| \(_)_)) / | \ |__| ~ WAFW00F : v2.1.0 ~ The Web Application Firewall Fingerprinting Toolkit [*] Checking https://whatismyip.com [+] The site https://whatismyip.com is behind Cloudflare (Cloudflare Inc.) WAF. [~] Number of requests : 2

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

Nous allons essayer un site Web cible différent à des fins de discussion.

 ┌──(rootkali)-[/home/writer/wafw00f] └─# wafw00f https://renjith.org ______ / \ ( Woof! ) \ ____/ ) ,, ) (_ .-. - _______ ( |__| ()``; |==|_______) .)|__| / (' /|\ ( |__| ( / ) / | \ . |__| \(_)_)) / | \ |__| ~ WAFW00F : v2.1.0 ~ The Web Application Firewall Fingerprinting Toolkit [*] Checking https://renjith.org [+] Generic Detection results: [-] No WAF detected by the generic detection [~] Number of requests: 7

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

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

 wafw00f <url> -v

Vous pouvez voir quelques fonctionnalités supplémentaires de cet utilitaire en exécutant cette commande.

 wafw00f <url> --help

Emballer

Dans cet article, nous avons examiné différentes stratégies et outils pour détecter les pare-feu d'applications Web. Il s'agit d'une activité importante qui doit être effectuée au cours de la phase de collecte d'informations de chaque test d'intrusion d'application Web.

De plus, savoir qu'un WAF est en place permet au testeur d'intrusion d'essayer différentes approches pour contourner les défenses et exploiter les éventuelles failles de l'application en ligne.

Selon un chercheur en piratage éthique, disposer d'un pare-feu applicatif Web (WAF) est de plus en plus nécessaire. Il est toujours important d'analyser les journaux de vos applications Web pour détecter les nouvelles attaques se produisant sur le serveur d'applications Web principal. Cela vous permet de personnaliser les règles de votre pare-feu d'application Web pour fournir le plus haut niveau de protection.

Vous pourriez également être intéressé par la lecture : Vulnérabilités utilisant Nikto Scanner.