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 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 permettent de découvrir les pare-feu derrière les applications web.
Dans cet article, nous allons examiner 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 scan ou d'autres activités de piratage sur un site web sans l'autorisation préalable de son propriétaire.
Découverte manuelle
Détection à l'aide de 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 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 base telles que le serveur et les biscuits utilisés dans le cadre de l'empreinte digitale.
- Tapez
Telnet Targetwebsite.com 80
root@writer : # telnet Targetwebsite.com 80
Essayer 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 de 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
Connection : close
Content-Type : text/html
Connexion fermée par un 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 pare-feu/passerelle de périphérie était Varnish.
Découverte automatisée
#1. Détection à l'aide de NMAP
Nmap, qui dispose d'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-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 ) at 2021-10-10 07:58 IST
Rapport de scan Nmap pour targetsite.com (18.166.248.208)
L'hôte est en ligne (0.24s latency).
Non montré : 982 ports filtrés
PORT STATE SERVICE
53/tcp open domain
80/tcp open http
| http-waf-fingerprint :
| WAF détecté
| Citrix Netscaler
443/tcp open https
5432/tcp closed postgresql
8080/tcp closed http-proxy
Nmap done : 1 adresse IP (1 hôte en place) 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 utilisateurs de ce programme sont les pen-testers 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 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][ERROR] vous devez d'abord installer psutil `pip install psutil` pour commencer à miner XMR
[11:12:34][INFO] vérification des mises à jour
[11:12:34][WARN] il est fortement conseillé d'utiliser un proxy lors de l'utilisation de 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] utilisant les charges utiles par défaut
[11:12:34][INFO] testant la connexion à l'URL cible avant de lancer l'attaque
[11:12:35][SUCCESS] connexion réussie, poursuite
[11:12:35][INFO] exécutant l'application web unique 'https://www.renjith.org'
[11:12:35][WARN] L'URL ne semble pas avoir de requête (paramètre), cela 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 les 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] altération apparente de la cible :
------------------------------
(#1) description : altération de la charge utile en changeant les caractères en un joker
exemple : '/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 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 d'application web 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 de l'application web réagit à nos attaques.
Wafw00f n'est pas préinstallé dans les distributions Kali Linux.
Commentaire installer Wafw00f ?
Le paquet zip peut être téléchargé à partir de 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
______
/ \N-
( Woof ! )
\N- ____/ )
,, ) (_
.-. - _______ ( |__|
()`` ; |==|_______) .)|__|
/ (' /|\N- ( |__|
( / ) / | \N- . |
\(_)_)) / | \N-
~ WAFW00F : v2.1.0 ~
The Web Application Firewall Fingerprinting Toolkit
[*] Checking 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 ! )
\ ____/ )
,, ) (_
.-. - _______ ( |__|
()`` ; |==|_______) .)|__|
/ (' /|\N- ( |__|
( / ) / | \N- . |
\(_)_)) / | \N-
~ 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 Firewall 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
Conclusion 👨💻
Dans cet article, nous avons examiné différentes stratégies et différents outils pour détecter les pare-feux d'application web. Il s'agit d'une activité importante qui doit être réalisée au cours de l'étape de collecte d'informations de chaque test de pénétration d'l'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.