From 1140b465024a7f513d60fb610eb183c5e1eb7328 Mon Sep 17 00:00:00 2001 From: "sussurro@happypacket.net" Date: Sun, 2 Jan 2011 04:08:33 +0000 Subject: [PATCH] caching of payload info for dynamic modules to help streamline exploit process git-svn-id: https://beef.googlecode.com/svn/trunk@651 b87d56ec-f9c0-11de-8c8a-61c5e9addfc9 --- lib/loader.rb | 3 +++ lib/migration.rb | 17 +++++++++++++++++ lib/modules/msfclient.rb | 9 +++++++++ 3 files changed, 29 insertions(+) diff --git a/lib/loader.rb b/lib/loader.rb index ea8d23e69..0757d7258 100644 --- a/lib/loader.rb +++ b/lib/loader.rb @@ -38,6 +38,9 @@ require 'lib/model/http' require 'lib/model/browserdetails' require 'lib/model/distributedenginerules' require 'lib/model/dynamiccommandinfo' +require 'lib/model/dynamicpayloadinfo.rb' +require 'lib/model/dynamicpayloads.rb' + require 'lib/crypto' diff --git a/lib/migration.rb b/lib/migration.rb index 1247e2a75..5887154a8 100644 --- a/lib/migration.rb +++ b/lib/migration.rb @@ -1,3 +1,4 @@ +require 'pp' module BeEF # @@ -57,6 +58,22 @@ class Migration end end end + + payloads = msf.payloads() + payloads.each do |payload| + if not BeEF::Models::DynamicPayloads.first( :name => payload) + pl = BeEF::Models::DynamicPayloads.new( :name => payload) + pl.save + opts = msf.payload_options(payload) + opts.keys.each do |opt| + next if opts[opt]['advanced'] or opts[opt]['evasion'] + pl.dynamic_payload_info.new(:name => opt, :description => opts[opt]['desc'], :required => opts[opt]['required'], :value => opts[opt]['default']) + end + pl.save + + end + end + end end diff --git a/lib/modules/msfclient.rb b/lib/modules/msfclient.rb index 8234b473c..6f3bfec20 100644 --- a/lib/modules/msfclient.rb +++ b/lib/modules/msfclient.rb @@ -77,6 +77,15 @@ module BeEF res = self.call('module.options','exploit',name) res end + def payloads() + res = self.call('module.payloads') + res['modules'] + end + def payload_options(name) + res = self.call('module.options','payload',name) + res + end + end end