metasploit-runner 0.0.8 → 0.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3aa74a612b220bdf4518066c980c75bc676a768a
4
- data.tar.gz: aa3574a74021210c57a9510cb082ae07924e8133
3
+ metadata.gz: 3b62c85eea93ad0811660c4edfd7f47710e2db90
4
+ data.tar.gz: a6f0854d43fea53c523c7d95693a1d876044dd22
5
5
  SHA512:
6
- metadata.gz: c242eb34af6da8d8dd0e773230eb4d660567286f65f5435748ac025124fa0951b7dc3e47d427c2a124800aa61eeb2afd56a346a065536b1bbc5829fa7be4815f
7
- data.tar.gz: 61f2ae1bc235e8eacd839a1b11a4f7c6614a6776e777bf827487d7ffd2cb2cc34a5d7ed81c5dced766202930a67cfbbeae0bdf65f98fa707e16469ddf5cbcf9c
6
+ metadata.gz: e0988fef0a4b916632bc895d131b7cfbb36495d38241553febfd5c0b66e70a891c510995b61f0923e07bf0568845ca34822db6dfb174938aefecf7f411bd9db1
7
+ data.tar.gz: 273ccd1acb8882347c8ab4ec70d23d7a57cebba93b148861b3fd40681c8f58fe550dc9660585536a8b2efa845bc6565b931e96e63f2a220163b83c1b84bb4191
data/README.md CHANGED
@@ -39,12 +39,19 @@ Example WITHOUT Nexpose Console Integration:
39
39
 
40
40
  $ exploit "sploit.mydomain.com" "3790" "/api/1.0" "true" "asdlkjhsdfuw1228340asdasf8" "mycoolsoftware-build-28" "" "10.0.0.1"
41
41
 
42
+ Additionally, a module filter may be passed in to determine which modules are whitelisted to run during an exploit. The module filter parameter is a comma separate value
43
+ for specifying multiple paths.
44
+
45
+ Example WITH Module Filter:
46
+
47
+ $ exploit "sploit.mydomain.com" "3790" "/api/1.0" "true" "asdlkjhsdfuw1228340asdasf8" "mycoolsoftware-build-28" "nexpose-console-1" "10.0.0.1" "exploit/linux,exploit/multi"
42
48
 
43
49
  The if you do not pass the following options they will default to the respective values:
44
50
 
45
51
  port -> 3790
46
52
  uri -> /api/1.0
47
53
  use_ssl -> true
54
+ module_filter -> nil
48
55
 
49
56
  Example using the defaults:
50
57
 
@@ -1,3 +1,3 @@
1
1
  module MetasploitPenTestScript
2
- VERSION = "0.0.8"
2
+ VERSION = "0.0.9"
3
3
  end
@@ -4,7 +4,7 @@ require 'metasploit/exploit_run_description'
4
4
 
5
5
  module Metasploit
6
6
  module Exploit
7
- def Exploit.start(connection_url, port, uri, use_ssl, token, workspace_name, nexpose_console_name, device_ip_to_scan)
7
+ def Exploit.start(connection_url, port, uri, use_ssl, token, workspace_name, nexpose_console_name, device_ip_to_scan, module_filter=nil)
8
8
  run_details = ExploitRunDescription.new connection_url, port, uri, use_ssl, token, workspace_name, nexpose_console_name, device_ip_to_scan
9
9
  run_details.verify
10
10
 
@@ -18,7 +18,7 @@ module Metasploit
18
18
 
19
19
  do_metasploit_audit(rpc_client, run_details)
20
20
 
21
- do_metasploit_exploit(rpc_client, run_details)
21
+ do_metasploit_exploit(rpc_client, run_details, module_filter)
22
22
  end
23
23
 
24
24
  private
@@ -61,8 +61,14 @@ module Metasploit
61
61
  wait_for_task_to_stop_running(rpc_client, CONSTANTS::AUDIT_MESSAGE, audit['task_id'])
62
62
  end
63
63
 
64
- def self.do_metasploit_exploit(rpc_client, run_details)
65
- sploit = rpc_client.call('pro.start_exploit', {'workspace' => run_details.workspace_name})
64
+ def self.do_metasploit_exploit(rpc_client, run_details, module_filter)
65
+ options = {
66
+ 'workspace' => run_details.workspace_name
67
+ }
68
+ if !module_filter.nil?
69
+ options['DS_ModuleFilter'] = module_filter
70
+ end
71
+ sploit = rpc_client.call('pro.start_exploit', options)
66
72
  wait_for_task_to_stop_running(rpc_client, CONSTANTS::EXPLOIT_MESSAGE, sploit['task_id'])
67
73
  end
68
74
 
data/spec/exploit_spec.rb CHANGED
@@ -17,6 +17,7 @@ describe 'exploit' do
17
17
  @expected_webscan_task_id = '12'
18
18
  @expected_import_task_id = '1'
19
19
  @expected_exploit_task_id = '13'
20
+ @expected_exploit_module_filter = 'exploit/linux,exploit/multi'
20
21
  @expected_audit_task_id = '14'
21
22
  @expected_audit_max_requests = 1000
22
23
  @expected_audit_max_minutes = 3
@@ -293,6 +294,13 @@ describe 'exploit' do
293
294
  Metasploit::Exploit.start(@expected_connection, @expected_port, @expected_uri, @expected_ssl, @expected_token, @expected_workspace_name, @expected_nexpose_console_name, @mock_device_ip_to_scan)
294
295
  end
295
296
 
297
+ it 'should use a module filter if one is specified' do
298
+ expect(@mock_rpc_client).to receive(:call)
299
+ .with('pro.start_exploit', {'workspace' => @expected_workspace_name, 'DS_ModuleFilter' => @expected_exploit_module_filter})
300
+
301
+ Metasploit::Exploit.start(@expected_connection, @expected_port, @expected_uri, @expected_ssl, @expected_token, @expected_workspace_name, @expected_nexpose_console_name, @mock_device_ip_to_scan, @expected_exploit_module_filter)
302
+ end
303
+
296
304
  describe 'wait for exploit to be over' do
297
305
  before(:each) do
298
306
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metasploit-runner
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
4
+ version: 0.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nathan Gibson