metasploit-framework/plugins/komand.rb

100 lines
4.7 KiB
Ruby

#
# $Id$
#
# This plugin provides integration with Rapid7 Komand
#
# $Revision$
#
require 'uri'
require 'net/http'
module Msf
class Plugin::Komand < Msf::Plugin
###
#
# This class implements a Komand command dispatcher.
#
###
class KomandCommandDispatcher
include Msf::Ui::Console::CommandDispatcher
#
# The dispatcher's name.
#
def name
"Komand"
end
#
# Returns the hash of commands supported by this dispatcher.
#
def commands
{
'send_asset' => "Send an asset to komand"
}
end
#
# This method handles sending assets to Komand
#
def cmd_send_asset(*args)
if args.length < 3 || args.length > 3
print_line("Invalid arguments passed, format is \'send_asset <url> <api_key> <asset>\'")
else
url_trigger = args[0]
api_key = args[1]
asset = args[2]
url = URI(url_trigger)
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["authorization"] = api_key
request.body = asset
response = http.request(request)
print(response.read_body)
end
end
end
#
# Plugin initialization
#
def initialize(framework, opts)
super
add_console_dispatcher(KomandCommandDispatcher)
banner = ["202f24242020202f24242020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202f24240a7c20242420202f24242f20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020207c2024240a7c202424202f24242f2020202f24242424242420202f2424242424242f242424242020202f24242424242420202f242424242424242020202f242424242424240a7c2024242424242f2020202f24245f5f202024247c2024245f202024245f20202424207c5f5f5f5f202024247c2024245f5f20202424202f24245f5f202024240a7c2024242020242420207c20242420205c2024247c202424205c202424205c20242420202f242424242424247c20242420205c2024247c20242420207c2024240a7c2024245c20202424207c20242420207c2024247c202424207c202424207c202424202f24245f5f202024247c20242420207c2024247c20242420207c2024240a7c202424205c202024247c20202424242424242f7c202424207c202424207c2024247c2020242424242424247c20242420207c2024247c2020242424242424240a7c5f5f2f20205c5f5f2f205c5f5f5f5f5f5f2f207c5f5f2f207c5f5f2f207c5f5f2f205c5f5f5f5f5f5f5f2f7c5f5f2f20207c5f5f2f205c5f5f5f5f5f5f5f2f0a202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200a20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020"].pack("H*")
# Do not use this UTF-8 encoded high-ascii art for non-UTF-8 or windows consoles
lang = Rex::Compat.getenv("LANG")
if (lang and lang =~ /UTF-8/)
# Cygwin/Windows should not be reporting UTF-8 either...
# (! (Rex::Compat.is_windows or Rex::Compat.is_cygwin))
banner = ["202f24242020202f24242020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202f24240a7c20242420202f24242f20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020207c2024240a7c202424202f24242f2020202f24242424242420202f2424242424242f242424242020202f24242424242420202f242424242424242020202f242424242424240a7c2024242424242f2020202f24245f5f202024247c2024245f202024245f20202424207c5f5f5f5f202024247c2024245f5f20202424202f24245f5f202024240a7c2024242020242420207c20242420205c2024247c202424205c202424205c20242420202f242424242424247c20242420205c2024247c20242420207c2024240a7c2024245c20202424207c20242420207c2024247c202424207c202424207c202424202f24245f5f202024247c20242420207c2024247c20242420207c2024240a7c202424205c202024247c20202424242424242f7c202424207c202424207c2024247c2020242424242424247c20242420207c2024247c2020242424242424240a7c5f5f2f20205c5f5f2f205c5f5f5f5f5f5f2f207c5f5f2f207c5f5f2f207c5f5f2f205c5f5f5f5f5f5f5f2f7c5f5f2f20207c5f5f2f205c5f5f5f5f5f5f5f2f0a202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200a20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020"].pack("H*")
end
print("\n" + banner + "\n")
print_status("Komand integration has been activated")
end
def cleanup
remove_console_dispatcher('Komand')
end
def name
"komand"
end
def desc
"Integrates with the Rapid7 Komand orchestration and automation"
end
end
end