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 +4 -4
- data/Gemfile +1 -1
- data/README.md +3 -3
- data/bin/pwn_zaproxy_active_rest_api_scan +4 -10
- data/lib/pwn/plugins/burp_suite.rb +13 -36
- data/lib/pwn/plugins/zaproxy.rb +85 -85
- data/lib/pwn/version.rb +1 -1
- data/third_party/pwn_rdoc.jsonl +15 -4
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 38131db5d063ec6429f21a9705f43f48fee38b9cd62e84e1be7edd61a0bb78cb
|
4
|
+
data.tar.gz: 0edffa812c7a3c32909bfa511df313cb4531589a9c4d15bc1ba40376974e27e9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bbe772b7d7169f3ce683c378ebc68f91ef57a463b99907cca069fe32bd32c77c39af3192bc55e939388bcd215eba7f1f034066901ad9b96271f64e2ee7087c47
|
7
|
+
data.tar.gz: 6fad5ffc58148a10b3a5b949d4e28783001ef0daea8b069caad8d38166e6e20bd29f608d05ab2548175a99b62ec55529048ab8ebb738cd6d96ab3b3dcf06e26a
|
data/Gemfile
CHANGED
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.
|
40
|
+
pwn[v0.5.412]:001 >>> PWN.help
|
41
41
|
```
|
42
42
|
|
43
43
|
[](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.
|
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.
|
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
|
-
#
|
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
|
-
|
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
|
-
|
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',
|
data/lib/pwn/plugins/zaproxy.rb
CHANGED
@@ -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
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
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
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
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
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
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
|
-
|
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
|
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
|
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
data/third_party/pwn_rdoc.jsonl
CHANGED
@@ -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[:
|
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.
|
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.
|
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.
|
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.
|
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.
|
641
|
+
version: 1.18.10
|
642
642
|
- !ruby/object:Gem::Dependency
|
643
643
|
name: nokogiri-diff
|
644
644
|
requirement: !ruby/object:Gem::Requirement
|