msfrpc-client 1.1.1 → 1.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.ruby-version +1 -1
- data/Gemfile.lock +15 -35
- data/examples/msfrpc_irb.rb +28 -3
- data/lib/msfrpc-client/client.rb +13 -23
- data/lib/msfrpc-client/version.rb +1 -1
- data/msfrpc-client.gemspec +0 -1
- metadata +3 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: a74d99283250678a38ed24fec054aa04eea762b29013ac9cbed948b6a3bcd057
|
4
|
+
data.tar.gz: cda8be470c197df8257a5c915909cc0982a7f3a176c6ce675fb73c5476f6ef02
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d980b0207db2824c10c44deb6ce9f7613b9dc3b344e66df0b9b04db64057849accac556f56bae38004e95676b457ec67b4d71be19685e59f706396a502772dcb
|
7
|
+
data.tar.gz: 21fd86631a416094c7260e03d370187b14ee1b64f29e4d0866f70693f053e618ae3f06245e8d8890f92ea344c8726bc1d008544ad88e59bcdf1d91f9a326ee55
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.
|
1
|
+
2.5.1
|
data/Gemfile.lock
CHANGED
@@ -1,48 +1,28 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
msfrpc-client (1.1.
|
4
|
+
msfrpc-client (1.1.2)
|
5
5
|
msgpack (~> 1)
|
6
|
-
rex (~> 2)
|
7
6
|
|
8
7
|
GEM
|
9
8
|
remote: https://rubygems.org/
|
10
9
|
specs:
|
11
10
|
diff-lcs (1.3)
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
rake (12.0.0)
|
22
|
-
rb-readline (0.5.4)
|
23
|
-
rex (2.0.11)
|
24
|
-
filesize
|
25
|
-
jsobfu (~> 0.4.1)
|
26
|
-
json
|
27
|
-
metasm (~> 1.0.2)
|
28
|
-
nokogiri
|
29
|
-
rb-readline
|
30
|
-
robots
|
31
|
-
rkelly-remix (0.0.7)
|
32
|
-
robots (0.10.1)
|
33
|
-
rspec (3.6.0)
|
34
|
-
rspec-core (~> 3.6.0)
|
35
|
-
rspec-expectations (~> 3.6.0)
|
36
|
-
rspec-mocks (~> 3.6.0)
|
37
|
-
rspec-core (3.6.0)
|
38
|
-
rspec-support (~> 3.6.0)
|
39
|
-
rspec-expectations (3.6.0)
|
11
|
+
msgpack (1.2.4)
|
12
|
+
rake (12.3.1)
|
13
|
+
rspec (3.8.0)
|
14
|
+
rspec-core (~> 3.8.0)
|
15
|
+
rspec-expectations (~> 3.8.0)
|
16
|
+
rspec-mocks (~> 3.8.0)
|
17
|
+
rspec-core (3.8.0)
|
18
|
+
rspec-support (~> 3.8.0)
|
19
|
+
rspec-expectations (3.8.2)
|
40
20
|
diff-lcs (>= 1.2.0, < 2.0)
|
41
|
-
rspec-support (~> 3.
|
42
|
-
rspec-mocks (3.
|
21
|
+
rspec-support (~> 3.8.0)
|
22
|
+
rspec-mocks (3.8.0)
|
43
23
|
diff-lcs (>= 1.2.0, < 2.0)
|
44
|
-
rspec-support (~> 3.
|
45
|
-
rspec-support (3.
|
24
|
+
rspec-support (~> 3.8.0)
|
25
|
+
rspec-support (3.8.0)
|
46
26
|
|
47
27
|
PLATFORMS
|
48
28
|
ruby
|
@@ -54,4 +34,4 @@ DEPENDENCIES
|
|
54
34
|
rspec (~> 3)
|
55
35
|
|
56
36
|
BUNDLED WITH
|
57
|
-
1.
|
37
|
+
1.17.1
|
data/examples/msfrpc_irb.rb
CHANGED
@@ -3,8 +3,6 @@
|
|
3
3
|
require 'rubygems'
|
4
4
|
require 'optparse'
|
5
5
|
require 'msfrpc-client'
|
6
|
-
require 'rex/ui'
|
7
|
-
|
8
6
|
|
9
7
|
# Use the RPC option parser to handle standard flags
|
10
8
|
opts = {}
|
@@ -23,4 +21,31 @@ if rpc.token
|
|
23
21
|
end
|
24
22
|
|
25
23
|
$stdout.puts "[*] Starting IRB shell..."
|
26
|
-
|
24
|
+
|
25
|
+
load('irb.rb')
|
26
|
+
|
27
|
+
IRB.setup(nil)
|
28
|
+
IRB.conf[:PROMPT_MODE] = :SIMPLE
|
29
|
+
|
30
|
+
# Create a new IRB instance
|
31
|
+
irb = IRB::Irb.new(IRB::WorkSpace.new(binding))
|
32
|
+
|
33
|
+
# Set the primary irb context so that exit and other intrinsic
|
34
|
+
# commands will work.
|
35
|
+
IRB.conf[:MAIN_CONTEXT] = irb.context
|
36
|
+
|
37
|
+
# Trap interrupt
|
38
|
+
old_sigint = trap("SIGINT") do
|
39
|
+
begin
|
40
|
+
irb.signal_handle
|
41
|
+
rescue RubyLex::TerminateLineInput
|
42
|
+
irb.eval_input
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
# Keep processing input until the cows come home...
|
47
|
+
catch(:IRB_EXIT) do
|
48
|
+
irb.eval_input
|
49
|
+
end
|
50
|
+
|
51
|
+
trap("SIGINT", old_sigint)
|
data/lib/msfrpc-client/client.rb
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
# -*- coding: binary -*-
|
2
2
|
|
3
|
+
require 'net/http'
|
4
|
+
require 'openssl'
|
5
|
+
|
3
6
|
# MessagePack for data encoding (http://www.msgpack.org/)
|
4
7
|
require 'msgpack'
|
5
8
|
|
@@ -9,10 +12,6 @@ require 'optparse'
|
|
9
12
|
# Parse configuration file
|
10
13
|
require 'yaml'
|
11
14
|
|
12
|
-
# Rex library from the Metasploit Framework
|
13
|
-
require 'rex'
|
14
|
-
require 'rex/proto/http'
|
15
|
-
|
16
15
|
# Constants used by this client
|
17
16
|
require 'msfrpc-client/constants'
|
18
17
|
|
@@ -44,7 +43,6 @@ module Msf
|
|
44
43
|
uri: '/api/',
|
45
44
|
ssl: true,
|
46
45
|
ssl_version: 'TLS1.2',
|
47
|
-
context: {}
|
48
46
|
}.merge(info)
|
49
47
|
|
50
48
|
self.token = self.info[:token]
|
@@ -126,8 +124,6 @@ module Msf
|
|
126
124
|
else
|
127
125
|
raise e
|
128
126
|
end
|
129
|
-
ensure
|
130
|
-
@cli.close if @cli
|
131
127
|
end
|
132
128
|
end
|
133
129
|
|
@@ -135,9 +131,6 @@ module Msf
|
|
135
131
|
#
|
136
132
|
# @return [void]
|
137
133
|
def close
|
138
|
-
if @cli && @cli.conn?
|
139
|
-
@cli.close
|
140
|
-
end
|
141
134
|
@cli = nil
|
142
135
|
end
|
143
136
|
|
@@ -253,28 +246,25 @@ module Msf
|
|
253
246
|
|
254
247
|
def send_rpc_request(args)
|
255
248
|
unless @cli
|
256
|
-
@cli =
|
257
|
-
@cli.
|
258
|
-
|
259
|
-
agent: "Metasploit RPC Client/#{API_VERSION}",
|
260
|
-
read_max_data: 1024 * 1024 * 512
|
261
|
-
)
|
249
|
+
@cli = Net::HTTP.new(info[:host], info[:port])
|
250
|
+
@cli.use_ssl = info[:ssl]
|
251
|
+
@cli.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
262
252
|
end
|
263
253
|
|
264
|
-
req =
|
265
|
-
'
|
266
|
-
'
|
267
|
-
|
268
|
-
'data' => args.to_msgpack
|
254
|
+
req = Net::HTTP::Post.new(self.info[:uri], initheader = {
|
255
|
+
'User-Agent' => "Metasploit RPC Client/#{API_VERSION}",
|
256
|
+
'Content-Type' => 'binary/message-pack'
|
257
|
+
}
|
269
258
|
)
|
259
|
+
req.body = args.to_msgpack
|
270
260
|
|
271
261
|
begin
|
272
|
-
res = @cli.
|
262
|
+
res = @cli.request(req)
|
273
263
|
rescue => e
|
274
264
|
raise Msf::RPC::ServerException.new(000, e.message, e.class)
|
275
265
|
end
|
276
266
|
|
277
|
-
if res && [200, 401, 403, 500].include?(res.code)
|
267
|
+
if res && [200, 401, 403, 500].include?(res.code.to_i)
|
278
268
|
resp = MessagePack.unpack(res.body)
|
279
269
|
|
280
270
|
# Boolean true versus truthy check required here;
|
data/msfrpc-client.gemspec
CHANGED
@@ -26,7 +26,6 @@ Gem::Specification.new do |spec|
|
|
26
26
|
spec.licenses = ['BSD-2-Clause']
|
27
27
|
|
28
28
|
spec.add_runtime_dependency 'msgpack', '~> 1'
|
29
|
-
spec.add_runtime_dependency 'rex', '~> 2'
|
30
29
|
|
31
30
|
spec.add_development_dependency "bundler", '~> 1'
|
32
31
|
spec.add_development_dependency "rake", '~> 12'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: msfrpc-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- HD Moore
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2018-11-20 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: msgpack
|
@@ -25,20 +25,6 @@ dependencies:
|
|
25
25
|
- - "~>"
|
26
26
|
- !ruby/object:Gem::Version
|
27
27
|
version: '1'
|
28
|
-
- !ruby/object:Gem::Dependency
|
29
|
-
name: rex
|
30
|
-
requirement: !ruby/object:Gem::Requirement
|
31
|
-
requirements:
|
32
|
-
- - "~>"
|
33
|
-
- !ruby/object:Gem::Version
|
34
|
-
version: '2'
|
35
|
-
type: :runtime
|
36
|
-
prerelease: false
|
37
|
-
version_requirements: !ruby/object:Gem::Requirement
|
38
|
-
requirements:
|
39
|
-
- - "~>"
|
40
|
-
- !ruby/object:Gem::Version
|
41
|
-
version: '2'
|
42
28
|
- !ruby/object:Gem::Dependency
|
43
29
|
name: bundler
|
44
30
|
requirement: !ruby/object:Gem::Requirement
|
@@ -129,7 +115,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
129
115
|
version: '0'
|
130
116
|
requirements: []
|
131
117
|
rubyforge_project:
|
132
|
-
rubygems_version: 2.6
|
118
|
+
rubygems_version: 2.7.6
|
133
119
|
signing_key:
|
134
120
|
specification_version: 4
|
135
121
|
summary: Ruby API for the Rapid7 Metasploit RPC service
|