pwn 0.4.701 → 0.4.703

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/CONTRIBUTING.md +12 -9
  3. data/README.md +2 -2
  4. data/bin/pwn_burp_suite_pro_active_scan +2 -1
  5. data/bin/pwn_domain_reversewhois +7 -6
  6. data/bin/pwn_owasp_zap_active_scan +3 -2
  7. data/bin/pwn_pastebin_sample_filter +5 -3
  8. data/bin/pwn_web_cache_deception +10 -7
  9. data/bin/pwn_www_checkip +5 -4
  10. data/bin/pwn_www_uri_buster +5 -4
  11. data/bin/pwn_xss_dom_vectors +11 -8
  12. data/lib/pwn/plugins/baresip.rb +3 -2
  13. data/lib/pwn/plugins/beef.rb +5 -2
  14. data/lib/pwn/plugins/burp_suite.rb +7 -5
  15. data/lib/pwn/plugins/defect_dojo.rb +5 -3
  16. data/lib/pwn/plugins/github.rb +2 -1
  17. data/lib/pwn/plugins/hacker_one.rb +4 -2
  18. data/lib/pwn/plugins/ibm_appscan.rb +13 -6
  19. data/lib/pwn/plugins/ip_info.rb +4 -2
  20. data/lib/pwn/plugins/jira_server.rb +2 -1
  21. data/lib/pwn/plugins/nessus_cloud.rb +2 -1
  22. data/lib/pwn/plugins/open_ai.rb +3 -1
  23. data/lib/pwn/plugins/owasp_zap.rb +2 -1
  24. data/lib/pwn/plugins/shodan.rb +2 -1
  25. data/lib/pwn/plugins/transparent_browser.rb +22 -32
  26. data/lib/pwn/plugins/twitter_api.rb +5 -2
  27. data/lib/pwn/plugins/vsphere.rb +1 -2
  28. data/lib/pwn/version.rb +1 -1
  29. data/lib/pwn/www/app_cobalt_io.rb +17 -11
  30. data/lib/pwn/www/bing.rb +7 -4
  31. data/lib/pwn/www/bug_crowd.rb +17 -11
  32. data/lib/pwn/www/checkip.rb +5 -3
  33. data/lib/pwn/www/coinbase_pro.rb +16 -10
  34. data/lib/pwn/www/duckduckgo.rb +13 -6
  35. data/lib/pwn/www/facebook.rb +14 -8
  36. data/lib/pwn/www/google.rb +10 -6
  37. data/lib/pwn/www/hacker_one.rb +14 -8
  38. data/lib/pwn/www/linkedin.rb +14 -8
  39. data/lib/pwn/www/pandora.rb +14 -8
  40. data/lib/pwn/www/pastebin.rb +7 -3
  41. data/lib/pwn/www/paypal.rb +34 -26
  42. data/lib/pwn/www/synack.rb +17 -11
  43. data/lib/pwn/www/torch.rb +10 -5
  44. data/lib/pwn/www/trading_view.rb +17 -11
  45. data/lib/pwn/www/twitter.rb +18 -10
  46. data/lib/pwn/www/uber.rb +14 -8
  47. data/lib/pwn/www/upwork.rb +14 -8
  48. data/lib/pwn/www/youtube.rb +7 -4
  49. metadata +2 -6
  50. data/bin/pwn_arachni +0 -157
  51. data/bin/pwn_arachni_rest +0 -174
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ceb1cedbe92d94c3dca89d70f85bb9981dfd3ec76ea31587f32d16ffa3cda7b3
4
- data.tar.gz: ae4ec69d69bfc2c0ccaf00fdd45106c2f44aab3d128f26c4b26b766db821ade4
3
+ metadata.gz: '08dcfe72f65aaf9093d1dec6cb5b42532e32dee67232b33611ef028263ad83a1'
4
+ data.tar.gz: 96a1ba0947499d36317b3e47f32388a3ca1d944c5140827ca8545e203c56bbd8
5
5
  SHA512:
6
- metadata.gz: 0ba4707ce699ada3695d8c3259776b9fc73d4725b50f1a8481103b31ce5a85e8ee839438e2adef538027cff6008ff46374cb63cfd63d1d1611c2bfe7dc73c902
7
- data.tar.gz: 7fbc0b3c7a169116a73edbd0dea37d7c653cb380bc57a51838850cea3769a6105ef9e80cbc3ea7ff80836231fc5b35ebacb28d3d5dac93db00e7c3503df0b18a
6
+ metadata.gz: 26214b3bb11d10e90232ab0279d5dba3615706648c7206c4bea4f142531143fd787ac008c0cfa908db1bfaee1f6c041b09bec5b62909cbdec31761c7da8f007b
7
+ data.tar.gz: b600e27dad07c0d777be618c55dc6b49f77874e7b7b6d0713779dd1bddfbf674f7cf5ae472814ad3ca72e3521f75d645791f138597d16ecb002fb81954912415
data/CONTRIBUTING.md CHANGED
@@ -1,10 +1,13 @@
1
- Initial Rules:
1
+ PWN Contribution Rules:
2
2
 
3
- - Be Respectful
4
- - Ask Questions
5
- - Fork PWN
6
- - Make Changes
7
- - Sign Your Work: https://git-scm.com/book/en/v2/Git-Tools-Signing-Your-Work
8
- - Submit Pull Requests
9
- - Pass Tests
10
- - Profit
3
+ - loop do
4
+ - 'Be Respectful'
5
+ - 'Ask Questions'
6
+ - 'Fork PWN'
7
+ - 'Make Changes'
8
+ - 'Create RSpec Tests'
9
+ - 'Pass RSpec && RuboCop Tests'
10
+ - 'Sign Your Work: https://git-scm.com/book/en/v2/Git-Tools-Signing-Your-Work'
11
+ - 'Submit Pull Requests'
12
+ - 'Pass Upstream Tests'
13
+ - end
data/README.md CHANGED
@@ -37,7 +37,7 @@ $ rvm use ruby-3.2.2@pwn
37
37
  $ rvm list gemsets
38
38
  $ gem install --verbose pwn
39
39
  $ pwn
40
- pwn[v0.4.701]:001 >>> PWN.help
40
+ pwn[v0.4.703]: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.2.2@pwn
52
52
  $ gem uninstall --all --executables pwn
53
53
  $ gem install --verbose pwn
54
54
  $ pwn
55
- pwn[v0.4.701]:001 >>> PWN.help
55
+ pwn[v0.4.703]:001 >>> PWN.help
56
56
  ```
57
57
 
58
58
 
@@ -72,7 +72,8 @@ begin
72
72
  # support JavaScript, DOM-based XSS vuln attempts are
73
73
  # possible as well since we have a DOM to interact w/
74
74
  # (Burp's DOM-XSS checks are based on static code analysis)
75
- browser = burp_obj[:burp_browser]
75
+ browser_obj = burp_obj[:burp_browser]
76
+ browser = browser_obj[:browser]
76
77
  browser.goto(target_url)
77
78
 
78
79
  File.read(navigation_instruct).each_line do |instruction|
@@ -44,10 +44,11 @@ begin
44
44
  browser_obj = PWN::Plugins::TransparentBrowser.open(browser_type: :headless)
45
45
  end
46
46
 
47
- browser_obj.goto("https://viewdns.info/reversewhois/?q=#{CGI.escape(registrant_filter)}")
47
+ browser = browser_obj[:browser]
48
+ browser.goto("https://viewdns.info/reversewhois/?q=#{CGI.escape(registrant_filter)}")
48
49
 
49
50
  # Consume Results Table and Convert to CSV :)
50
- reversewhois_xp_resp = Nokogiri::HTML(browser_obj.html).xpath('//*[@id="null"]/tbody/tr[3]/td/font/table/tbody/tr')
51
+ reversewhois_xp_resp = Nokogiri::HTML(browser.html).xpath('//*[@id="null"]/tbody/tr[3]/td/font/table/tbody/tr')
51
52
  CSV.open(output_results, 'w', col_sep: ',', quote_char: "'", force_quotes: true) do |csv|
52
53
  reversewhois_xp_resp.each do |row|
53
54
  tarray = []
@@ -59,16 +60,16 @@ begin
59
60
  end
60
61
 
61
62
  # Ok, now let's append domain bigdata.com
62
- browser_obj.goto('https://domainbigdata.com')
63
+ browser.goto('https://domainbigdata.com')
63
64
 
64
65
  # Type Registrant Filter in Char-by-Char to Ensure Everyone is Happy ;)
65
66
  PWN::Plugins::TransparentBrowser.type_as_human(string: registrant_filter) do |char|
66
- browser_obj.text_field(id: 'txtSearchTopPage').wait_until(&:present?).send_keys(char)
67
+ browser.text_field(id: 'txtSearchTopPage').wait_until(&:present?).send_keys(char)
67
68
  end
68
- browser_obj.button(id: 'btnTopSearch').wait_until(&:present?).click
69
+ browser.button(id: 'btnTopSearch').wait_until(&:present?).click
69
70
 
70
71
  # Consume Results Table and Convert to CSV :)
71
- reversewhois_xp_resp = Nokogiri::HTML(browser_obj.html).xpath('//*[@id="domain-same-ip"]/div/div/table/tbody/tr')
72
+ reversewhois_xp_resp = Nokogiri::HTML(browser.html).xpath('//*[@id="domain-same-ip"]/div/div/table/tbody/tr')
72
73
  CSV.open(output_results, 'a', col_sep: ',', quote_char: "'", force_quotes: true) do |csv|
73
74
  reversewhois_xp_resp.each do |row|
74
75
  tarray = []
@@ -77,10 +77,11 @@ begin
77
77
 
78
78
  logger.info(zap_obj)
79
79
 
80
- browser = PWN::Plugins::TransparentBrowser.open(
80
+ browser_obj = PWN::Plugins::TransparentBrowser.open(
81
81
  browser_type: browser_type,
82
82
  proxy: proxy
83
83
  )
84
+ browser = browser_obj[:browser]
84
85
 
85
86
  if browser_type == :rest
86
87
  browser.get(target_url)
@@ -129,5 +130,5 @@ rescue StandardError => e
129
130
  raise e
130
131
  ensure
131
132
  PWN::Plugins::OwaspZap.stop(zap_obj: zap_obj) unless zap_obj.nil?
132
- browser = PWN::Plugins::TransparentBrowser.close(browser_obj: browser) unless browser.nil?
133
+ browser_obj = PWN::Plugins::TransparentBrowser.close(browser_obj: browser_obj) unless browser_obj.nil?
133
134
  end
@@ -32,12 +32,14 @@ browser_obj = PWN::WWW::Pastebin.open(
32
32
  proxy: proxy
33
33
  )
34
34
 
35
+ browser = browser_obj[:browser]
36
+
35
37
  begin
36
38
  loop do
37
- browser_obj.div(id: 'menu_2').links[0].click
38
- code_frame = browser_obj.div(id: 'code_frame').text
39
+ browser.div(id: 'menu_2').links[0].click
40
+ code_frame = browser.div(id: 'code_frame').text
39
41
  if code_frame.match?(/#{regex}/mi)
40
- puts "\nCurrent Link: #{browser_obj.url}"
42
+ puts "\nCurrent Link: #{browser.url}"
41
43
  puts "#{code_frame}\n\n\n"
42
44
  else
43
45
  print '.'
@@ -92,8 +92,9 @@ begin
92
92
  payload = opts[:payload].to_s.scrub.chomp.strip
93
93
 
94
94
  # Browse to original page to compare response lengths
95
- browser_obj.goto(target_url)
96
- orig_url_response_length = browser_obj.html.length
95
+ browser = browser_obj[:browser]
96
+ browser.goto(target_url)
97
+ orig_url_response_length = browser.html.length
97
98
 
98
99
  http_result = ''
99
100
  if target_url.include?('?')
@@ -102,8 +103,8 @@ begin
102
103
  injected_target_url.path = "#{injected_target_url.path.to_s.chomp('/')}/wcd.#{payload}"
103
104
  web_cache_deception_url = injected_target_url.to_s
104
105
 
105
- browser_obj.goto(injected_target_url.to_s)
106
- injected_url_response_length = browser_obj.html.length
106
+ browser.goto(injected_target_url.to_s)
107
+ injected_url_response_length = browser.html.length
107
108
 
108
109
  if injected_url_response_length == orig_url_response_length
109
110
  # TODO: Add incognito Chrome browser
@@ -115,8 +116,8 @@ begin
115
116
  end
116
117
  else
117
118
  web_cache_deception_url = "#{target_url.chomp('/')}/wcd.#{payload}"
118
- browser_obj.goto(web_cache_deception_url)
119
- wcd_url_response_length = browser_obj.html.length
119
+ browser.goto(web_cache_deception_url)
120
+ wcd_url_response_length = browser.html.length
120
121
 
121
122
  if orig_url_response_length == wcd_url_response_length
122
123
  # TODO: Add incognito Chrome browser
@@ -176,8 +177,10 @@ begin
176
177
  browser_obj = PWN::Plugins::TransparentBrowser.open(browser_type: :chrome)
177
178
  end
178
179
 
180
+ browser = browser_obj[:browser]
181
+
179
182
  puts "#{@green}Navigating to Target URL: #{target_url}#{@end_of_color}\n\n\n"
180
- browser_obj.goto(target_url)
183
+ browser.goto(target_url)
181
184
 
182
185
  web_cache_deception_payload_arr = %w[
183
186
  aif aiff au avi bin bmp cab carb cct cdf class css doc dcr dtd gcf gff gif grv hdml hqx ico ini jpeg jpg js mov mp3 mp4 nc pct ppc pws swa swf txt vbs w32 wav wbmp wml wmlc wmls wmlsc xsd zip
data/bin/pwn_www_checkip CHANGED
@@ -27,19 +27,20 @@ begin
27
27
  browser_obj = PWN::Plugins::TransparentBrowser.open(
28
28
  browser_type: :rest,
29
29
  proxy: proxy
30
- )::Request
30
+ )
31
31
  else
32
- browser_obj = PWN::Plugins::TransparentBrowser.open(browser_type: :rest)::Request
32
+ browser_obj = PWN::Plugins::TransparentBrowser.open(browser_type: :rest)
33
33
  end
34
+ browser = browser_obj[:browser]::Request
34
35
 
35
36
  if proxy
36
- public_ip_address = browser_obj.execute(
37
+ public_ip_address = browser.execute(
37
38
  method: :get,
38
39
  url: 'https://checkip.amazonaws.com',
39
40
  verify_ssl: false
40
41
  ).to_s.chomp
41
42
  else
42
- public_ip_address = browser_obj.execute(
43
+ public_ip_address = browser.execute(
43
44
  method: :get,
44
45
  url: 'https://checkip.amazonaws.com'
45
46
  ).to_s.chomp
@@ -67,15 +67,16 @@ def request_path(opts = {})
67
67
  print '.'
68
68
  http_uri = "#{target_url}/#{wordlist_line}"
69
69
  if proxy
70
- rest_client = PWN::Plugins::TransparentBrowser.open(
70
+ browser_obj = PWN::Plugins::TransparentBrowser.open(
71
71
  browser_type: :rest,
72
72
  proxy: proxy
73
- )::Request
73
+ )
74
74
  else
75
- rest_client = PWN::Plugins::TransparentBrowser.open(
75
+ browser_obj = PWN::Plugins::TransparentBrowser.open(
76
76
  browser_type: :rest
77
- )::Request
77
+ )
78
78
  end
79
+ rest_client = browser_obj[:browser]::Request
79
80
 
80
81
  headers = nil
81
82
  if http_request_headers
@@ -73,9 +73,10 @@ begin
73
73
  target_page = opts[:url].to_s.scrub.chomp.strip
74
74
  output_dir = opts[:output_dir].to_s.scrub.chomp.strip
75
75
 
76
+ browser = browser_obj[:browser]
76
77
  puts "#{@green}Navigating to Page #{target_page}#{@end_of_color}"
77
- browser_obj.goto(target_page)
78
- browser_obj.scripts.each do |script|
78
+ browser.goto(target_page)
79
+ browser.scripts.each do |script|
79
80
  if script.src == ''
80
81
  # Save a copy of the outer_html
81
82
  puts "#{@yellow}Saving OuterHTML of Native '<script>' Element#{@end_of_color}"
@@ -87,15 +88,15 @@ begin
87
88
  else
88
89
  # Save a copy of the script
89
90
  puts "#{@yellow}Navigating to #{script.src}#{@end_of_color}"
90
- browser_obj.goto(script.src)
91
- sha256_hexdigest = OpenSSL::Digest::SHA256.hexdigest(browser_obj.text)
92
- uri = URI.parse(browser_obj.url)
91
+ browser.goto(script.src)
92
+ sha256_hexdigest = OpenSSL::Digest::SHA256.hexdigest(browser.text)
93
+ uri = URI.parse(browser.url)
93
94
  script_filename = File.basename(uri.path)
94
95
  script_results = "#{output_dir}/#{File.basename(script_filename, '.*')}-#{sha256_hexdigest}#{File.extname(script_filename)}".to_s.scrub.chomp.strip
95
96
  File.open(script_results, 'w') do |f|
96
- f.puts browser_obj.text
97
+ f.puts browser.text
97
98
  end
98
- browser_obj.back
99
+ browser.back
99
100
  end
100
101
  puts "#{@green}Saved #{script_results}#{@end_of_color}\n\n\n"
101
102
  end
@@ -112,8 +113,10 @@ begin
112
113
  browser_obj = PWN::Plugins::TransparentBrowser.open(browser_type: browser_type)
113
114
  end
114
115
 
116
+ browser = browser_obj[:browser]
117
+
115
118
  puts "#{@green}Navigating to Target FQDN: #{target_fqdn}#{@end_of_color}\n\n\n"
116
- browser_obj.goto(target_fqdn)
119
+ browser.goto(target_fqdn)
117
120
 
118
121
  if spider
119
122
  if File.exist?(spider_results)
@@ -25,9 +25,10 @@ module PWN
25
25
  begin
26
26
  conn_attempt += 1
27
27
 
28
- rest_client = PWN::Plugins::TransparentBrowser.open(
28
+ browser_obj = PWN::Plugins::TransparentBrowser.open(
29
29
  browser_type: :rest
30
- )::Request
30
+ )
31
+ rest_client = browser_obj[:browser]::Request
31
32
 
32
33
  response = rest_client.execute(
33
34
  method: :get,
@@ -39,7 +39,9 @@ module PWN
39
39
  auth_payload[:password] = password
40
40
 
41
41
  @@logger.info("Logging into BeEF REST API: #{beef_ip}")
42
- rest_client = PWN::Plugins::TransparentBrowser.open(browser_type: :rest)::Request
42
+ browser_obj = PWN::Plugins::TransparentBrowser.open(browser_type: :rest)
43
+ rest_client = browser_obj[:browser]::Request
44
+
43
45
  response = rest_client.execute(
44
46
  method: :post,
45
47
  url: "#{base_beef_api_uri}/admin/login",
@@ -85,7 +87,8 @@ module PWN
85
87
  base_beef_api_uri = "http://#{beef_ip}:#{beef_port}/api".to_s.scrub
86
88
  api_token = beef_obj[:api_token]
87
89
 
88
- rest_client = PWN::Plugins::TransparentBrowser.open(browser_type: :rest)::Request
90
+ browser_obj = PWN::Plugins::TransparentBrowser.open(browser_type: :rest)
91
+ rest_client = browser_obj[:browser]::Request
89
92
 
90
93
  case http_method
91
94
  when :get
@@ -37,7 +37,9 @@ module PWN
37
37
  # Construct burp_obj
38
38
  burp_obj = {}
39
39
  burp_obj[:pid] = Process.spawn(burp_cmd_string)
40
- rest_browser = PWN::Plugins::TransparentBrowser.open(browser_type: :rest)
40
+ browser_obj1 = PWN::Plugins::TransparentBrowser.open(browser_type: :rest)
41
+ rest_browser = browser_obj1[:browser]
42
+
41
43
  # random_mitm_port = PWN::Plugins::Sock.get_random_unused_port
42
44
  # random_bb_port = random_mitm_port
43
45
  # random_bb_port = PWN::Plugins::Sock.get_random_unused_port while random_bb_port == random_mitm_port
@@ -46,12 +48,12 @@ module PWN
46
48
  burp_obj[:rest_browser] = rest_browser
47
49
 
48
50
  # Proxy always listens on localhost...use SSH tunneling if remote access is required
49
- burp_browser = PWN::Plugins::TransparentBrowser.open(
51
+ browser_obj2 = PWN::Plugins::TransparentBrowser.open(
50
52
  browser_type: browser_type,
51
53
  proxy: "http://#{burp_obj[:mitm_proxy]}"
52
54
  )
53
55
 
54
- burp_obj[:burp_browser] = burp_browser
56
+ burp_obj[:burp_browser] = browser_obj2
55
57
 
56
58
  # Wait for TCP 8001 to open prior to returning burp_obj
57
59
  loop do
@@ -278,10 +280,10 @@ module PWN
278
280
 
279
281
  public_class_method def self.stop(opts = {})
280
282
  burp_obj = opts[:burp_obj]
281
- burp_browser = burp_obj[:burp_browser]
283
+ browser_obj = burp_obj[:burp_browser]
282
284
  burp_pid = burp_obj[:pid]
283
285
 
284
- burp_browser = PWN::Plugins::TransparentBrowser.close(browser_obj: burp_browser)
286
+ browser_obj = PWN::Plugins::TransparentBrowser.close(browser_obj: browser_obj)
285
287
  Process.kill('TERM', burp_pid)
286
288
 
287
289
  burp_obj = nil
@@ -67,15 +67,17 @@ module PWN
67
67
  api_version = dd_obj[:api_version]
68
68
  base_dd_api_uri = "#{url}/api/#{api_version}".to_s.scrub
69
69
 
70
- rest_client = PWN::Plugins::TransparentBrowser.open(browser_type: :rest)::Request
70
+ browser_obj = PWN::Plugins::TransparentBrowser.open(browser_type: :rest)
71
71
 
72
72
  if dd_obj[:proxy]
73
- rest_client = PWN::Plugins::TransparentBrowser.open(
73
+ browser_obj = PWN::Plugins::TransparentBrowser.open(
74
74
  browser_type: :rest,
75
75
  proxy: dd_obj[:proxy]
76
- )::Request
76
+ )
77
77
  end
78
78
 
79
+ rest_client = browser_obj[:browser]::Request
80
+
79
81
  case http_method
80
82
  when :get
81
83
  response = rest_client.execute(
@@ -28,7 +28,8 @@ module PWN
28
28
  http_body = opts[:http_body].to_s.scrub
29
29
  base_gist_api_uri = 'https://api.github.com'
30
30
 
31
- rest_client = PWN::Plugins::TransparentBrowser.open(browser_type: :rest)::Request
31
+ browser_obj = PWN::Plugins::TransparentBrowser.open(browser_type: :rest)
32
+ rest_client = browser_obj[:browser]::Request
32
33
 
33
34
  case http_method
34
35
  when :get
@@ -35,7 +35,8 @@ module PWN
35
35
  basic_auth_header = "Basic #{base64_encoded_auth}"
36
36
 
37
37
  @@logger.info("Logging into HackerOne REST API: #{base_h1_api_uri}")
38
- rest_client = PWN::Plugins::TransparentBrowser.open(browser_type: :rest)::Request
38
+ browser_obj = PWN::Plugins::TransparentBrowser.open(browser_type: :rest)
39
+ rest_client = browser_obj[:browser]::Request
39
40
  response = rest_client.execute(
40
41
  method: :get,
41
42
  url: base_h1_api_uri,
@@ -80,7 +81,8 @@ module PWN
80
81
  base_h1_api_uri = 'https://api.hackerone.com/v1/'.to_s.scrub
81
82
  api_token = h1_obj[:api_token]
82
83
 
83
- rest_client = PWN::Plugins::TransparentBrowser.open(browser_type: :rest)::Request
84
+ browser_obj = PWN::Plugins::TransparentBrowser.open(browser_type: :rest)::Request
85
+ rest_client = browser_obj[:browser]::Request
84
86
 
85
87
  case http_method
86
88
  when :get
@@ -33,7 +33,9 @@ module PWN
33
33
  end
34
34
 
35
35
  @@logger.info("Logging into IBM Appscan Enterprise Server: #{appscan_ip}")
36
- rest_client = PWN::Plugins::TransparentBrowser.open(browser_type: :rest)::Request
36
+ browser_obj = PWN::Plugins::TransparentBrowser.open(browser_type: :rest)
37
+ rest_client = browser_obj[:browser]::Request
38
+
37
39
  response = rest_client.execute(
38
40
  method: :post,
39
41
  url: "#{base_appscan_api_uri}/login",
@@ -91,7 +93,8 @@ module PWN
91
93
  base_appscan_api_uri = "https://#{appscan_ip}/ase/services".to_s.scrub
92
94
  retry_count = 3
93
95
 
94
- rest_client = PWN::Plugins::TransparentBrowser.open(browser_type: :rest)::Request
96
+ browser_obj = PWN::Plugins::TransparentBrowser.open(browser_type: :rest)
97
+ rest_client = browser_obj[:browser]::Request
95
98
 
96
99
  case http_method
97
100
  when :get
@@ -694,7 +697,9 @@ module PWN
694
697
 
695
698
  # First Get request
696
699
  uri = URI.parse(report_link)
697
- rb = PWN::Plugins::TransparentBrowser.open(browser_type: :rest)
700
+ browser_obj = PWN::Plugins::TransparentBrowser.open(browser_type: :rest)
701
+ rb = browser_obj[:browser]
702
+
698
703
  res = rb.get(report_link, 'Cookie' => appscan_obj[:cookie], :verify_ssl => OpenSSL::SSL::VERIFY_NONE)
699
704
  location = "https://#{uri.host}#{res.headers['location']}"
700
705
 
@@ -736,9 +741,11 @@ module PWN
736
741
  # verify the output path actually exists
737
742
  return @@logger.error("Output directory does not exist: #{output_path}") unless File.directory?(output_path)
738
743
 
739
- # REMEMBER TO CHANGE BROWSER TYPE BACK TO HEADLESS!!!!
740
- h_browser = PWN::Plugins::TransparentBrowser.open(browser_type: :firefox,
741
- proxy: 'http://127.0.0.1:8080')
744
+ browser_obj = PWN::Plugins::TransparentBrowser.open(
745
+ browser_type: :headless,
746
+ proxy: 'http://127.0.0.1:8080'
747
+ )
748
+ h_browser = browser_obj[:browser]
742
749
 
743
750
  # log into the system
744
751
  h_browser.goto login_uri.to_s.to_s.scrub
@@ -20,10 +20,12 @@ module PWN
20
20
 
21
21
  if IPAddress.valid?(ip)
22
22
  if proxy
23
- rest_client = PWN::Plugins::TransparentBrowser.open(browser_type: :rest, proxy: proxy)
23
+ browser_obj = PWN::Plugins::TransparentBrowser.open(browser_type: :rest, proxy: proxy)
24
24
  else
25
- rest_client = PWN::Plugins::TransparentBrowser.open(browser_type: :rest)
25
+ browser_obj = PWN::Plugins::TransparentBrowser.open(browser_type: :rest)
26
26
  end
27
+ rest_client = browser_obj[:browser]
28
+
27
29
  ip_resp_str = rest_client.get("http://ip-api.com/json/#{ip}?fields=country,countryCode,region,regionName,city,zip,lat,lon,timezone,isp,org,as,reverse,mobile,proxy,query,status,message")
28
30
  ip_resp_json = JSON.parse(
29
31
  ip_resp_str,
@@ -36,7 +36,8 @@ module PWN
36
36
 
37
37
  token = opts[:token]
38
38
 
39
- rest_client = PWN::Plugins::TransparentBrowser.open(browser_type: :rest)::Request
39
+ browser_obj = PWN::Plugins::TransparentBrowser.open(browser_type: :rest)
40
+ rest_client = browser_obj[:browser]::Request
40
41
 
41
42
  spinner = TTY::Spinner.new
42
43
  spinner.auto_spin
@@ -30,7 +30,8 @@ module PWN
30
30
  secret_key = nessus_obj[:secret_key]
31
31
  base_nessus_cloud_api_uri = 'https://cloud.tenable.com'
32
32
 
33
- rest_client = PWN::Plugins::TransparentBrowser.open(browser_type: :rest)::Request
33
+ browser_obj = PWN::Plugins::TransparentBrowser.open(browser_type: :rest)
34
+ rest_client = browser_obj[:browser]::Request
34
35
 
35
36
  case http_method
36
37
  when :get
@@ -35,7 +35,9 @@ module PWN
35
35
 
36
36
  content_type = 'application/json; charset=UTF-8'
37
37
 
38
- rest_client = PWN::Plugins::TransparentBrowser.open(browser_type: :rest)::Request
38
+ browser_obj = PWN::Plugins::TransparentBrowser.open(browser_type: :rest)
39
+ rest_client = browser_obj[:browser]::Request
40
+
39
41
  spinner = TTY::Spinner.new
40
42
  spinner.auto_spin
41
43
 
@@ -34,7 +34,8 @@ module PWN
34
34
  port = zap_obj[:port]
35
35
  base_zap_api_uri = "http://#{host}:#{port}"
36
36
 
37
- rest_client = PWN::Plugins::TransparentBrowser.open(browser_type: :rest)::Request
37
+ browser_obj = PWN::Plugins::TransparentBrowser.open(browser_type: :rest)
38
+ rest_client = browser_obj[:browser]::Request
38
39
 
39
40
  case http_method
40
41
  when :get
@@ -33,7 +33,8 @@ module PWN
33
33
  base_shodan_api_uri = 'https://api.shodan.io'
34
34
  api_key = opts[:api_key]
35
35
 
36
- rest_client = PWN::Plugins::TransparentBrowser.open(browser_type: :rest)::Request
36
+ browser_obj = PWN::Plugins::TransparentBrowser.open(browser_type: :rest)
37
+ rest_client = browser_obj[:browser]::Request
37
38
 
38
39
  case http_method
39
40
  when :get