pwn 0.5.410 → 0.5.412

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: 47f802f58c91581bb6ff43b3d03cbd951207e8768fdc2fd54688f0d2e2552131
4
- data.tar.gz: 3168fd3fa3ca83e0950885d1901694b37b0710d62987ac6ae0c1af50409c0a37
3
+ metadata.gz: 38131db5d063ec6429f21a9705f43f48fee38b9cd62e84e1be7edd61a0bb78cb
4
+ data.tar.gz: 0edffa812c7a3c32909bfa511df313cb4531589a9c4d15bc1ba40376974e27e9
5
5
  SHA512:
6
- metadata.gz: 8f1f19eebb20125b2bf3764eb4278a01c68ef94d8045e354e7846a205b0377f58e5b735b0f95333e42cb4ba7a8f0ac2f0d6053e9c146da8b71e1360a718a795e
7
- data.tar.gz: b71d97f350f6aa08a62c2d0b0abbfec20e351a61fb36ccd68b7c1d8944d05b1db53a46449a889e9b7a5dfb8840d8f9a14cd870b20375fe6ac192c6138ca380d2
6
+ metadata.gz: bbe772b7d7169f3ce683c378ebc68f91ef57a463b99907cca069fe32bd32c77c39af3192bc55e939388bcd215eba7f1f034066901ad9b96271f64e2ee7087c47
7
+ data.tar.gz: 6fad5ffc58148a10b3a5b949d4e28783001ef0daea8b069caad8d38166e6e20bd29f608d05ab2548175a99b62ec55529048ab8ebb738cd6d96ab3b3dcf06e26a
data/Gemfile CHANGED
@@ -57,7 +57,7 @@ gem 'net-ldap', '0.20.0'
57
57
  gem 'net-openvpn', '0.8.7'
58
58
  gem 'net-smtp', '0.5.1'
59
59
  gem 'nexpose', '7.3.0'
60
- gem 'nokogiri', '1.18.9'
60
+ gem 'nokogiri', '1.18.10'
61
61
  gem 'nokogiri-diff', '0.3.0'
62
62
  # gem 'oauth2', '2.0.9'
63
63
  gem 'oily_png', '1.2.1'
data/README.md CHANGED
@@ -37,7 +37,7 @@ $ cd /opt/pwn
37
37
  $ ./install.sh
38
38
  $ ./install.sh ruby-gem
39
39
  $ pwn
40
- pwn[v0.5.410]:001 >>> PWN.help
40
+ pwn[v0.5.412]: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.4.4@pwn
52
52
  $ gem uninstall --all --executables pwn
53
53
  $ gem install --verbose pwn
54
54
  $ pwn
55
- pwn[v0.5.410]:001 >>> PWN.help
55
+ pwn[v0.5.412]:001 >>> PWN.help
56
56
  ```
57
57
 
58
58
  If you're using a multi-user install of RVM do:
@@ -62,7 +62,7 @@ $ rvm use ruby-3.4.4@pwn
62
62
  $ rvmsudo gem uninstall --all --executables pwn
63
63
  $ rvmsudo gem install --verbose pwn
64
64
  $ pwn
65
- pwn[v0.5.410]:001 >>> PWN.help
65
+ pwn[v0.5.412]:001 >>> PWN.help
66
66
  ```
67
67
 
68
68
  PWN periodically upgrades to the latest version of Ruby which is reflected in `/opt/pwn/.ruby-version`. The easiest way to upgrade to the latest version of Ruby from a previous PWN installation is to run the following script:
@@ -128,9 +128,12 @@ begin
128
128
 
129
129
  logger.info(zap_obj)
130
130
 
131
+ additional_http_headers = JSON.parse(additional_http_headers, symbolize_names: true) if additional_http_headers.is_a?(String)
131
132
  json_sitemap = PWN::Plugins::Zaproxy.import_openapi_to_sitemap(
132
133
  zap_obj: zap_obj,
133
- openapi_spec: openapi_spec
134
+ openapi_spec: openapi_spec,
135
+ additional_http_headers: additional_http_headers,
136
+ target_regex: in_scope
134
137
  )
135
138
  raise "ERROR: Failed to import OpenAPI/Swagger spec #{openapi_spec} into ZAP's Sitemap." if json_sitemap.nil? || json_sitemap.empty?
136
139
 
@@ -139,15 +142,6 @@ begin
139
142
  target_regex: in_scope
140
143
  )
141
144
 
142
- if additional_http_headers.is_a?(String)
143
- additional_http_headers = JSON.parse(additional_http_headers, symbolize_names: true)
144
- PWN::Plugins::Zaproxy.inject_additional_http_headers(
145
- zap_obj: zap_obj,
146
- target_regex: in_scope,
147
- headers: additional_http_headers
148
- )
149
- end
150
-
151
145
  PWN::Plugins::Zaproxy.active_scan(
152
146
  zap_obj: zap_obj,
153
147
  target_url: in_scope,
@@ -360,16 +360,14 @@ module PWN
360
360
  # Supported Method Parameters::
361
361
  # json_sitemap = PWN::Plugins::BurpSuite.get_sitemap(
362
362
  # burp_obj: 'required - burp_obj returned by #start method',
363
- # target_url: 'optional - target URL to filter sitemap results (defaults to entire sitemap)'
363
+ # keyword: 'optional - keyword to filter sitemap entries (default: nil)',
364
364
  # )
365
365
 
366
366
  public_class_method def self.get_sitemap(opts = {})
367
367
  burp_obj = opts[:burp_obj]
368
368
  rest_browser = burp_obj[:rest_browser]
369
369
  mitm_rest_api = burp_obj[:mitm_rest_api]
370
- target_url = opts[:target_url]
371
-
372
- base64_encoded_target_url = Base64.strict_encode64(target_url.to_s.scrub.strip.chomp) if target_url
370
+ keyword = opts[:keyword]
373
371
 
374
372
  rest_call = "http://#{mitm_rest_api}/sitemap"
375
373
  rest_call = "#{rest_call}/#{base64_encoded_target_url}" if target_url
@@ -379,7 +377,16 @@ module PWN
379
377
  content_type: 'application/json; charset=UTF8'
380
378
  )
381
379
 
382
- JSON.parse(sitemap, symbolize_names: true)
380
+ sitemap_arr = JSON.parse(sitemap, symbolize_names: true)
381
+
382
+ if keyword
383
+ sitmap_arr = sitemap_arr.select do |site|
384
+ dec_request = Base64.strict_decode64(site[:request])
385
+ site if dec_request.include?(keyword)
386
+ end
387
+ end
388
+
389
+ sitemap_arr
383
390
  rescue StandardError => e
384
391
  stop(burp_obj: burp_obj) unless burp_obj.nil?
385
392
  raise e
@@ -439,31 +446,6 @@ module PWN
439
446
  raise e
440
447
  end
441
448
 
442
- # Supported Method Parameters::
443
- # repeater_id = PWN::Plugins::BurpSuite.find_sitemap_entries(
444
- # burp_obj: 'required - burp_obj returned by #start method',
445
- # search_string: 'required - string to search for in the sitemap entries'
446
- # )
447
-
448
- public_class_method def self.find_sitemap_entries(opts = {})
449
- burp_obj = opts[:burp_obj]
450
- raise 'ERROR: burp_obj parameter is required' unless burp_obj.is_a?(Hash)
451
-
452
- search_string = opts[:search_string]
453
- raise 'ERROR: search_string parameter is required' if search_string.nil?
454
-
455
- rest_browser = burp_obj[:rest_browser]
456
- mitm_rest_api = burp_obj[:mitm_rest_api]
457
-
458
- json_sitemap = get_sitemap(burp_obj: burp_obj)
459
- matching_entries = json_sitemap.select do |entry|
460
- decoded_request = Base64.strict_decode64(entry[:request])
461
- decoded_request.include?(search_string)
462
- end
463
- rescue StandardError => e
464
- raise e
465
- end
466
-
467
449
  # Supported Method Parameters:
468
450
  # json_sitemap = PWN::Plugins::BurpSuite.import_openapi_to_sitemap(
469
451
  # burp_obj: 'required - burp_obj returned by #start method',
@@ -1376,7 +1358,7 @@ module PWN
1376
1358
 
1377
1359
  json_sitemap = #{self}.get_sitemap(
1378
1360
  burp_obj: 'required - burp_obj returned by #start method',
1379
- target_url: 'optional - target URL to filter sitemap results (defaults to entire sitemap)'
1361
+ keyword: 'optional - keyword to filter sitemap results (default: nil)',
1380
1362
  )
1381
1363
 
1382
1364
  json_sitemap = #{self}.add_to_sitemap(
@@ -1401,11 +1383,6 @@ module PWN
1401
1383
  }
1402
1384
  )
1403
1385
 
1404
- #{self}.find_sitemap_entry(
1405
- burp_obj: 'required - burp_obj returned by #start method',
1406
- search_string: 'required - string to search for in the sitemap entries'
1407
- )
1408
-
1409
1386
  json_sitemap = #{self}.import_openapi_to_sitemap(
1410
1387
  burp_obj: 'required - burp_obj returned by #start method',
1411
1388
  openapi_spec: 'required - path to OpenAPI JSON or YAML specification file',
@@ -150,7 +150,9 @@ module PWN
150
150
  # Supported Method Parameters::
151
151
  # PWN::Plugins::Zaproxy.import_openapi_to_sitemap(
152
152
  # zap_obj: 'required - zap_obj returned from #open method',
153
- # openapi_spec: 'required - path to OpenAPI JSON or YAML spec file'
153
+ # openapi_spec: 'required - path to OpenAPI JSON or YAML spec file',
154
+ # additional_http_headers: 'optional - hash of additional HTTP headers to include in requests (default: {})',
155
+ # target_regex: 'optional - url regex to inject additional_http_headers into (e.g. https://test.domain.local.*)'
154
156
  # )
155
157
 
156
158
  public_class_method def self.import_openapi_to_sitemap(opts = {})
@@ -162,6 +164,19 @@ module PWN
162
164
  openapi_spec_root = File.dirname(openapi_spec)
163
165
  Dir.chdir(openapi_spec_root)
164
166
 
167
+ additional_http_headers = opts[:additional_http_headers] ||= {}
168
+ raise 'ERROR: additional_http_headers must be a Hash' unless additional_http_headers.is_a?(Hash)
169
+
170
+ target_regex = opts[:target_regex]
171
+
172
+ if additional_http_headers.any?
173
+ inject_additional_http_headers(
174
+ zap_obj: zap_obj,
175
+ target_regex: target_regex,
176
+ headers: additional_http_headers
177
+ )
178
+ end
179
+
165
180
  params = {
166
181
  apikey: api_key,
167
182
  file: openapi_spec
@@ -182,18 +197,21 @@ module PWN
182
197
  # Supported Method Parameters::
183
198
  # json_sitemap = PWN::Plugins::Zaproxy.get_sitemap(
184
199
  # zap_obj: 'required - zap_obj returned from #open method',
200
+ # keyword: 'optional - string to search for in the sitemap entries (defaults to nil)',
185
201
  # return_as: 'optional - :base64 or :har (defaults to :base64)'
186
202
  # )
187
203
 
188
204
  public_class_method def self.get_sitemap(opts = {})
189
205
  zap_obj = opts[:zap_obj]
190
206
  api_key = zap_obj[:api_key].to_s.scrub
207
+ keyword = opts[:keyword]
191
208
  return_as = opts[:return_as] ||= :base64
192
209
 
193
210
  entries = []
194
211
  start = 0
195
212
  count = 1000
196
213
 
214
+ # Get all entries in sitemap
197
215
  loop do
198
216
  params = { apikey: api_key, start: start, count: count }
199
217
 
@@ -210,59 +228,71 @@ module PWN
210
228
  entries += new_entries
211
229
  start += count
212
230
  end
213
- return entries if return_as == :har
214
-
215
- # Deduplicate entries based on method + url
216
- seen = Set.new
217
- converted_messages = []
218
-
219
- entries.each do |entry|
220
- req = entry[:request]
221
- key = [req[:method], req[:url]]
222
- next if seen.include?(key)
223
-
224
- seen.add(key)
225
-
226
- # Build full request string
227
- req_line = "#{req[:method]} #{req[:url]} #{req[:httpVersion]}\r\n"
228
- req_headers = req[:headers].map { |h| "#{h[:name]}: #{h[:value]}\r\n" }.join
229
- req_body = ''
230
- if req[:postData] && req[:postData][:text]
231
- req_body = req[:postData][:text]
232
- req_body = Base64.decode64(req_body) if req[:postData][:encoding] == 'base64'
231
+
232
+ case return_as
233
+ when :har
234
+ if keyword
235
+ entries = har_sitemap.select do |site|
236
+ json_request = site[:request].to_json
237
+ json_request.include?(keyword)
238
+ end
233
239
  end
234
- full_req = "#{req_line}#{req_headers}\r\n#{req_body}".force_encoding('ASCII-8BIT')
235
- encoded_req = Base64.strict_encode64(full_req)
236
-
237
- # Build full response string
238
- res = entry[:response]
239
- res_line = "#{res[:httpVersion]} #{res[:status]} #{res[:statusText]}\r\n"
240
- res_headers = res[:headers].map { |h| "#{h[:name]}: #{h[:value]}\r\n" }.join
241
- res_body = ''
242
- if res[:content] && res[:content][:text]
243
- res_body = res[:content][:text]
244
- res_body = Base64.decode64(res_body) if res[:content][:encoding] == 'base64'
240
+ when :base64
241
+ # Deduplicate entries based on method + url
242
+ entries.each do |entry|
243
+ entry_hash = {}
244
+ req = entry[:request]
245
+ key = [req[:method], req[:url]]
246
+
247
+ # Build full request string
248
+ req_line = "#{req[:method]} #{req[:url]} #{req[:httpVersion]}\r\n"
249
+ req_headers = req[:headers].map { |h| "#{h[:name]}: #{h[:value]}\r\n" }.join
250
+ req_body = ''
251
+ if req[:postData] && req[:postData][:text]
252
+ req_body = req[:postData][:text]
253
+ req_body = Base64.decode64(req_body) if req[:postData][:encoding] == 'base64'
254
+ end
255
+ full_req = "#{req_line}#{req_headers}\r\n#{req_body}".force_encoding('ASCII-8BIT')
256
+ encoded_req = Base64.strict_encode64(full_req)
257
+
258
+ # Build full response string
259
+ res = entry[:response]
260
+ res_line = "#{res[:httpVersion]} #{res[:status]} #{res[:statusText]}\r\n"
261
+ res_headers = res[:headers].map { |h| "#{h[:name]}: #{h[:value]}\r\n" }.join
262
+ res_body = ''
263
+ if res[:content] && res[:content][:text]
264
+ res_body = res[:content][:text]
265
+ res_body = Base64.decode64(res_body) if res[:content][:encoding] == 'base64'
266
+ end
267
+ full_res = "#{res_line}#{res_headers}\r\n#{res_body}".force_encoding('ASCII-8BIT')
268
+ encoded_res = Base64.strict_encode64(full_res)
269
+
270
+ # Extract http_service
271
+ uri = URI.parse(req[:url])
272
+ http_service = {
273
+ host: uri.host,
274
+ port: uri.port,
275
+ protocol: uri.scheme
276
+ }
277
+
278
+ # Add to array
279
+ entry_hash[:request] = encoded_req
280
+ entry_hash[:response] = encoded_res
281
+ entry_hash[:http_service] = http_service
282
+ entries.push(entry_hash)
245
283
  end
246
- full_res = "#{res_line}#{res_headers}\r\n#{res_body}".force_encoding('ASCII-8BIT')
247
- encoded_res = Base64.strict_encode64(full_res)
248
-
249
- # Extract http_service
250
- uri = URI.parse(req[:url])
251
- http_service = {
252
- host: uri.host,
253
- port: uri.port,
254
- protocol: uri.scheme
255
- }
256
284
 
257
- # Add to array
258
- converted_messages << {
259
- request: encoded_req,
260
- response: encoded_res,
261
- http_service: http_service
262
- }
285
+ if keyword
286
+ entries = entries.select do |site|
287
+ deccoded_request = Base64.strict_decode64(site[:request])
288
+ deccoded_request.include?(keyword)
289
+ end
290
+ end
291
+ else
292
+ raise "ERROR: Invalid return_as option #{return_as}. Valid options are :base64 or :har"
263
293
  end
264
294
 
265
- converted_messages
295
+ entries.uniq
266
296
  rescue StandardError, SystemExit, Interrupt => e
267
297
  stop(zap_obj: zap_obj) unless zap_obj.nil?
268
298
  raise e
@@ -301,38 +331,10 @@ module PWN
301
331
  raise e
302
332
  end
303
333
 
304
- # Supported Method Parameters::
305
- # PWN::Plugins::Zaproxy.find_har_entries(
306
- # zap_obj: 'required - zap_obj returned from #open method',
307
- # search_string: 'required - string to search for in the sitemap entries'
308
- # )
309
-
310
- public_class_method def self.find_har_entries(opts = {})
311
- zap_obj = opts[:zap_obj]
312
- api_key = zap_obj[:api_key].to_s.scrub
313
- search_string = opts[:search_string]
314
- raise 'ERROR: search_string must be provided' if search_string.nil?
315
-
316
- har_sitemap = get_sitemap(
317
- zap_obj: zap_obj,
318
- return_as: :har
319
- )
320
-
321
- har_entries = har_sitemap.select do |entry|
322
- json_request = entry[:request].to_json
323
- json_request.include?(search_string)
324
- end
325
-
326
- har_entries
327
- rescue StandardError, SystemExit, Interrupt => e
328
- stop(zap_obj: zap_obj) unless zap_obj.nil?
329
- raise e
330
- end
331
-
332
334
  # Supported Method Parameters::
333
335
  # PWN::Plugins::Zaproxy.requester(
334
336
  # zap_obj: 'required - zap_obj returned from #open method',
335
- # har_entry: 'required - har entry (e.g. from #get_sitemap method or #find_har_entries method)',
337
+ # har_entry: 'required - har entry (e.g. from #get_sitemap method method)',
336
338
  # redirect: 'optional - follow redirects if set to true (defaults to false)'
337
339
  # )
338
340
 
@@ -766,11 +768,14 @@ module PWN
766
768
 
767
769
  #{self}.import_openapi_to_sitemap(
768
770
  zap_obj: 'required - zap_obj returned from #open method',
769
- openapi_spec: 'required - path to OpenAPI JSON or YAML spec file'
771
+ openapi_spec: 'required - path to OpenAPI JSON or YAML spec file',
772
+ additional_http_headers: 'optional - hash of additional HTTP headers to include in requests (default: {})',
773
+ target_regex: 'optional - url regex to inject additional_http_headers into (e.g. https://test.domain.local.*)'
770
774
  )
771
775
 
772
776
  #{self}.get_sitemap(
773
777
  zap_obj: 'required - zap_obj returned from #open method',
778
+ keyword: 'optional - string to search for in the sitemap entries (defaults to nil)',
774
779
  return_as: 'optional - :base64 or :har (defaults to :base64)'
775
780
  )
776
781
 
@@ -780,14 +785,9 @@ module PWN
780
785
  context_name: 'optional - context name to add target_regex to (defaults to Default Context)'
781
786
  )
782
787
 
783
- #{self}.find_har_entries(
784
- zap_obj: 'required - zap_obj returned from #open method',
785
- search_string: 'required - string to search for in the sitemap entries'
786
- )
787
-
788
788
  #{self}.requester(
789
789
  zap_obj: 'required - zap_obj returned from #open method',
790
- har_entry: 'required - har entry (e.g. from #get_sitemap method or #find_har_entries method)',
790
+ har_entry: 'required - har entry (e.g. from #get_sitemap method method)',
791
791
  redirect: 'optional - follow redirects if set to true (defaults to true)'
792
792
  )
793
793
 
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.5.410'
4
+ VERSION = '0.5.412'
5
5
  end
@@ -520,27 +520,34 @@
520
520
  {"messages":[{"role":"user","content":"PWN::Plugins::BlackDuckBinaryAnalysis.get_vulnerabilities Usage"},{"role":"assistant","content":"`PWN::Plugins::BlackDuckBinaryAnalysis.get_vulnerabilities`: Supported Method Parameters\n\nresponse = PWN::Plugins::BlackDuckBinaryAnalysis.get_vulnerabilities(\n\ntoken: 'required - Bearer token'\n\n)\n"}]}
521
521
  {"messages":[{"role":"user","content":"PWN::Plugins::BlackDuckBinaryAnalysis.help Usage"},{"role":"assistant","content":"`PWN::Plugins::BlackDuckBinaryAnalysis.help`: "}]}
522
522
  {"messages":[{"role":"user","content":"PWN::Plugins::BlackDuckBinaryAnalysis.upload_file Usage"},{"role":"assistant","content":"`PWN::Plugins::BlackDuckBinaryAnalysis.upload_file`: Supported Method Parameters\n\nresponse = PWN::Plugins::BlackDuckBinaryAnalysis.upload_file(\n\ntoken: 'required - Bearer token',\nfile: 'required - path of file to upload',\ngroup_id: 'optional - group id',\ndelete_binary: 'optional - delete binary after upload (defaults to false)',\nforce_scan: 'optional - force scan (defaults to false)',\ncallback_url: 'optional - callback url',\nscan_infoleak: 'optional - scan infoleak (defaults to true)',\ncode_analysis: 'optional - code analysis (defaults to true)',\nscan_code_familiarity: 'optional - scan code familiarity (defaults to false)',\nversion: 'optional - version',\nproduct_id: 'optional - product id'\n\n)\n"}]}
523
- {"messages":[{"role":"user","content":"PWN::Plugins::BurpSuite.active_scan Usage"},{"role":"assistant","content":"`PWN::Plugins::BurpSuite.active_scan`: Supported Method Parameters\n\nactive_scan_url_arr = PWN::Plugins::BurpSuite.active_scan(\n\nburp_obj: 'required - burp_obj returned by #start method',\ntarget_url: 'required - target url to scan in sitemap (should be loaded & authenticated w/ burp_obj[:burp_browser])',\nexclude_paths: 'optional - array of paths to exclude from active scan (default: [])'\n\n)\n"}]}
523
+ {"messages":[{"role":"user","content":"PWN::Plugins::BurpSuite.active_scan Usage"},{"role":"assistant","content":"`PWN::Plugins::BurpSuite.active_scan`: Supported Method Parameters\n\nactive_scan_url_arr = PWN::Plugins::BurpSuite.active_scan(\n\nburp_obj: 'required - burp_obj returned by #start method',\ntarget_url: 'required - target url to scan in sitemap (should be loaded & authenticated w/ burp_obj[:mitm_browser])',\nexclude_paths: 'optional - array of paths to exclude from active scan (default: [])'\n\n)\n"}]}
524
524
  {"messages":[{"role":"user","content":"PWN::Plugins::BurpSuite.add_proxy_listener Usage"},{"role":"assistant","content":"`PWN::Plugins::BurpSuite.add_proxy_listener`: Supported Method Parameters\n\njson_proxy_listener = PWN::Plugins::BurpSuite.add_proxy_listener(\n\nburp_obj: 'required - burp_obj returned by #start method',\nbind_address: 'required - bind address for the proxy listener (e.g., \"127.0.0.1\")',\nport: 'required - port for the proxy listener (e.g., 8081)',\nenabled: 'optional - enable the listener (defaults to true)'\n\n)\n"}]}
525
+ {"messages":[{"role":"user","content":"PWN::Plugins::BurpSuite.add_repeater_tab Usage"},{"role":"assistant","content":"`PWN::Plugins::BurpSuite.add_repeater_tab`: Supported Method Parameters\n\nrepeater_id = PWN::Plugins::BurpSuite.add_repeater_tab(\n\nburp_obj: 'required - burp_obj returned by #start method',\nname: 'required - name of the repeater tab (max 30 characters)',\nrequest: 'optional - base64 encoded HTTP request string'\n\n)\n"}]}
525
526
  {"messages":[{"role":"user","content":"PWN::Plugins::BurpSuite.add_to_scope Usage"},{"role":"assistant","content":"`PWN::Plugins::BurpSuite.add_to_scope`: Supported Method Parameters\n\njson_in_scope = PWN::Plugins::BurpSuite.add_to_scope(\n\nburp_obj: 'required - burp_obj returned by #start method',\ntarget_url: 'required - target url to add to scope'\n\n)\n"}]}
526
527
  {"messages":[{"role":"user","content":"PWN::Plugins::BurpSuite.add_to_sitemap Usage"},{"role":"assistant","content":"`PWN::Plugins::BurpSuite.add_to_sitemap`: "}]}
527
528
  {"messages":[{"role":"user","content":"PWN::Plugins::BurpSuite.authors Usage"},{"role":"assistant","content":"`PWN::Plugins::BurpSuite.authors`: Author(s)\n\n0day Inc. <support@0dayinc.com>\n"}]}
528
529
  {"messages":[{"role":"user","content":"PWN::Plugins::BurpSuite.delete_proxy_listener Usage"},{"role":"assistant","content":"`PWN::Plugins::BurpSuite.delete_proxy_listener`: Supported Method Parameters\n\nPWN::Plugins::BurpSuite.delete_proxy_listener(\n\nburp_obj: 'required - burp_obj returned by #start method',\nid: 'required - ID of the proxy listener (defaults to \"0\")'\n\n)\n"}]}
530
+ {"messages":[{"role":"user","content":"PWN::Plugins::BurpSuite.delete_repeater_tab Usage"},{"role":"assistant","content":"`PWN::Plugins::BurpSuite.delete_repeater_tab`: Supported Method Parameters\n\nuri_in_scope = PWN::Plugins::BurpSuite.delete_repeater_tab(\n\nburp_obj: 'required - burp_obj returned by #start method',\nid: 'required - id of the repeater tab to delete'\n\n)\n"}]}
529
531
  {"messages":[{"role":"user","content":"PWN::Plugins::BurpSuite.disable_proxy Usage"},{"role":"assistant","content":"`PWN::Plugins::BurpSuite.disable_proxy`: Supported Method Parameters\n\nPWN::Plugins::BurpSuite.disable_proxy(\n\nburp_obj: 'required - burp_obj returned by #start method'\n\n)\n"}]}
530
532
  {"messages":[{"role":"user","content":"PWN::Plugins::BurpSuite.enable_proxy Usage"},{"role":"assistant","content":"`PWN::Plugins::BurpSuite.enable_proxy`: Supported Method Parameters\n\nPWN::Plugins::BurpSuite.enable_proxy(\n\nburp_obj: 'required - burp_obj returned by #start method'\n\n)\n"}]}
533
+ {"messages":[{"role":"user","content":"PWN::Plugins::BurpSuite.find_sitemap_entries Usage"},{"role":"assistant","content":"`PWN::Plugins::BurpSuite.find_sitemap_entries`: Supported Method Parameters\n\nrepeater_id = PWN::Plugins::BurpSuite.find_sitemap_entries(\n\nburp_obj: 'required - burp_obj returned by #start method',\nsearch_string: 'required - string to search for in the sitemap entries'\n\n)\n"}]}
531
534
  {"messages":[{"role":"user","content":"PWN::Plugins::BurpSuite.format_uri_from_sitemap_resp Usage"},{"role":"assistant","content":"`PWN::Plugins::BurpSuite.format_uri_from_sitemap_resp`: Supported Method Parameters\n\nuri = PWN::Plugins::BurpSuite.format_uri_from_sitemap_resp(\n\nscheme: 'required - scheme of the URI (http|https)',\nhost: 'required - host of the URI',\nport: 'optional - port of the URI',\npath: 'optional - path of the URI',\nquery: 'optional - query string of the URI'\n\n)\n"}]}
532
535
  {"messages":[{"role":"user","content":"PWN::Plugins::BurpSuite.generate_scan_report Usage"},{"role":"assistant","content":"`PWN::Plugins::BurpSuite.generate_scan_report`: Supported Method Parameters\n\nPWN::Plugins::BurpSuite.generate_scan_report(\n\nburp_obj: 'required - burp_obj returned by #start method',\ntarget_url: 'required - target_url passed to #active_scan method',\noutput_dir: 'required - directory to save the report',\nreport_type: required - <:html|:xml>'\n\n)\n"}]}
536
+ {"messages":[{"role":"user","content":"PWN::Plugins::BurpSuite.get_all_repeater_tabs Usage"},{"role":"assistant","content":"`PWN::Plugins::BurpSuite.get_all_repeater_tabs`: Supported Method Parameters\n\nrepeater_tabs = PWN::Plugins::BurpSuite.get_all_repeater_tabs(\n\nburp_obj: 'required - burp_obj returned by #start method'\n\n)\n"}]}
533
537
  {"messages":[{"role":"user","content":"PWN::Plugins::BurpSuite.get_proxy_listeners Usage"},{"role":"assistant","content":"`PWN::Plugins::BurpSuite.get_proxy_listeners`: Supported Method Parameters\n\njson_proxy_listeners = PWN::Plugins::BurpSuite.get_proxy_listeners(\n\nburp_obj: 'required - burp_obj returned by #start method'\n\n)\n"}]}
538
+ {"messages":[{"role":"user","content":"PWN::Plugins::BurpSuite.get_repeater_tab Usage"},{"role":"assistant","content":"`PWN::Plugins::BurpSuite.get_repeater_tab`: Supported Method Parameters\n\nrepeater_tab = PWN::Plugins::BurpSuite.get_repeater_tab(\n\nburp_obj: 'required - burp_obj returned by #start method',\nid: 'required - id of the repeater tab to get'\n\n)\n"}]}
534
539
  {"messages":[{"role":"user","content":"PWN::Plugins::BurpSuite.get_scan_issues Usage"},{"role":"assistant","content":"`PWN::Plugins::BurpSuite.get_scan_issues`: Supported Method Parameters\n\njson_scan_issues = PWN::Plugins::BurpSuite.get_scan_issues(\n\nburp_obj: 'required - burp_obj returned by #start method'\n\n)\n"}]}
535
540
  {"messages":[{"role":"user","content":"PWN::Plugins::BurpSuite.get_sitemap Usage"},{"role":"assistant","content":"`PWN::Plugins::BurpSuite.get_sitemap`: Supported Method Parameters\n\njson_sitemap = PWN::Plugins::BurpSuite.get_sitemap(\n\nburp_obj: 'required - burp_obj returned by #start method',\ntarget_url: 'optional - target URL to filter sitemap results (defaults to entire sitemap)'\n\n)\n"}]}
536
541
  {"messages":[{"role":"user","content":"PWN::Plugins::BurpSuite.help Usage"},{"role":"assistant","content":"`PWN::Plugins::BurpSuite.help`: "}]}
537
542
  {"messages":[{"role":"user","content":"PWN::Plugins::BurpSuite.import_openapi_to_sitemap Usage"},{"role":"assistant","content":"`PWN::Plugins::BurpSuite.import_openapi_to_sitemap`: "}]}
538
543
  {"messages":[{"role":"user","content":"PWN::Plugins::BurpSuite.in_scope Usage"},{"role":"assistant","content":"`PWN::Plugins::BurpSuite.in_scope`: Supported Method Parameters\n\nuri_in_scope = PWN::Plugins::BurpSuite.in_scope(\n\nburp_obj: 'required - burp_obj returned by #start method',\nuri: 'required - URI to determine if in scope'\n\n)\n"}]}
544
+ {"messages":[{"role":"user","content":"PWN::Plugins::BurpSuite.send_repeater_request Usage"},{"role":"assistant","content":"`PWN::Plugins::BurpSuite.send_repeater_request`: Supported Method Parameters\n\nrepeater_resp = PWN::Plugins::BurpSuite.send_repeater_request(\n\nburp_obj: 'required - burp_obj returned by #start method',\nid: 'required - id of the repeater tab to send'\n\n)\n"}]}
539
545
  {"messages":[{"role":"user","content":"PWN::Plugins::BurpSuite.spider Usage"},{"role":"assistant","content":"`PWN::Plugins::BurpSuite.spider`: Supported Method Parameters\n\njson_spider = PWN::Plugins::BurpSuite.spider(\n\nburp_obj: 'required - burp_obj returned by #start method',\ntarget_url: 'required - target url to add to crawl / spider'\n\n)\n"}]}
540
546
  {"messages":[{"role":"user","content":"PWN::Plugins::BurpSuite.start Usage"},{"role":"assistant","content":"`PWN::Plugins::BurpSuite.start`: Supported Method Parameters\n\nburp_obj1 = PWN::Plugins::BurpSuite.start(\n\nburp_jar_path: 'optional - path of burp suite pro jar file (defaults to /opt/burpsuite/burpsuite_pro.jar)',\nheadless: 'optional - run burp headless if set to true',\nbrowser_type: 'optional - defaults to :firefox. See PWN::Plugins::TransparentBrowser.help for a list of types',\nburp_ip: 'optional - IP address for the Burp proxy (defaults to 127.0.0.1)',\nburp_port: 'optional - port for the Burp proxy (defaults to a random unused port)',\npwn_burp_ip: 'optional - IP address for the PWN Burp API (defaults to 127.0.0.1)',\npwn_burp_port: 'optional - port for the PWN Burp API (defaults to a random unused port)'\n\n)\n"}]}
541
547
  {"messages":[{"role":"user","content":"PWN::Plugins::BurpSuite.stop Usage"},{"role":"assistant","content":"`PWN::Plugins::BurpSuite.stop`: Supported Method Parameters\n\nPWN::Plugins::BurpSuite.stop(\n\nburp_obj: 'required - burp_obj returned by #start method'\n\n)\n"}]}
542
548
  {"messages":[{"role":"user","content":"PWN::Plugins::BurpSuite.update_burp_jar Usage"},{"role":"assistant","content":"`PWN::Plugins::BurpSuite.update_burp_jar`: Supported Method Parameters\n\nPWN::Plugins::BurpSuite.update_burp_jar( )\n"}]}
543
549
  {"messages":[{"role":"user","content":"PWN::Plugins::BurpSuite.update_proxy_listener Usage"},{"role":"assistant","content":"`PWN::Plugins::BurpSuite.update_proxy_listener`: Supported Method Parameters\n\njson_proxy_listener = PWN::Plugins::BurpSuite.update_proxy_listener(\n\nburp_obj: 'required - burp_obj returned by #start method',\nid: 'optional - ID of the proxy listener (defaults to \"0\")',\nbind_address: 'optional - bind address for the proxy listener (defaults to \"127.0.0.1\")',\nport: 'optional - port for the proxy listener (defaults to 8080)',\nenabled: 'optional - enable or disable the listener (defaults to true)'\n\n)\n"}]}
550
+ {"messages":[{"role":"user","content":"PWN::Plugins::BurpSuite.update_repeater_tab Usage"},{"role":"assistant","content":"`PWN::Plugins::BurpSuite.update_repeater_tab`: Supported Method Parameters\n\nrepeater_obj = PWN::Plugins::BurpSuite.update_repeater_tab(\n\nburp_obj: 'required - burp_obj returned by #start method',\nid: 'required - id of the repeater tab to update',\nname: 'required - name of the repeater tab (max 30 characters)',\nrequest: 'required - base64 encoded HTTP request string'\n\n)\n"}]}
544
551
  {"messages":[{"role":"user","content":"PWN::Plugins::BusPirate.authors Usage"},{"role":"assistant","content":"`PWN::Plugins::BusPirate.authors`: Author(s)\n\n0day Inc. <support@0dayinc.com>\n"}]}
545
552
  {"messages":[{"role":"user","content":"PWN::Plugins::BusPirate.connect Usage"},{"role":"assistant","content":"`PWN::Plugins::BusPirate.connect`: Supported Method Parameters\n\nbus_pirate_obj = PWN::Plugins::BusPirate.connect(\n\nblock_dev: 'optional serial block device path (defaults to /dev/ttyUSB0)',\nbaud: 'optional (defaults to 9600)',\ndata_bits: 'optional (defaults to 8)',\nstop_bits: 'optional (defaults to 1)',\nparity: 'optional (defaults to SerialPort::NONE)',\nflow_control: 'optional (defaults to SerialPort::HARD) SerialPort::NONE|SerialPort::SOFT|SerialPort::HARD'\n\n)\n"}]}
546
553
  {"messages":[{"role":"user","content":"PWN::Plugins::BusPirate.connect_via_screen Usage"},{"role":"assistant","content":"`PWN::Plugins::BusPirate.connect_via_screen`: Supported Method Parameters\n\nPWN::Plugins::BusPirate.connect_via_screen(\n\nblock_dev: 'optional - serial block device path (defaults to /dev/ttyUSB0)'\n\n)\n"}]}
@@ -1033,14 +1040,18 @@
1033
1040
  {"messages":[{"role":"user","content":"PWN::Plugins::XXD.fill_range_w_byte Usage"},{"role":"assistant","content":"`PWN::Plugins::XXD.fill_range_w_byte`: Supported Method Parameters\n\nhexdump = PWN::Plugins::XXD.fill_range_w_byte(\n\nhexdump: 'required - hexdump returned from #dump method',\nstart_addr: 'required - start address to fill with byte',\nend_addr: 'required - end address to fill with byte',\nbyte: 'required - byte to fill range with'\n\n)\n"}]}
1034
1041
  {"messages":[{"role":"user","content":"PWN::Plugins::XXD.help Usage"},{"role":"assistant","content":"`PWN::Plugins::XXD.help`: "}]}
1035
1042
  {"messages":[{"role":"user","content":"PWN::Plugins::XXD.reverse_dump Usage"},{"role":"assistant","content":"`PWN::Plugins::XXD.reverse_dump`: Supported Method Parameters\n\nPWN::Plugins::XXD.reverse_dump(\n\nhexdump: 'required - hexdump returned from #dump method',\nfile: 'required - path to binary file to dump',\nbyte_chunks: 'optional - if set, will write n byte chunks of hexdump to multiple files'\n\n)\n"}]}
1036
- {"messages":[{"role":"user","content":"PWN::Plugins::Zaproxy.active_scan Usage"},{"role":"assistant","content":"`PWN::Plugins::Zaproxy.active_scan`: Supported Method Parameters\n\nPWN::Plugins::Zaproxy.active_scan(\n\nzap_obj: 'required - zap_obj returned from #open method',\ntarget_url: 'required - url to scan',\nscan_policy: 'optional - scan policy to use (defaults to Default Policy)'\n\n)\n"}]}
1037
- {"messages":[{"role":"user","content":"PWN::Plugins::Zaproxy.alerts Usage"},{"role":"assistant","content":"`PWN::Plugins::Zaproxy.alerts`: Supported Method Parameters\n\nPWN::Plugins::Zaproxy.alerts(\n\nzap_obj: 'required - zap_obj returned from #open method',\ntarget_url: 'required - base url to return alerts'\n\n)\n"}]}
1043
+ {"messages":[{"role":"user","content":"PWN::Plugins::Zaproxy.active_scan Usage"},{"role":"assistant","content":"`PWN::Plugins::Zaproxy.active_scan`: Supported Method Parameters\n\nPWN::Plugins::Zaproxy.active_scan(\n\nzap_obj: 'required - zap_obj returned from #open method',\ntarget_url: 'required - url to scan',\nexclude_paths: 'optional - array of paths to exclude from scan (default: [])',\nscan_policy: 'optional - scan policy to use (defaults to Default Policy)'\n\n)\n"}]}
1044
+ {"messages":[{"role":"user","content":"PWN::Plugins::Zaproxy.add_to_scope Usage"},{"role":"assistant","content":"`PWN::Plugins::Zaproxy.add_to_scope`: Supported Method Parameters\n\nPWN::Plugins::Zaproxy.add_to_scope(\n\nzap_obj: 'required - zap_obj returned from #open method',\ntarget_regex: 'required - url regex to add to scope (e.g. https://test.domain.local.*)',\ncontext_name: 'optional - context name to add target_regex to (defaults to Default Context)'\n\n)\n"}]}
1038
1045
  {"messages":[{"role":"user","content":"PWN::Plugins::Zaproxy.authors Usage"},{"role":"assistant","content":"`PWN::Plugins::Zaproxy.authors`: Author(s)\n\n0day Inc. <support@0dayinc.com>\n"}]}
1039
1046
  {"messages":[{"role":"user","content":"PWN::Plugins::Zaproxy.breakpoint Usage"},{"role":"assistant","content":"`PWN::Plugins::Zaproxy.breakpoint`: Supported Method Parameters\n\nPWN::Plugins::Zaproxy.breakpoint(\n\nzap_obj: 'required - zap_obj returned from #open method',\nregex_type: 'required - :url, :request_header, :request_body, :response_header or :response_body',\nregex_pattern: 'required - regex pattern to search for respective regex_type',\nenabled: 'optional - boolean (defaults to true)'\n\n)\n"}]}
1047
+ {"messages":[{"role":"user","content":"PWN::Plugins::Zaproxy.find_har_entries Usage"},{"role":"assistant","content":"`PWN::Plugins::Zaproxy.find_har_entries`: Supported Method Parameters\n\nPWN::Plugins::Zaproxy.find_har_entries(\n\nzap_obj: 'required - zap_obj returned from #open method',\nsearch_string: 'required - string to search for in the sitemap entries'\n\n)\n"}]}
1040
1048
  {"messages":[{"role":"user","content":"PWN::Plugins::Zaproxy.generate_scan_report Usage"},{"role":"assistant","content":"`PWN::Plugins::Zaproxy.generate_scan_report`: Supported Method Parameters\n\nreport_path = PWN::Plugins::Zaproxy.generate_scan_report(\n\nzap_obj: 'required - zap_obj returned from #open method',\noutput_dir: 'required - directory to save report',\nreport_type: 'required - <:html|:markdown|:xml>'\n\n)\n"}]}
1049
+ {"messages":[{"role":"user","content":"PWN::Plugins::Zaproxy.get_alerts Usage"},{"role":"assistant","content":"`PWN::Plugins::Zaproxy.get_alerts`: Supported Method Parameters\n\nPWN::Plugins::Zaproxy.get_alerts(\n\nzap_obj: 'required - zap_obj returned from #open method',\ntarget_url: 'required - base url to return alerts'\n\n)\n"}]}
1050
+ {"messages":[{"role":"user","content":"PWN::Plugins::Zaproxy.get_sitemap Usage"},{"role":"assistant","content":"`PWN::Plugins::Zaproxy.get_sitemap`: Supported Method Parameters\n\njson_sitemap = PWN::Plugins::Zaproxy.get_sitemap(\n\nzap_obj: 'required - zap_obj returned from #open method',\nreturn_as: 'optional - :base64 or :har (defaults to :base64)'\n\n)\n"}]}
1041
1051
  {"messages":[{"role":"user","content":"PWN::Plugins::Zaproxy.help Usage"},{"role":"assistant","content":"`PWN::Plugins::Zaproxy.help`: "}]}
1042
1052
  {"messages":[{"role":"user","content":"PWN::Plugins::Zaproxy.import_openapi_to_sitemap Usage"},{"role":"assistant","content":"`PWN::Plugins::Zaproxy.import_openapi_to_sitemap`: Supported Method Parameters\n\nPWN::Plugins::Zaproxy.import_openapi_to_sitemap(\n\nzap_obj: 'required - zap_obj returned from #open method',\nopenapi_spec: 'required - path to OpenAPI JSON or YAML spec file'\n\n)\n"}]}
1043
- {"messages":[{"role":"user","content":"PWN::Plugins::Zaproxy.request Usage"},{"role":"assistant","content":"`PWN::Plugins::Zaproxy.request`: Supported Method Parameters\n\nwatir_resp = PWN::Plugins::Zaproxy.request(\n\nzap_obj: 'required - zap_obj returned from #open method',\nbrowser_obj: 'required - browser_obj w/ browser_type: :firefox||:headless returned from #open method',\ninstruction: 'required - watir instruction to make (e.g. button(text: \"Google Search\").click)'\n\n)\n"}]}
1053
+ {"messages":[{"role":"user","content":"PWN::Plugins::Zaproxy.inject_additional_http_headers Usage"},{"role":"assistant","content":"`PWN::Plugins::Zaproxy.inject_additional_http_headers`: Supported Method Parameters\n\nPWN::Plugins::Zaproxy.inject_additional_http_headers(\n\nzap_obj: 'required - zap_obj returned from #open method',\ntarget_regex: 'required - url regex to inject headers into (e.g. https://test.domain.local.*)',\nheaders: 'required - hash of additional headers to inject into each request',\n\n)\n"}]}
1054
+ {"messages":[{"role":"user","content":"PWN::Plugins::Zaproxy.requester Usage"},{"role":"assistant","content":"`PWN::Plugins::Zaproxy.requester`: Supported Method Parameters\n\nPWN::Plugins::Zaproxy.requester(\n\nzap_obj: 'required - zap_obj returned from #open method',\nhar_entry: 'required - har entry (e.g. from #get_sitemap method or #find_har_entries method)',\nredirect: 'optional - follow redirects if set to true (defaults to false)'\n\n)\n"}]}
1044
1055
  {"messages":[{"role":"user","content":"PWN::Plugins::Zaproxy.spider Usage"},{"role":"assistant","content":"`PWN::Plugins::Zaproxy.spider`: Supported Method Parameters\n\nPWN::Plugins::Zaproxy.spider(\n\nzap_obj: 'required - zap_obj returned from #open method',\ntarget_url: 'required - url to spider'\n\n)\n"}]}
1045
1056
  {"messages":[{"role":"user","content":"PWN::Plugins::Zaproxy.start Usage"},{"role":"assistant","content":"`PWN::Plugins::Zaproxy.start`: Supported Method Parameters\n\nzap_obj = PWN::Plugins::Zaproxy.start(\n\napi_key: 'required - api key for API authorization',\nzap_bin_path: 'optional - path to zap.sh file'\nheadless: 'optional - run zap headless if set to true',\nbrowser_type: 'optional - defaults to :firefox. See PWN::Plugins::TransparentBrowser.help for a list of types',\nproxy: 'optional - change local zap proxy listener (defaults to http://127.0.0.1:<Random 1024-65535>)',\n\n)\n"}]}
1046
1057
  {"messages":[{"role":"user","content":"PWN::Plugins::Zaproxy.stop Usage"},{"role":"assistant","content":"`PWN::Plugins::Zaproxy.stop`: Supported Method Parameters\n\nPWN::Plugins::Zaproxy.stop(\n\nzap_obj: 'required - zap_obj returned from #open method'\n\n)\n"}]}
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pwn
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.410
4
+ version: 0.5.412
5
5
  platform: ruby
6
6
  authors:
7
7
  - 0day Inc.
@@ -631,14 +631,14 @@ dependencies:
631
631
  requirements:
632
632
  - - '='
633
633
  - !ruby/object:Gem::Version
634
- version: 1.18.9
634
+ version: 1.18.10
635
635
  type: :runtime
636
636
  prerelease: false
637
637
  version_requirements: !ruby/object:Gem::Requirement
638
638
  requirements:
639
639
  - - '='
640
640
  - !ruby/object:Gem::Version
641
- version: 1.18.9
641
+ version: 1.18.10
642
642
  - !ruby/object:Gem::Dependency
643
643
  name: nokogiri-diff
644
644
  requirement: !ruby/object:Gem::Requirement