metasploit-aggregator 0.2.1 → 0.2.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/bin/metasploit-aggregator +1 -1
- data/lib/metasploit/aggregator.rb +8 -2
- data/lib/metasploit/aggregator/connection_manager.rb +12 -0
- data/lib/metasploit/aggregator/forwarder.rb +2 -2
- data/lib/metasploit/aggregator/http/request.rb +0 -12
- data/lib/metasploit/aggregator/router.rb +2 -2
- data/lib/metasploit/aggregator/version.rb +1 -1
- metadata +3 -3
- metadata.gz.sig +3 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 48eefd932eb682e73ba56af27ee94c5c3d963306
|
4
|
+
data.tar.gz: 37d7f536cf5ba43319a45906847277891253e314
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 918a239903e13c853a15f6a8089d1f944f4f965ad0b9f796e7858031c28a009f50302f5a6f7670410c67f760d1c5df0ef6a92f913e5f122dbd6b7c210ffa6bbb
|
7
|
+
data.tar.gz: 383e666fbfc963fab11c77f3f389fb0ea7ab5bc13fe3a27f47a00bbb5a311fcb48c139dcd3f3382f6e6f574b0f887ebb171d49154249e2f5b62b3b8365a05cf5
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/bin/metasploit-aggregator
CHANGED
@@ -27,7 +27,7 @@ loop do
|
|
27
27
|
elsif command.chomp == 'details'
|
28
28
|
client = Metasploit::Aggregator::ServerProxy.new(admin_host, admin_port)
|
29
29
|
sessions = client.sessions
|
30
|
-
sessions.each_pair do |payload,
|
30
|
+
sessions.each_pair do |payload, _console|
|
31
31
|
details = client.session_details(payload)
|
32
32
|
$stdout.puts payload
|
33
33
|
details.each_pair do |key, attr|
|
@@ -105,7 +105,11 @@ module Metasploit
|
|
105
105
|
end
|
106
106
|
|
107
107
|
def available?
|
108
|
-
|
108
|
+
begin
|
109
|
+
@client.available(@no_params).answer
|
110
|
+
rescue GRPC::Unavailable
|
111
|
+
false # unavailable if client throws exception.
|
112
|
+
end
|
109
113
|
end
|
110
114
|
|
111
115
|
def sessions
|
@@ -348,7 +352,9 @@ module Metasploit
|
|
348
352
|
requestingThread = Thread.new do
|
349
353
|
loop do
|
350
354
|
sleep 0.1 # outer loop only occurs until uuid is set
|
351
|
-
|
355
|
+
break unless uuid.nil?
|
356
|
+
end
|
357
|
+
while true
|
352
358
|
request = @local_server.request(uuid)
|
353
359
|
# TODO: with this in place we can just get the request queue and pop each item to process and forward
|
354
360
|
unless request.nil?
|
@@ -18,6 +18,7 @@ module Metasploit
|
|
18
18
|
@manager_mutex = Mutex.new
|
19
19
|
@router = Router.instance
|
20
20
|
@details_cache = SessionDetailService.instance
|
21
|
+
@connection_cleaner = Thread.new { flush_connections }
|
21
22
|
end
|
22
23
|
|
23
24
|
def self.ssl_generate_certificate
|
@@ -182,6 +183,7 @@ module Metasploit
|
|
182
183
|
listener.thread.exit
|
183
184
|
end
|
184
185
|
end
|
186
|
+
@connection_cleaner.exit
|
185
187
|
end
|
186
188
|
|
187
189
|
def park(payload)
|
@@ -189,6 +191,16 @@ module Metasploit
|
|
189
191
|
Logger.log "parking #{payload}"
|
190
192
|
end
|
191
193
|
|
194
|
+
def flush_connections
|
195
|
+
while true
|
196
|
+
@cables.each do |cable|
|
197
|
+
# this relies on a side effect that accessing clears stale connections
|
198
|
+
cable.forwarder.connections.length
|
199
|
+
end
|
200
|
+
sleep 10
|
201
|
+
end
|
202
|
+
end
|
203
|
+
|
192
204
|
private :ssl_parse_certificate
|
193
205
|
end
|
194
206
|
end
|
@@ -22,9 +22,9 @@ module Metasploit
|
|
22
22
|
# TODO: for now before reporting connections flush stale ones
|
23
23
|
flush_stale_sessions
|
24
24
|
connections = {}
|
25
|
-
@response_queues.each_pair do |connection,
|
25
|
+
@response_queues.each_pair do |connection, _queue|
|
26
26
|
forward = 'parked'
|
27
|
-
|
27
|
+
_send, _recv, console = @router.get_forward(connection)
|
28
28
|
unless console.nil?
|
29
29
|
forward = "#{console}"
|
30
30
|
end
|
@@ -23,18 +23,6 @@ module Metasploit
|
|
23
23
|
uri
|
24
24
|
end
|
25
25
|
|
26
|
-
def to_msgpack
|
27
|
-
MessagePack.dump ({
|
28
|
-
:headers => headers,
|
29
|
-
:body => body
|
30
|
-
})
|
31
|
-
end
|
32
|
-
|
33
|
-
def self.from_msgpack(string)
|
34
|
-
data = MessagePack.load string
|
35
|
-
self.new(data['headers'], data['body'].force_encoding(Encoding::ASCII_8BIT), nil)
|
36
|
-
end
|
37
|
-
|
38
26
|
# provide a default response in Request form
|
39
27
|
def self.parked()
|
40
28
|
parked_message = []
|
@@ -53,8 +53,8 @@ module Metasploit
|
|
53
53
|
unless @queue_by_uuid[uuid]
|
54
54
|
@queue_by_uuid[uuid] = Queue.new
|
55
55
|
end
|
56
|
-
@forward_routes.each_pair do |
|
57
|
-
request,
|
56
|
+
@forward_routes.each_pair do |_key, val|
|
57
|
+
request, _response, remote_uuid = val
|
58
58
|
next unless remote_uuid == uuid
|
59
59
|
while !request.empty?
|
60
60
|
@queue_by_uuid[uuid] << request.pop
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: metasploit-aggregator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Metasploit Hackers
|
@@ -88,7 +88,7 @@ cert_chain:
|
|
88
88
|
G+Hmcg1v810agasPdoydE0RTVZgEOOMoQ07qu7JFXVWZ9ZQpHT7qJATWL/b2csFG
|
89
89
|
8mVuTXnyJOKRJA==
|
90
90
|
-----END CERTIFICATE-----
|
91
|
-
date: 2017-
|
91
|
+
date: 2017-09-13 00:00:00.000000000 Z
|
92
92
|
dependencies:
|
93
93
|
- !ruby/object:Gem::Dependency
|
94
94
|
name: bundler
|
@@ -247,7 +247,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
247
247
|
version: '0'
|
248
248
|
requirements: []
|
249
249
|
rubyforge_project:
|
250
|
-
rubygems_version: 2.6.
|
250
|
+
rubygems_version: 2.6.13
|
251
251
|
signing_key:
|
252
252
|
specification_version: 4
|
253
253
|
summary: metasploit-aggregator
|
metadata.gz.sig
CHANGED
@@ -1 +1,3 @@
|
|
1
|
-
|
1
|
+
v��;�� It� {�0�)G�`�z]>��HO;���2�(�(+K��#y�f�q��[b,���
|
2
|
+
c�����A�4ް�h*}�������u�p_E����!�/�6\f`V v{�iw��ִ2^X=u��
|
3
|
+
ޚ�]$���2�g�]���茕0�[���S�P�qTՐ�'2"u��g
|