pwn 0.4.434 → 0.4.437

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
  SHA256:
3
- metadata.gz: 7c57efc5654de9b5ffcab0dcd7221626c765fd018c92a602762e5a60f2e66b7c
4
- data.tar.gz: ec004b5c260189b9040d1ac52361e544f70ab59fc337f0cb26b6c07ba703fbb1
3
+ metadata.gz: f220a459e04c5fcc8ac36203f16e53b09ee7d1449e26fa7875b9f7556b1a7ced
4
+ data.tar.gz: 1f1cc564d106d5938daaa78e3bd24b539a1d1d72c2cb7b34a285876db1239ccd
5
5
  SHA512:
6
- metadata.gz: 8aceb5eb4c2a8cd6b63a2ef47767736aa662fec32967a667438dc88c8e56dae7c3c2e5ff3dd129c16dc889d67ad75d85067da05735e03d362c9048c0fdccc223
7
- data.tar.gz: d2b86e170fd102fa82c5d0c10c8fbc94e0e8d79ac037ba7c1ecaac2ad6a9af1f813285c4cb970588c79378c7544889ff1d6876595bd0c4da1641bf249e832ef9
6
+ metadata.gz: 44fe1d205b902cda0678807efaf7af11bf79aef43a2c464fdcd2779ae091a2304aa4f77f32cf351f274fffce1243156e31539fea268903c97ca2c02774703f5a
7
+ data.tar.gz: 97889b333295b20f3d5210c81c624197567422ad787ba35a6536d2ca5136f564ba30516c28ed77d3e5caac33a22d5c596abdcc6670e2f8216347c8069f03f7b0
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.434]:001 >>> PWN.help
40
+ pwn[v0.4.437]:001 >>> PWN.help
41
41
  ```
42
42
 
43
43
  [![Installing the pwn Security Automation Framework](https://raw.githubusercontent.com/0dayInc/pwn/master/documentation/pwn_install.png)](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.434]:001 >>> PWN.help
55
+ pwn[v0.4.437]:001 >>> PWN.help
56
56
  ```
57
57
 
58
58
 
@@ -70,6 +70,10 @@ OptionParser.new do |options|
70
70
  options.on('-zTIMEZONE', '--timezone=TIMEZONE', '<Optional - Timezone of the scheduled start time for the scan - (Defaults to "UTC")>') do |t|
71
71
  opts[:timezone] = t
72
72
  end
73
+
74
+ options.on('-gGROUPS', '--target-groups=GROUPS', '<Optional - Comma-delimited list of target group IDs to scan>') do |t|
75
+ opts[:timezone] = t
76
+ end
73
77
  end.parse!
74
78
 
75
79
  if opts.empty?
@@ -79,6 +83,7 @@ end
79
83
 
80
84
  begin
81
85
  # Get Options Passed to pwn_nessus_cloud_create_scan
86
+ # Required Arguments
82
87
  yaml_config = opts[:yaml_config]
83
88
 
84
89
  raise "YAML Config Not Found: #{yaml_config}" unless File.exist?(yaml_config)
@@ -92,6 +97,11 @@ begin
92
97
  secret_key = yaml[:secret_key]
93
98
 
94
99
  scan_name = opts[:scan_name]
100
+
101
+ text_targets = opts[:text_targets]
102
+ raise 'ERROR: --text-targets (i.e. List of targets to scan) is required.' unless text_targets
103
+
104
+ # Optional Arguments
95
105
  scan_desc = opts[:scan_desc]
96
106
 
97
107
  scan_template = opts[:scan_template]
@@ -130,15 +140,13 @@ begin
130
140
  timezone = opts[:timezone]
131
141
  timezone ||= 'UTC'
132
142
 
133
- text_targets = opts[:text_targets]
134
- raise 'ERROR: --text-targets (i.e. List of targets to scan) is required.' unless text_targets
135
-
136
143
  target_groups = opts[:target_groups]
137
144
 
138
145
  file_targets = opts[:file_targets]
139
146
 
140
147
  tag_targets = opts[:tag_targets]
141
- tag_targets_arr = tag_targets.split(',')
148
+ tag_targets_arr = []
149
+ tag_targets_arr = tag_targets.split(',') if tag_targets
142
150
 
143
151
  agent_group_name = opts[:agent_group_name]
144
152
  agent_group_id_arr = []
@@ -199,7 +207,7 @@ begin
199
207
  # Part 2: Populate settings object from options passed to driver
200
208
  settings = {}
201
209
  settings[:name] = scan_name
202
- settings[:description] = scan_desc
210
+ settings[:description] = scan_desc if scan_desc
203
211
 
204
212
  policy = PWN::Plugins::NessusCloud.get_policies(
205
213
  nessus_obj: nessus_obj,
@@ -239,27 +247,28 @@ begin
239
247
 
240
248
  settings[:text_targets] = text_targets
241
249
 
242
- settings[:target_groups] = target_groups
250
+ # Example array on https://developer.tenable.com/reference/scans-create is really just a string.
251
+ settings[:target_groups] = "[#{target_groups}]" if target_groups
243
252
 
244
- settings[:file_targets] = file_targets
253
+ settings[:file_targets] = file_targets if file_targets
245
254
 
246
- settings[:tag_targets] = tag_targets_arr
255
+ settings[:tag_targets] = tag_targets_arr if tag_targets_arr
247
256
 
248
- settings[:agent_group_id] = agent_group_id_arr
257
+ settings[:agent_group_id] = agent_group_id_arr if agent_group_id_arr.any?
249
258
 
250
- settings[:agent_scan_launch_type] = agent_scan_launch_type
259
+ settings[:agent_scan_launch_type] = agent_scan_launch_type if agent_scan_launch_type
251
260
 
252
- settings[:triggers] = triggers_arr
261
+ settings[:triggers] = triggers_arr if triggers_arr.any?
253
262
 
254
- settings[:emails] = emails
263
+ settings[:emails] = emails if emails
255
264
 
256
- settings[:acls] = acls
265
+ settings[:acls] = acls if acls
257
266
 
258
267
  # Part 3: Populate credentials object from YAML config (optional)
259
- credentials = yaml[:credentials]
268
+ credentials = yaml[:credentials] if yaml[:credentials]
260
269
 
261
270
  # Part 4: Populate plugins object from YAML config (optional)
262
- plugins = yaml[:plugins]
271
+ plugins = yaml[:plugins] if yaml[:plugins]
263
272
 
264
273
  create_scan_resp = PWN::Plugins::NessusCloud.create_scan(
265
274
  nessus_obj: nessus_obj,
@@ -358,12 +358,17 @@ module PWN
358
358
 
359
359
  public_class_method def self.create_scan(opts = {})
360
360
  nessus_obj = opts[:nessus_obj]
361
+ uuid = opts[:scan_template_uuid]
362
+ settings = opts[:settings]
363
+ credentials = opts[:credentials]
364
+ plugins = opts[:plugins]
361
365
 
362
- http_body = {}
363
- http_body[:uuid] = opts[:scan_template_uuid]
364
- http_body[:settings] = opts[:settings]
365
- http_body[:credentials] = opts[:credentials]
366
- http_body[:plugins] = opts[:plugins]
366
+ http_body = {
367
+ uuid: uuid,
368
+ settings: settings,
369
+ credentials: credentials,
370
+ plugins: plugins
371
+ }.to_json
367
372
 
368
373
  create_scan_resp = nessus_cloud_rest_call(
369
374
  http_method: :post,
data/lib/pwn/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PWN
4
- VERSION = '0.4.434'
4
+ VERSION = '0.4.437'
5
5
  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.434
4
+ version: 0.4.437
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-20 00:00:00.000000000 Z
11
+ date: 2022-05-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport