pwn 0.4.453 → 0.4.458
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 +4 -4
- data/Gemfile +1 -1
- data/README.md +2 -2
- data/bin/pwn_nessus_cloud_scan_crud +2 -2
- data/bin/pwn_nessus_cloud_vulnscan +4 -4
- data/lib/pwn/plugins/msr206.rb +272 -0
- data/lib/pwn/plugins/nessus_cloud.rb +23 -23
- data/lib/pwn/plugins.rb +1 -0
- data/lib/pwn/version.rb +1 -1
- data/spec/lib/pwn/plugins/msr206_spec.rb +15 -0
- metadata +7 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 85a03a42892f8f86f382af989d14ecb6abdff9043de8d4e6b45609c659d25a5a
|
4
|
+
data.tar.gz: 5ad007f33886674f720ab1ba73fff4da5cb1cfdeec8a5f5202de8fd4707c60ce
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 831872dde165783f8f102c094d29b6d73b7556b29ec6d97567b97324cddf4fdf72e87861100e2cd4d9cbf302f453ede7b0f79ddb8369c4018e4d5d44a9990c0d
|
7
|
+
data.tar.gz: 3cef3140532c9f1368aec2f9290dc79a52c19b810a0861a982655c35681d6ff8b35fe04a72aa4314bfd974909aab42c7171f2aec685096d3d5e0b3d8eecafa49
|
data/Gemfile
CHANGED
@@ -67,7 +67,7 @@ gem 'ruby-nmap', '0.10.0'
|
|
67
67
|
gem 'ruby-saml', '1.14.0'
|
68
68
|
gem 'rvm', '1.11.3.9'
|
69
69
|
gem 'savon', '2.12.1'
|
70
|
-
gem 'selenium-devtools', '0.
|
70
|
+
gem 'selenium-devtools', '0.102.0'
|
71
71
|
gem 'serialport', '1.3.2'
|
72
72
|
gem 'sinatra', '2.2.0'
|
73
73
|
gem 'slack-ruby-client', '1.0.0'
|
data/README.md
CHANGED
@@ -37,7 +37,7 @@ $ rvm use ruby-3.1.2@pwn
|
|
37
37
|
$ rvm list gemsets
|
38
38
|
$ gem install --verbose pwn
|
39
39
|
$ pwn
|
40
|
-
pwn[v0.4.
|
40
|
+
pwn[v0.4.458]:001 >>> PWN.help
|
41
41
|
```
|
42
42
|
|
43
43
|
[](https://youtu.be/G7iLUY4FzsI)
|
@@ -52,7 +52,7 @@ $ rvm use ruby-3.1.2@pwn
|
|
52
52
|
$ gem uninstall --all --executables pwn
|
53
53
|
$ gem install --verbose pwn
|
54
54
|
$ pwn
|
55
|
-
pwn[v0.4.
|
55
|
+
pwn[v0.4.458]:001 >>> PWN.help
|
56
56
|
```
|
57
57
|
|
58
58
|
|
@@ -314,10 +314,10 @@ begin
|
|
314
314
|
name: scan_name
|
315
315
|
)
|
316
316
|
if scan.any?
|
317
|
-
|
317
|
+
scan_id = scan[:id]
|
318
318
|
update_scan_resp = PWN::Plugins::NessusCloud.update_scan(
|
319
319
|
nessus_obj: nessus_obj,
|
320
|
-
|
320
|
+
scan_id: scan_id,
|
321
321
|
scan_template_uuid: scan_template_uuid,
|
322
322
|
settings: settings,
|
323
323
|
credentials: credentials,
|
@@ -58,11 +58,11 @@ begin
|
|
58
58
|
nessus_obj: nessus_obj,
|
59
59
|
name: scan_name
|
60
60
|
)
|
61
|
-
|
61
|
+
scan_id = scan[:id]
|
62
62
|
|
63
63
|
PWN::Plugins::NessusCloud.launch_scan(
|
64
64
|
nessus_obj: nessus_obj,
|
65
|
-
|
65
|
+
scan_id: scan_id
|
66
66
|
)
|
67
67
|
|
68
68
|
scan_status = 'initializing'
|
@@ -73,7 +73,7 @@ begin
|
|
73
73
|
|
74
74
|
scan_status_resp = PWN::Plugins::NessusCloud.get_scan_status(
|
75
75
|
nessus_obj: nessus_obj,
|
76
|
-
|
76
|
+
scan_id: scan_id
|
77
77
|
)
|
78
78
|
|
79
79
|
scan_status = scan_status_resp[:status]
|
@@ -87,7 +87,7 @@ begin
|
|
87
87
|
print "Exporting results to #{path_to_export}..."
|
88
88
|
PWN::Plugins::NessusCloud.export_scan_results(
|
89
89
|
nessus_obj: nessus_obj,
|
90
|
-
|
90
|
+
scan_id: scan_id,
|
91
91
|
path_to_export: path_to_export,
|
92
92
|
format: format
|
93
93
|
)
|
@@ -0,0 +1,272 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module PWN
|
4
|
+
module Plugins
|
5
|
+
# This plugin is used for interacting with a three track
|
6
|
+
# MSR206 Magnetic Stripe Reader / Writer
|
7
|
+
module MSR206
|
8
|
+
# Supported Method Parameters::
|
9
|
+
# msr206_obj = PWN::Plugins::MSR206.connect(
|
10
|
+
# block_dev: 'optional - serial block device path (defaults to /dev/ttyUSB0)',
|
11
|
+
# baud: 'optional - (defaults to 9600)',
|
12
|
+
# data_bits: 'optional - (defaults to 8)',
|
13
|
+
# stop_bits: 'optional - (defaults to 1)',
|
14
|
+
# parity: 'optional - (defaults to SerialPort::NONE)',
|
15
|
+
# flow_control: 'optional - (defaults to SerialPort::HARD) SerialPort::NONE|SerialPort::SOFT|SerialPort::HARD'
|
16
|
+
# )
|
17
|
+
|
18
|
+
public_class_method def self.connect(opts = {})
|
19
|
+
# Default Baud Rate for this Device is 19200
|
20
|
+
opts[:baud] = 19_200 if opts[:baud].nil?
|
21
|
+
msr206_obj = PWN::Plugins::Serial.connect(opts)
|
22
|
+
rescue StandardError => e
|
23
|
+
disconnect(msr206_obj: msr206_obj) unless msr206_obj.nil?
|
24
|
+
raise e
|
25
|
+
end
|
26
|
+
|
27
|
+
# Supported Method Parameters::
|
28
|
+
# cmds = PWN::Plugins::MSR206.list_cmds
|
29
|
+
public_class_method def self.list_cmds
|
30
|
+
# Returns an Array of Symbols
|
31
|
+
cmds = %i[
|
32
|
+
version_report
|
33
|
+
simulate_power_cycle_warm_reset
|
34
|
+
configuration_request
|
35
|
+
reproduce_last_command
|
36
|
+
resume_transmission_to_host
|
37
|
+
pause_transmission_to_host
|
38
|
+
abort_command
|
39
|
+
red_on
|
40
|
+
red_off
|
41
|
+
red_flash
|
42
|
+
green_on
|
43
|
+
green_off
|
44
|
+
green_flash
|
45
|
+
yellow_on
|
46
|
+
yellow_off
|
47
|
+
yellow_flash
|
48
|
+
arm_to_read
|
49
|
+
arm_to_read_w_speed_prompts
|
50
|
+
tx_iso_std_data_track1
|
51
|
+
tx_iso_std_data_track2
|
52
|
+
tx_iso_std_data_track3
|
53
|
+
alt_tx_iso_std_data_track1
|
54
|
+
alt_tx_iso_std_data_track2
|
55
|
+
alt_tx_iso_std_data_track3
|
56
|
+
tx_error_data
|
57
|
+
tx_custom_data_forward_track1
|
58
|
+
tx_custom_data_forward_track2
|
59
|
+
tx_custom_data_forward_track3
|
60
|
+
tx_passbook_data
|
61
|
+
alt_tx_passbook_data
|
62
|
+
write_verify
|
63
|
+
card_edge_detect
|
64
|
+
load_iso_std_data_for_writing_track1
|
65
|
+
load_iso_std_data_for_writing_track2
|
66
|
+
load_iso_std_data_for_writing_track3
|
67
|
+
alt_load_iso_std_data_for_writing_track1
|
68
|
+
alt_load_iso_std_data_for_writing_track2
|
69
|
+
alt_load_iso_std_data_for_writing_track3
|
70
|
+
load_passbook_data_for_writing
|
71
|
+
load_custom_data_for_writing_track1
|
72
|
+
load_custom_data_for_writing_track2
|
73
|
+
load_custom_data_for_writing_track3
|
74
|
+
set_write_density
|
75
|
+
set_write_density_210_bpi_tracks13
|
76
|
+
set_write_density_75_bpi_tracks13
|
77
|
+
set_write_density_210_bpi_tracks2
|
78
|
+
set_write_density_75_bpi_tracks2
|
79
|
+
set_default_write_current
|
80
|
+
view_default_write_current
|
81
|
+
set_temp_write_current
|
82
|
+
view_temp_write_current
|
83
|
+
arm_to_write_with_raw
|
84
|
+
arm_to_write_no_raw
|
85
|
+
arm_to_write_with_raw_speed_prompts
|
86
|
+
]
|
87
|
+
rescue StandardError => e
|
88
|
+
raise e
|
89
|
+
end
|
90
|
+
|
91
|
+
# Supported Method Parameters::
|
92
|
+
# PWN::Plugins::MSR206.exec(
|
93
|
+
# msr206_obj: 'required - msr206_obj returned from #connect method'
|
94
|
+
# cmd: 'required - cmd returned from #list_cmds method',
|
95
|
+
# params: 'optional - parameters for specific command returned from #list_params method'
|
96
|
+
# )
|
97
|
+
public_class_method def self.exec(opts = {})
|
98
|
+
msr206_obj = opts[:msr206_obj]
|
99
|
+
cmd = opts[:cmd].to_s.scrub.strip.chomp
|
100
|
+
params = opts[:params].to_s.scrub.strip.chomp
|
101
|
+
|
102
|
+
params_bytes = []
|
103
|
+
case cmd.to_sym
|
104
|
+
when :version_report
|
105
|
+
cmd_bytes = [0x39]
|
106
|
+
when :simulate_power_cycle_warm_reset
|
107
|
+
cmd_bytes = [0x7F]
|
108
|
+
when :configuration_request
|
109
|
+
cmd_bytes = [0x23]
|
110
|
+
when :reproduce_last_command
|
111
|
+
cmd_bytes = [0x25]
|
112
|
+
when :resume_transmission_to_host
|
113
|
+
cmd_bytes = [0x11]
|
114
|
+
when :pause_transmission_to_host
|
115
|
+
cmd_bytes = [0x13]
|
116
|
+
when :abort_command
|
117
|
+
cmd_bytes = [0x1B]
|
118
|
+
when :red_on
|
119
|
+
cmd_bytes = [0x4D]
|
120
|
+
when :red_off
|
121
|
+
cmd_bytes = [0x6D]
|
122
|
+
when :red_flash
|
123
|
+
cmd_bytes = [0x29]
|
124
|
+
when :green_on
|
125
|
+
cmd_bytes = [0x4C]
|
126
|
+
when :green_off
|
127
|
+
cmd_bytes = [0x6C]
|
128
|
+
when :green_flash
|
129
|
+
cmd_bytes = [0x28]
|
130
|
+
when :yellow_on
|
131
|
+
cmd_bytes = [0x4B]
|
132
|
+
when :yellow_off
|
133
|
+
cmd_bytes = [0x6B]
|
134
|
+
when :yellow_flash
|
135
|
+
cmd_bytes = [0x7C]
|
136
|
+
when :arm_to_read
|
137
|
+
cmd_bytes = [0x50]
|
138
|
+
when :arm_to_read_w_speed_prompts
|
139
|
+
cmd_bytes = [0x70]
|
140
|
+
when :tx_iso_std_data_track1
|
141
|
+
cmd_bytes = [0x51]
|
142
|
+
when :tx_iso_std_data_track2
|
143
|
+
cmd_bytes = [0x52]
|
144
|
+
when :tx_iso_std_data_track3
|
145
|
+
cmd_bytes = [0x53]
|
146
|
+
when :tx_error_data
|
147
|
+
cmd_bytes = [0x49]
|
148
|
+
when :tx_custom_data_forward_track1, :load_custom_data_for_writing_track1
|
149
|
+
cmd_bytes = [0x45]
|
150
|
+
when :tx_custom_data_forward_track2, :load_custom_data_for_writing_track2
|
151
|
+
cmd_bytes = [0x46]
|
152
|
+
when :tx_custom_data_forward_track3, :load_custom_data_for_writing_track3
|
153
|
+
cmd_bytes = [0x47]
|
154
|
+
when :tx_passbook_data
|
155
|
+
cmd_bytes = [0x58]
|
156
|
+
when :alt_tx_passbook_data
|
157
|
+
cmd_bytes = [0x78]
|
158
|
+
when :write_verify
|
159
|
+
cmd_bytes = [0x3F]
|
160
|
+
when :card_edge_detect
|
161
|
+
cmd_bytes = [0x26]
|
162
|
+
when :load_iso_std_data_for_writing_track1
|
163
|
+
cmd_bytes = [0x41]
|
164
|
+
when :load_iso_std_data_for_writing_track2
|
165
|
+
cmd_bytes = [0x42]
|
166
|
+
when :load_iso_std_data_for_writing_track3
|
167
|
+
cmd_bytes = [0x43]
|
168
|
+
when :alt_load_iso_std_data_for_writing_track1
|
169
|
+
cmd_bytes = [0x61]
|
170
|
+
when :alt_load_iso_std_data_for_writing_track2
|
171
|
+
cmd_bytes = [0x62]
|
172
|
+
when :alt_load_iso_std_data_for_writing_track3
|
173
|
+
cmd_bytes = [0x63]
|
174
|
+
when :load_passbook_data_for_writing
|
175
|
+
cmd_bytes = [0x6A]
|
176
|
+
when :set_write_density
|
177
|
+
cmd_bytes = [0x3B]
|
178
|
+
when :set_write_density_210_bpi_tracks13
|
179
|
+
cmd_bytes = [0x4F]
|
180
|
+
when :set_write_density_75_bpi_tracks13
|
181
|
+
cmd_bytes = [0x6F]
|
182
|
+
when :set_write_density_210_bpi_tracks2
|
183
|
+
cmd_bytes = [0x4E]
|
184
|
+
when :set_write_density_75_bpi_tracks2
|
185
|
+
cmd_bytes = [0x6E]
|
186
|
+
when :set_default_write_current
|
187
|
+
cmd_bytes = [0x5B]
|
188
|
+
when :view_default_write_current
|
189
|
+
cmd_bytes = [0x5D]
|
190
|
+
when :set_temp_write_current
|
191
|
+
cmd_bytes = [0x3C]
|
192
|
+
when :view_temp_write_current
|
193
|
+
cmd_bytes = [0x3E]
|
194
|
+
when :arm_to_write_with_raw
|
195
|
+
cmd_bytes = [0x40]
|
196
|
+
when :arm_to_write_no_raw
|
197
|
+
cmd_bytes = [0x5A]
|
198
|
+
when :arm_to_write_with_raw_speed_prompts
|
199
|
+
cmd_bytes = [0x7A]
|
200
|
+
else
|
201
|
+
raise "Unsupported Command: #{cmd}. Supported commands are:\n#{list_cmds}\n\n\n"
|
202
|
+
end
|
203
|
+
|
204
|
+
# If parameters to a command are set, append them.
|
205
|
+
cmd_bytes += params_bytes unless params_bytes.empty?
|
206
|
+
# Execute the command.
|
207
|
+
cmd_bytes.each do |byte|
|
208
|
+
son_micro_rfid_obj[:serial_conn].putc(byte)
|
209
|
+
end
|
210
|
+
|
211
|
+
# Parse commands response(s).
|
212
|
+
# Return an array of hashes.
|
213
|
+
parse_responses(
|
214
|
+
son_micro_rfid_obj: son_micro_rfid_obj,
|
215
|
+
cmd: cmd.to_sym
|
216
|
+
)
|
217
|
+
rescue StandardError => e
|
218
|
+
raise e
|
219
|
+
end
|
220
|
+
|
221
|
+
# Supported Method Parameters::
|
222
|
+
# PWN::Plugins::MSR206.disconnect(
|
223
|
+
# msr206_obj: 'required - msr206_obj returned from #connect method'
|
224
|
+
# )
|
225
|
+
|
226
|
+
public_class_method def self.disconnect(opts = {})
|
227
|
+
PWN::Plugins::Serial.disconnect(
|
228
|
+
serial_obj: opts[:msr206_obj]
|
229
|
+
)
|
230
|
+
rescue StandardError => e
|
231
|
+
raise e
|
232
|
+
end
|
233
|
+
|
234
|
+
# Author(s):: 0day Inc. <request.pentest@0dayinc.com>
|
235
|
+
|
236
|
+
public_class_method def self.authors
|
237
|
+
"AUTHOR(S):
|
238
|
+
0day Inc. <request.pentest@0dayinc.com>
|
239
|
+
"
|
240
|
+
end
|
241
|
+
|
242
|
+
# Display Usage for this Module
|
243
|
+
|
244
|
+
public_class_method def self.help
|
245
|
+
puts "USAGE:
|
246
|
+
msr206_obj = #{self}.connect(
|
247
|
+
block_dev: 'optional serial block device path (defaults to /dev/ttyUSB0)',
|
248
|
+
baud: 'optional (defaults to 9600)',
|
249
|
+
data_bits: 'optional (defaults to 8)',
|
250
|
+
stop_bits: 'optional (defaults to 1)',
|
251
|
+
parity: 'optional (defaults to SerialPort::NONE)',
|
252
|
+
flow_control: 'optional (defaults to SerialPort::NONE)'
|
253
|
+
)
|
254
|
+
|
255
|
+
cmds = #{self}.list_cmds
|
256
|
+
|
257
|
+
parsed_cmd_resp_arr = #{self}.exec(
|
258
|
+
msr206_obj: 'required msr206_obj returned from #connect method',
|
259
|
+
cmd: 'required - cmd returned from #list_cmds method',
|
260
|
+
params: 'optional - parameters for specific command returned from #list_params method'
|
261
|
+
)
|
262
|
+
|
263
|
+
#{self}.disconnect(
|
264
|
+
msr206_obj: 'required msr206_obj returned from #connect method'
|
265
|
+
)
|
266
|
+
|
267
|
+
#{self}.authors
|
268
|
+
"
|
269
|
+
end
|
270
|
+
end
|
271
|
+
end
|
272
|
+
end
|
@@ -458,7 +458,7 @@ module PWN
|
|
458
458
|
# Supported Method Parameters::
|
459
459
|
# PWN::Plugins::NessusCloud.update_scan(
|
460
460
|
# nessus_obj: 'required - nessus_obj returned from #login method',
|
461
|
-
#
|
461
|
+
# scan_id: 'required - the scan id to update. Run #get_scans for a list',
|
462
462
|
# scan_template_uuid: 'required - the UUID for the Tenable-provided scan template to use. Run #get_canned_scan_templates for a list of UUIDs',
|
463
463
|
# settings: 'required - settings object as defined by https://developer.tenable.com/reference/scans-create',
|
464
464
|
# credentials: 'required - credentials object as defined by https://developer.tenable.com/reference/scans-create',
|
@@ -467,7 +467,7 @@ module PWN
|
|
467
467
|
|
468
468
|
public_class_method def self.update_scan(opts = {})
|
469
469
|
nessus_obj = opts[:nessus_obj]
|
470
|
-
|
470
|
+
scan_id = opts[:scan_id]
|
471
471
|
scan_template_uuid = opts[:scan_template_uuid]
|
472
472
|
settings = opts[:settings]
|
473
473
|
credentials = opts[:credentials]
|
@@ -483,7 +483,7 @@ module PWN
|
|
483
483
|
update_scan_resp = nessus_cloud_rest_call(
|
484
484
|
http_method: :put,
|
485
485
|
nessus_obj: nessus_obj,
|
486
|
-
rest_call: "scans/#{
|
486
|
+
rest_call: "scans/#{scan_id}",
|
487
487
|
http_body: http_body
|
488
488
|
).body
|
489
489
|
|
@@ -495,17 +495,17 @@ module PWN
|
|
495
495
|
# Supported Method Parameters::
|
496
496
|
# PWN::Plugins::NessusCloud.launch_scan(
|
497
497
|
# nessus_obj: 'required - nessus_obj returned from #login method',
|
498
|
-
#
|
498
|
+
# scan_id: 'required - scan uuid to launch'
|
499
499
|
# )
|
500
500
|
|
501
501
|
public_class_method def self.launch_scan(opts = {})
|
502
502
|
nessus_obj = opts[:nessus_obj]
|
503
|
-
|
503
|
+
scan_id = opts[:scan_id]
|
504
504
|
|
505
505
|
launch_scan_resp = nessus_cloud_rest_call(
|
506
506
|
http_method: :post,
|
507
507
|
nessus_obj: nessus_obj,
|
508
|
-
rest_call: "scans/#{
|
508
|
+
rest_call: "scans/#{scan_id}/launch"
|
509
509
|
).body
|
510
510
|
|
511
511
|
JSON.parse(launch_scan_resp, symbolize_names: true)
|
@@ -516,16 +516,16 @@ module PWN
|
|
516
516
|
# Supported Method Parameters::
|
517
517
|
# PWN::Plugins::NessusCloud.get_scan_status(
|
518
518
|
# nessus_obj: 'required - nessus_obj returned from #login method',
|
519
|
-
#
|
519
|
+
# scan_id: 'required - scan uuid to retrieve status'
|
520
520
|
# )
|
521
521
|
|
522
522
|
public_class_method def self.get_scan_status(opts = {})
|
523
523
|
nessus_obj = opts[:nessus_obj]
|
524
|
-
|
524
|
+
scan_id = opts[:scan_id]
|
525
525
|
|
526
526
|
scan_status_resp = nessus_cloud_rest_call(
|
527
527
|
nessus_obj: nessus_obj,
|
528
|
-
rest_call: "scans/#{
|
528
|
+
rest_call: "scans/#{scan_id}/latest-status"
|
529
529
|
).body
|
530
530
|
|
531
531
|
JSON.parse(scan_status_resp, symbolize_names: true)
|
@@ -568,16 +568,16 @@ module PWN
|
|
568
568
|
# Supported Method Parameters::
|
569
569
|
# PWN::Plugins::NessusCloud.get_scan_history(
|
570
570
|
# nessus_obj: 'required - nessus_obj returned from #login method'
|
571
|
-
#
|
571
|
+
# scan_id: 'required - scan uuid to launch'
|
572
572
|
# )
|
573
573
|
|
574
574
|
public_class_method def self.get_scan_history(opts = {})
|
575
575
|
nessus_obj = opts[:nessus_obj]
|
576
|
-
|
576
|
+
scan_id = opts[:scan_id]
|
577
577
|
|
578
578
|
scan_hist_resp = nessus_cloud_rest_call(
|
579
579
|
nessus_obj: nessus_obj,
|
580
|
-
rest_call: "scans/#{
|
580
|
+
rest_call: "scans/#{scan_id}/history"
|
581
581
|
).body
|
582
582
|
|
583
583
|
JSON.parse(scan_hist_resp, symbolize_names: true)
|
@@ -588,7 +588,7 @@ module PWN
|
|
588
588
|
# Supported Method Parameters::
|
589
589
|
# PWN::Plugins::NessusCloud.export_scan_results(
|
590
590
|
# nessus_obj: 'required - nessus_obj returned from #login method',
|
591
|
-
#
|
591
|
+
# scan_id: 'required - scan uuid to export',
|
592
592
|
# path_to_export: 'required - filename to export results',
|
593
593
|
# history_id: 'optional - defaults to last scan',
|
594
594
|
# format: 'optional - :csv|:db|:html|:nessus|:pdf (defaults to :csv')
|
@@ -596,14 +596,14 @@ module PWN
|
|
596
596
|
|
597
597
|
public_class_method def self.export_scan_results(opts = {})
|
598
598
|
nessus_obj = opts[:nessus_obj]
|
599
|
-
|
599
|
+
scan_id = opts[:scan_id]
|
600
600
|
path_to_export = opts[:path_to_export]
|
601
601
|
if opts[:history_id]
|
602
602
|
history_id = opts[:history_id]
|
603
603
|
else
|
604
604
|
scan_history_resp = get_scan_history(
|
605
605
|
nessus_obj: nessus_obj,
|
606
|
-
|
606
|
+
scan_id: scan_id
|
607
607
|
)
|
608
608
|
|
609
609
|
if scan_history_resp[:history].empty?
|
@@ -618,7 +618,7 @@ module PWN
|
|
618
618
|
format = opts[:format].to_s.to_sym if opts[:format]
|
619
619
|
|
620
620
|
http_body = {
|
621
|
-
|
621
|
+
scan_id: scan_id,
|
622
622
|
history_id: history_id,
|
623
623
|
format: format
|
624
624
|
}.to_json
|
@@ -626,7 +626,7 @@ module PWN
|
|
626
626
|
export_scan_resp = nessus_cloud_rest_call(
|
627
627
|
http_method: :post,
|
628
628
|
nessus_obj: nessus_obj,
|
629
|
-
rest_call: "scans/#{
|
629
|
+
rest_call: "scans/#{scan_id}/export",
|
630
630
|
http_body: http_body
|
631
631
|
).body
|
632
632
|
|
@@ -637,7 +637,7 @@ module PWN
|
|
637
637
|
|
638
638
|
download_export_resp = nessus_cloud_rest_call(
|
639
639
|
nessus_obj: nessus_obj,
|
640
|
-
rest_call: "scans/#{
|
640
|
+
rest_call: "scans/#{scan_id}/export/#{file_id}/download"
|
641
641
|
).body
|
642
642
|
|
643
643
|
File.open(path_to_export, 'wb') do |f|
|
@@ -720,7 +720,7 @@ module PWN
|
|
720
720
|
|
721
721
|
#{self}.update_scan(
|
722
722
|
nessus_obj: 'required - nessus_obj returned from #login method',
|
723
|
-
|
723
|
+
scan_id: 'required - the scan id to update. Run #get_scans for a list',
|
724
724
|
scan_template_uuid: 'required - the UUID for the Tenable-provided scan template to use. Run #get_canned_scan_templates for a list of UUIDs',
|
725
725
|
settings: 'required - settings object as defined by https://developer.tenable.com/reference/scans-create',
|
726
726
|
credentials: 'required - credentials object as defined by https://developer.tenable.com/reference/scans-create',
|
@@ -729,12 +729,12 @@ module PWN
|
|
729
729
|
|
730
730
|
#{self}.launch_scan(
|
731
731
|
nessus_obj: 'required - nessus_obj returned from #login method',
|
732
|
-
|
732
|
+
scan_id: 'required - scan uuid to launch'
|
733
733
|
)
|
734
734
|
|
735
735
|
#{self}.get_scan_status(
|
736
736
|
nessus_obj: 'required - nessus_obj returned from #login method',
|
737
|
-
|
737
|
+
scan_id: 'required - scan uuid to retrieve status'
|
738
738
|
)
|
739
739
|
|
740
740
|
#{self}.create_tag(
|
@@ -746,12 +746,12 @@ module PWN
|
|
746
746
|
|
747
747
|
#{self}.get_scan_history(
|
748
748
|
nessus_obj: 'required - nessus_obj returned from #login method'
|
749
|
-
|
749
|
+
scan_id: 'required - scan uuid to launch'
|
750
750
|
)
|
751
751
|
|
752
752
|
#{self}.export_scan_results(
|
753
753
|
nessus_obj: 'required - nessus_obj returned from #login method',
|
754
|
-
|
754
|
+
scan_id: 'required - scan uuid to export',
|
755
755
|
path_to_export: 'required - filename to export results',
|
756
756
|
history_id: 'optional - defaults to last scan',
|
757
757
|
format: 'optional - :csv|:db|:html|:nessus|:pdf (defaults to :csv')
|
data/lib/pwn/plugins.rb
CHANGED
@@ -32,6 +32,7 @@ module PWN
|
|
32
32
|
autoload :JSONPathify, 'pwn/plugins/json_pathify'
|
33
33
|
autoload :MailAgent, 'pwn/plugins/mail_agent'
|
34
34
|
autoload :Metasploit, 'pwn/plugins/metasploit'
|
35
|
+
autoload :MSR206, 'pwn/plugins/msr206'
|
35
36
|
autoload :NessusCloud, 'pwn/plugins/nessus_cloud'
|
36
37
|
autoload :NexposeVulnScan, 'pwn/plugins/nexpose_vuln_scan'
|
37
38
|
autoload :NmapIt, 'pwn/plugins/nmap_it'
|
data/lib/pwn/version.rb
CHANGED
@@ -0,0 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
describe PWN::Plugins::MSR206 do
|
6
|
+
it 'should display information for authors' do
|
7
|
+
authors_response = PWN::Plugins::MSR206
|
8
|
+
expect(authors_response).to respond_to :authors
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'should display information for existing help method' do
|
12
|
+
help_response = PWN::Plugins::MSR206
|
13
|
+
expect(help_response).to respond_to :help
|
14
|
+
end
|
15
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pwn
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.458
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- 0day Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-05-
|
11
|
+
date: 2022-05-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -786,14 +786,14 @@ dependencies:
|
|
786
786
|
requirements:
|
787
787
|
- - '='
|
788
788
|
- !ruby/object:Gem::Version
|
789
|
-
version: 0.
|
789
|
+
version: 0.102.0
|
790
790
|
type: :runtime
|
791
791
|
prerelease: false
|
792
792
|
version_requirements: !ruby/object:Gem::Requirement
|
793
793
|
requirements:
|
794
794
|
- - '='
|
795
795
|
- !ruby/object:Gem::Version
|
796
|
-
version: 0.
|
796
|
+
version: 0.102.0
|
797
797
|
- !ruby/object:Gem::Dependency
|
798
798
|
name: serialport
|
799
799
|
requirement: !ruby/object:Gem::Requirement
|
@@ -1531,6 +1531,7 @@ files:
|
|
1531
1531
|
- lib/pwn/plugins/json_pathify.rb
|
1532
1532
|
- lib/pwn/plugins/mail_agent.rb
|
1533
1533
|
- lib/pwn/plugins/metasploit.rb
|
1534
|
+
- lib/pwn/plugins/msr206.rb
|
1534
1535
|
- lib/pwn/plugins/nessus_cloud.rb
|
1535
1536
|
- lib/pwn/plugins/nexpose_vuln_scan.rb
|
1536
1537
|
- lib/pwn/plugins/nmap_it.rb
|
@@ -1827,6 +1828,7 @@ files:
|
|
1827
1828
|
- spec/lib/pwn/plugins/json_pathify_spec.rb
|
1828
1829
|
- spec/lib/pwn/plugins/mail_agent_spec.rb
|
1829
1830
|
- spec/lib/pwn/plugins/metasploit_spec.rb
|
1831
|
+
- spec/lib/pwn/plugins/msr206_spec.rb
|
1830
1832
|
- spec/lib/pwn/plugins/nessus_cloud_spec.rb
|
1831
1833
|
- spec/lib/pwn/plugins/nexpose_vuln_scan_spec.rb
|
1832
1834
|
- spec/lib/pwn/plugins/nmap_it_spec.rb
|
@@ -2096,6 +2098,7 @@ test_files:
|
|
2096
2098
|
- spec/lib/pwn/plugins/json_pathify_spec.rb
|
2097
2099
|
- spec/lib/pwn/plugins/mail_agent_spec.rb
|
2098
2100
|
- spec/lib/pwn/plugins/metasploit_spec.rb
|
2101
|
+
- spec/lib/pwn/plugins/msr206_spec.rb
|
2099
2102
|
- spec/lib/pwn/plugins/nessus_cloud_spec.rb
|
2100
2103
|
- spec/lib/pwn/plugins/nexpose_vuln_scan_spec.rb
|
2101
2104
|
- spec/lib/pwn/plugins/nmap_it_spec.rb
|