Skip to content

Commit d93bf55

Browse files
committed
Add a module_flavors method for all available flavors
1 parent faa9c11 commit d93bf55

File tree

1 file changed

+17
-14
lines changed

1 file changed

+17
-14
lines changed

lib/msf/core/exploit/cmdstager.rb

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -44,21 +44,10 @@ module Exploit::CmdStager
4444
def initialize(info = {})
4545
super
4646

47-
flavors = []
48-
if module_info['CmdStagerFlavor']
49-
flavors = Array(module_info['CmdStagerFlavor'])
50-
else
51-
targets.each do |target|
52-
flavors += Array(target.opts['CmdStagerFlavor']) if target.opts['CmdStagerFlavor']
53-
end
54-
flavors.uniq!
55-
end
56-
57-
if flavors.empty?
58-
flavors = STAGERS.keys
59-
end
60-
flavors = flavors.map { |flavor| flavor.to_s }
47+
flavors = module_flavors
48+
flavors = STAGERS.keys if flavors.empty?
6149
flavors.unshift('auto')
50+
6251
register_advanced_options(
6352
[
6453
OptEnum.new('CMDSTAGER::FLAVOR', [false, 'The CMD Stager to use.', 'auto', flavors]),
@@ -261,6 +250,20 @@ def guess_flavor
261250
end
262251
end
263252

253+
# Returns all the compatible stager flavors specified by the module and each
254+
# of it's targets.
255+
#
256+
# @return [Array] the list of all compatible cmd stager flavors.
257+
def module_flavors
258+
flavors = []
259+
flavors += Array(module_info['CmdStagerFlavor']) if module_info['CmdStagerFlavor']
260+
targets.each do |target|
261+
flavors += Array(target.opts['CmdStagerFlavor']) if target.opts['CmdStagerFlavor']
262+
end
263+
flavors.uniq!
264+
flavors.map { |flavor| flavor.to_s }
265+
end
266+
264267
# Returns the compatible stager flavors for the current target or module.
265268
#
266269
# @return [Array] the list of compatible cmd stager flavors.

0 commit comments

Comments
 (0)