From dc139ff2fdfc4e7cdee3901dfb863e70913d6b92 Mon Sep 17 00:00:00 2001 From: Trevor Rosen Date: Wed, 7 Dec 2011 17:06:45 -0600 Subject: [PATCH] Fixed erroneous commit --- lib/msf/core/model/campaign.rb | 2 +- lib/msf/core/model/email_template.rb | 2 +- lib/msf/core/model/event.rb | 2 +- lib/msf/core/model/listener.rb | 2 +- lib/msf/core/model/loot.rb | 2 +- lib/msf/core/model/macro.rb | 4 ++-- lib/msf/core/model/nexpose_console.rb | 2 +- lib/msf/core/model/note.rb | 2 +- lib/msf/core/model/profile.rb | 2 +- lib/msf/core/model/report.rb | 2 +- lib/msf/core/model/service.rb | 4 ++-- lib/msf/core/model/session.rb | 2 +- lib/msf/core/model/task.rb | 6 +++--- lib/msf/core/model/user.rb | 2 +- lib/msf/core/model/web_form.rb | 2 +- lib/msf/core/model/web_page.rb | 2 +- lib/msf/core/model/web_site.rb | 6 +++--- lib/msf/core/model/web_template.rb | 2 +- lib/msf/core/model/web_vuln.rb | 2 +- lib/msf/util.rb | 3 +++ lib/msf/util/base64_serializer.rb | 23 +++++++++++++++++++++++ 21 files changed, 51 insertions(+), 25 deletions(-) create mode 100644 lib/msf/util/base64_serializer.rb diff --git a/lib/msf/core/model/campaign.rb b/lib/msf/core/model/campaign.rb index e6e6eb2780..e79d5d7e8e 100644 --- a/lib/msf/core/model/campaign.rb +++ b/lib/msf/core/model/campaign.rb @@ -10,7 +10,7 @@ class Campaign < ActiveRecord::Base extend SerializedPrefs - serialize :prefs + serialize :prefs, Msf::Util::Base64Serializer.new # General settings serialized_prefs_attr_accessor :payload_lhost, :listener_lhost, :payload_type diff --git a/lib/msf/core/model/email_template.rb b/lib/msf/core/model/email_template.rb index 7c609dbdfb..0ce8ec2a4c 100644 --- a/lib/msf/core/model/email_template.rb +++ b/lib/msf/core/model/email_template.rb @@ -7,7 +7,7 @@ class EmailTemplate < ActiveRecord::Base extend SerializedPrefs - serialize :prefs + serialize :prefs, Msf::Util::Base64Serializer.new serialized_prefs_attr_accessor :exploit_module, :exploit_attach_name serialized_prefs_attr_accessor :attach_exe diff --git a/lib/msf/core/model/event.rb b/lib/msf/core/model/event.rb index 09071a2ef2..93aa8a5b70 100644 --- a/lib/msf/core/model/event.rb +++ b/lib/msf/core/model/event.rb @@ -5,7 +5,7 @@ class Event < ActiveRecord::Base include DBSave belongs_to :workspace belongs_to :host - serialize :info + serialize :info, Msf::Util::Base64Serializer.new end end diff --git a/lib/msf/core/model/listener.rb b/lib/msf/core/model/listener.rb index 1931d9e213..6fc65365a9 100644 --- a/lib/msf/core/model/listener.rb +++ b/lib/msf/core/model/listener.rb @@ -7,7 +7,7 @@ class Listener < ActiveRecord::Base belongs_to :workspace belongs_to :task - serialize :options + serialize :options, Msf::Util::Base64Serializer.new end end diff --git a/lib/msf/core/model/loot.rb b/lib/msf/core/model/loot.rb index ff54912832..fe9949bd54 100644 --- a/lib/msf/core/model/loot.rb +++ b/lib/msf/core/model/loot.rb @@ -8,7 +8,7 @@ class Loot < ActiveRecord::Base belongs_to :host belongs_to :service - serialize :data + serialize :data, Msf::Util::Base64Serializer.new end end diff --git a/lib/msf/core/model/macro.rb b/lib/msf/core/model/macro.rb index df8d9399bc..f7ca87eb95 100644 --- a/lib/msf/core/model/macro.rb +++ b/lib/msf/core/model/macro.rb @@ -3,8 +3,8 @@ class DBManager class Macro < ActiveRecord::Base include DBSave - serialize :actions - serialize :prefs + serialize :actions, Msf::Util::Base64Serializer.new + serialize :prefs, Msf::Util::Base64Serializer.new end end diff --git a/lib/msf/core/model/nexpose_console.rb b/lib/msf/core/model/nexpose_console.rb index 6bc9ec06e0..20602dbb00 100644 --- a/lib/msf/core/model/nexpose_console.rb +++ b/lib/msf/core/model/nexpose_console.rb @@ -3,7 +3,7 @@ class DBManager class NexposeConsole < ActiveRecord::Base include DBSave - serialize :cached_sites + serialize :cached_sites, Msf::Util::Base64Serializer.new end end diff --git a/lib/msf/core/model/note.rb b/lib/msf/core/model/note.rb index c43bb67a48..a8b541a96d 100644 --- a/lib/msf/core/model/note.rb +++ b/lib/msf/core/model/note.rb @@ -7,7 +7,7 @@ class Note < ActiveRecord::Base belongs_to :workspace belongs_to :host belongs_to :service - serialize :data + serialize :data, Msf::Util::Base64Serializer.new def after_save if data_changed? and ntype =~ /fingerprint/ diff --git a/lib/msf/core/model/profile.rb b/lib/msf/core/model/profile.rb index 19baef89aa..885a458b8d 100644 --- a/lib/msf/core/model/profile.rb +++ b/lib/msf/core/model/profile.rb @@ -3,7 +3,7 @@ class DBManager class Profile < ActiveRecord::Base include DBSave - serialize :settings + serialize :settings, Msf::Util::Base64Serializer.new end end diff --git a/lib/msf/core/model/report.rb b/lib/msf/core/model/report.rb index 5556e427fb..e5c126bfc7 100644 --- a/lib/msf/core/model/report.rb +++ b/lib/msf/core/model/report.rb @@ -5,7 +5,7 @@ class Report < ActiveRecord::Base include DBSave belongs_to :workspace - serialize :options + serialize :options, Msf::Util::Base64Serializer.new end end diff --git a/lib/msf/core/model/service.rb b/lib/msf/core/model/service.rb index dba6f96864..f30af18946 100644 --- a/lib/msf/core/model/service.rb +++ b/lib/msf/core/model/service.rb @@ -13,8 +13,8 @@ class Service < ActiveRecord::Base has_many :web_pages, :through => :web_sites has_many :web_forms, :through => :web_sites has_many :web_vulns, :through => :web_sites - - serialize :info + + serialize :info, Msf::Util::Base64Serializer.new def after_save if info_changed? diff --git a/lib/msf/core/model/session.rb b/lib/msf/core/model/session.rb index ba6150c0c6..311787377e 100644 --- a/lib/msf/core/model/session.rb +++ b/lib/msf/core/model/session.rb @@ -12,7 +12,7 @@ class Session < ActiveRecord::Base scope :alive, :conditions => "closed_at IS NULL" scope :dead, :conditions => "closed_at IS NOT NULL" - serialize :datastore + serialize :datastore, Msf::Util::Base64Serializer.new end end diff --git a/lib/msf/core/model/task.rb b/lib/msf/core/model/task.rb index 1f58781ca8..ce37b409da 100644 --- a/lib/msf/core/model/task.rb +++ b/lib/msf/core/model/task.rb @@ -6,9 +6,9 @@ class Task < ActiveRecord::Base belongs_to :workspace - serialize :options - serialize :result - serialize :settings + serialize :options, Msf::Util::Base64Serializer.new + serialize :result, Msf::Util::Base64Serializer.new + serialize :settings, Msf::Util::Base64Serializer.new end end diff --git a/lib/msf/core/model/user.rb b/lib/msf/core/model/user.rb index 5753e2014c..57135c408b 100644 --- a/lib/msf/core/model/user.rb +++ b/lib/msf/core/model/user.rb @@ -4,7 +4,7 @@ class DBManager class User < ActiveRecord::Base include DBSave - serialize :prefs + serialize :prefs, Msf::Util::Base64Serializer.new end end diff --git a/lib/msf/core/model/web_form.rb b/lib/msf/core/model/web_form.rb index f672ec9540..3485725fd9 100644 --- a/lib/msf/core/model/web_form.rb +++ b/lib/msf/core/model/web_form.rb @@ -4,7 +4,7 @@ class DBManager class WebForm < ActiveRecord::Base include DBSave belongs_to :web_site - serialize :params + serialize :params, Msf::Util::Base64Serializer.new end end diff --git a/lib/msf/core/model/web_page.rb b/lib/msf/core/model/web_page.rb index 4c0359c679..7c205cde0d 100644 --- a/lib/msf/core/model/web_page.rb +++ b/lib/msf/core/model/web_page.rb @@ -4,7 +4,7 @@ class DBManager class WebPage < ActiveRecord::Base include DBSave belongs_to :web_site - serialize :headers + serialize :headers, Msf::Util::Base64Serializer.new end end diff --git a/lib/msf/core/model/web_site.rb b/lib/msf/core/model/web_site.rb index ef13c73fd0..1ed5bbd47c 100644 --- a/lib/msf/core/model/web_site.rb +++ b/lib/msf/core/model/web_site.rb @@ -7,9 +7,9 @@ class WebSite < ActiveRecord::Base has_many :web_pages, :dependent => :destroy has_many :web_forms, :dependent => :destroy has_many :web_vulns, :dependent => :destroy - - serialize :options - + + serialize :options, Msf::Util::Base64Serializer.new + def to_url(ignore_vhost=false) proto = self.service.name == "https" ? "https" : "http" host = ignore_vhost ? self.service.host.address : self.vhost diff --git a/lib/msf/core/model/web_template.rb b/lib/msf/core/model/web_template.rb index aa5eae41e4..d7bc65e3cc 100644 --- a/lib/msf/core/model/web_template.rb +++ b/lib/msf/core/model/web_template.rb @@ -6,7 +6,7 @@ class WebTemplate < ActiveRecord::Base extend SerializedPrefs - serialize :prefs + serialize :prefs, Msf::Util::Base64Serializer.new serialized_prefs_attr_accessor :exploit_type serialized_prefs_attr_accessor :exploit_name, :exploit_opts diff --git a/lib/msf/core/model/web_vuln.rb b/lib/msf/core/model/web_vuln.rb index fa4729f687..275acd27fc 100644 --- a/lib/msf/core/model/web_vuln.rb +++ b/lib/msf/core/model/web_vuln.rb @@ -4,7 +4,7 @@ class DBManager class WebVuln < ActiveRecord::Base include DBSave belongs_to :web_site - serialize :params + serialize :params, Msf::Util::Base64Serializer.new end end diff --git a/lib/msf/util.rb b/lib/msf/util.rb index 1bd15f77b5..4c5488a606 100644 --- a/lib/msf/util.rb +++ b/lib/msf/util.rb @@ -23,3 +23,6 @@ require 'msf/util/exe' # Parse SVN entries require 'msf/util/svn' + +# Custom ActiveRecord serialization via base64 (Marshal) +require "msf/util/base64_serializer.rb" diff --git a/lib/msf/util/base64_serializer.rb b/lib/msf/util/base64_serializer.rb new file mode 100644 index 0000000000..05ff2a3820 --- /dev/null +++ b/lib/msf/util/base64_serializer.rb @@ -0,0 +1,23 @@ +# 2011-12-07 +# Ported from pro/ui/lib/custom/base64_serializer.rb +# +# Provides ActiveRecord 3.1x-friendly serialization for descendants of +# ActiveRecord::Base +# +# usage: +# serialize :foo, Msf::Util::Base64Serializer.new +# +module Msf::Util + class Base64Serializer + def load(value) + return "" if value.blank? + Marshal.load value.unpack('m').first + end + + def dump(value) + [ Marshal.dump(value) ].pack('m') + end + end +end + +