Testeur de vulnérabilité Fortinet FortiWeb CVE-2025-25257
Description
Ce script PowerShell est conçu uniquement à des fins de tests de pénétration autorisés. Il teste les appliances Fortinet FortiWeb pour CVE-2025-25257, une vulnérabilité d'injection SQL non authentifiée dans le point de terminaison /api/fabric/device/status.
Le script :
Ignore les erreurs de certificat TLS pour les environnements de test.
Accepte une cible unique (IP/DNS avec port optionnel) ou une liste de cibles depuis un fichier.
Si aucun port n'est spécifié, il scanne les ports courants : 541, 443, 10443, 8443, 4433.
Envoie une requête HTTP HEAD pour vérifier l'accessibilité du point de terminaison.
S'il est accessible, envoie une requête GET avec une charge utile d'injection SQL dans l'en-tête Authorization pour tester la vulnérabilité.
Avertissement important :
Cet outil est destiné uniquement à un usage éthique et autorisé dans le cadre de tests de pénétration ou d'évaluations de vulnérabilités. Toute utilisation non autorisée peut enfreindre des lois telles que le Computer Fraud and Abuse Act (CFAA) ou les réglementations équivalentes dans votre juridiction. Assurez-vous d'avoir l'autorisation explicite du propriétaire de la cible avant d'exécuter ce script. L'auteur décline toute responsabilité en cas d'utilisation abusive.
Prérequis
PowerShell 5.1 ou ultérieur (compatible avec Windows PowerShell ou PowerShell Core).
Des privilèges d'administrateur peuvent être requis selon votre environnement.
Exécutez le script depuis PowerShell avec l'une des options suivantes :
Cible unique
Spécifiez une seule adresse IP ou un nom DNS, éventuellement avec un port (par ex., 192.168.1.1:443).
root@kitploit:~
.\script.ps1 -Target "192.168.1.1:443"
Ou sans port (scanne les ports par défaut) :
root@kitploit:~
.\script.ps1 -Target "example.com"
Fichier d'entrée
Fournissez un fichier texte avec une cible par ligne (par ex., targets.txt).
root@kitploit:~
.\script.ps1 -InputFile "targets.txt"
Exemple de contenu de targets.txt :
root@kitploit:~
192.168.1.1:443
example.com
10.0.0.1
Résultat
Le script affichera les résultats pour chaque cible et port, y compris :
Vérification d'accessibilité (requête HEAD).
Résultats du test de vulnérabilité (requête GET avec charge utile).
Statut et contenu de la réponse si applicable.
Exemple de résultat :
root@kitploit:~
Testing https://192.168.1.1:443/api/fabric/device/status for CVE-2025-25257
Endpoint accessible (HEAD 200 OK). Proceeding with GET request for vulnerability test.
GET Response Status: 200
Potential vulnerability detected (200 OK with payload). Check content for confirmation.
GET Response Content: {"devices": [...]}
Fonctionnement
Ignorance TLS : Configure PowerShell pour contourner la validation des certificats à des fins de test.
Analyse de la cible : Gère les cibles uniques ou les entrées de fichier, en analysant les ports optionnels.
Scan de ports : Essaie les ports prédéfinis si aucun n'est spécifié.
Requête HEAD : Vérifie si le point de terminaison est accessible.
Requête GET avec charge utile : Utilise un test d'injection SQL dans l'en-tête Authorization (Bearer AAAAAA'or'1'='1).
Indication de vulnérabilité : Une réponse 200 OK avec la charge utile peut indiquer une vulnérabilité ; une vérification manuelle est recommandée.
Limitations
Il s'agit d'un testeur de preuve de concept de base qui n'exploite pas la vulnérabilité — il teste seulement l'exposition potentielle.
Faux positifs/négatifs possibles ; confirmez toujours avec les avis officiels de Fortinet.
Pas de support pour HTTP (HTTPS uniquement).
Délai d'attente défini à 10 secondes par requête.
Contribuer
Les contributions sont les bienvenues ! Veuillez forker le dépôt et soumettre une pull request avec des améliorations, des corrections de bugs ou des fonctionnalités supplémentaires.
Licence
Ce projet est sous licence MIT - voir le fichier LICENSE pour plus de détails.
Références
Détails de CVE-2025-25257 : NIST NVD (espace réservé ; remplacez par le lien réel si disponible).