pwn 0.4.383 → 0.4.386

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: e108fb65ae9052eeb2d7adec80706eebddd3493cd2766dd00b3210cee62aa9c4
4
- data.tar.gz: 6259072fa3b503007c058b8150848c73b74d2d85d72c88c821e612ee83d2a4cb
3
+ metadata.gz: d9b485665b5ab58c1b6a395b6a3612ad1d9d0674d4f20a1243c7b76eb1995595
4
+ data.tar.gz: 5ff53b97446a9c0face611d86bf3e328cb424a832b9136e6d2ecb64c821a3bac
5
5
  SHA512:
6
- metadata.gz: 7b44e2ed665b2e524b9afe56cfdc75fe17dfd52b28dafdac938714a2ea64cc51ce7c673a5549d8f5e308ef3e650471aee89d922fd3de8c98ff352303fa79b2ef
7
- data.tar.gz: 7ebfbd4af956e56a361cab6f19478568edb2cbc5254e5bb592e129fff2847ef58f0c6700d7e1daa7161d9c65ddd287890c65e643f5464443ed94b1dfca754f9b
6
+ metadata.gz: 2c8aed63d10f28f5f80326e94df77d21192db771bc8f326006c496a2968d079be1d0a445a1a8dd7f9a38fe35fe70746edbb8538e0acd74d71124aa775fe1cac0
7
+ data.tar.gz: 8d3fa53f9340dedbfc147e2a0d61520180f382b69ab41b42363b51fea34500e67f4afdf8ce6ff63162b8d2a5e1cc898a96ef845ab89fba243d5462e0a9a1c1d2
data/Gemfile CHANGED
@@ -34,7 +34,7 @@ gem 'jsonpath', '1.1.0'
34
34
  gem 'jwt', '2.3.0'
35
35
  gem 'luhn', '1.0.2'
36
36
  gem 'mail', '2.7.1'
37
- gem 'mongo', '2.17.0'
37
+ gem 'mongo', '2.17.1'
38
38
  gem 'msfrpc-client', '1.1.2'
39
39
  gem 'net-ldap', '0.17.0'
40
40
  gem 'net-openvpn', '0.8.7'
@@ -45,7 +45,7 @@ gem 'oily_png', '1.2.1'
45
45
  gem 'os', '1.1.4'
46
46
  gem 'packetfu', '1.1.13'
47
47
  gem 'pdf-reader', '2.9.2'
48
- gem 'pg', '1.3.4'
48
+ gem 'pg', '1.3.5'
49
49
  gem 'pry', '0.14.1'
50
50
  gem 'pry-doc', '1.3.0'
51
51
  gem 'rake', '13.0.6'
@@ -65,7 +65,7 @@ gem 'ruby-nmap', '0.10.0'
65
65
  gem 'ruby-saml', '1.14.0'
66
66
  gem 'rvm', '1.11.3.9'
67
67
  gem 'savon', '2.12.1'
68
- gem 'selenium-devtools', '0.99.1'
68
+ gem 'selenium-devtools', '0.100.0'
69
69
  gem 'serialport', '1.3.2'
70
70
  gem 'sinatra', '2.2.0'
71
71
  gem 'slack-ruby-client', '1.0.0'
data/README.md CHANGED
@@ -37,7 +37,7 @@ $ rvm use ruby-3.1.1@pwn
37
37
  $ rvm list gemsets
38
38
  $ gem install --verbose pwn
39
39
  $ pwn
40
- pwn[v0.4.383]:001 >>> PWN.help
40
+ pwn[v0.4.386]:001 >>> PWN.help
41
41
  ```
42
42
 
43
43
  [![Installing the pwn Security Automation Framework](https://raw.githubusercontent.com/0dayInc/pwn/master/documentation/pwn_install.png)](https://youtu.be/G7iLUY4FzsI)
@@ -52,7 +52,7 @@ $ rvm use ruby-3.1.1@pwn
52
52
  $ gem uninstall --all --executables pwn
53
53
  $ gem install --verbose pwn
54
54
  $ pwn
55
- pwn[v0.4.383]:001 >>> PWN.help
55
+ pwn[v0.4.386]:001 >>> PWN.help
56
56
  ```
57
57
 
58
58
 
@@ -66,7 +66,7 @@ begin
66
66
  browser_obj.goto('https://domainbigdata.com')
67
67
 
68
68
  # Type Registrant Filter in Char-by-Char to Ensure Everyone is Happy ;)
69
- PWN::Plugins::TransparentBrowser.type_as_human(q: registrant_filter) do |char|
69
+ PWN::Plugins::TransparentBrowser.type_as_human(string: registrant_filter) do |char|
70
70
  browser_obj.text_field(id: 'txtSearchTopPage').wait_until(&:present?).send_keys(char)
71
71
  end
72
72
  browser_obj.button(id: 'btnTopSearch').wait_until(&:present?).click
@@ -5,6 +5,7 @@ require 'selenium/webdriver'
5
5
  require 'selenium/devtools'
6
6
  require 'rest-client'
7
7
  require 'socksify'
8
+ require 'openssl'
8
9
  require 'em/pure_ruby'
9
10
  require 'faye/websocket'
10
11
 
@@ -260,12 +261,12 @@ module PWN
260
261
 
261
262
  # Supported Method Parameters::
262
263
  # PWN::Plugins::TransparentBrowser.type_as_human(
263
- # q: 'required - query string to randomize',
264
+ # string: 'required - string to type as human',
264
265
  # rand_sleep_float: 'optional - float timing in between keypress (defaults to 0.09)'
265
266
  # )
266
267
 
267
268
  public_class_method def self.type_as_human(opts = {})
268
- query_string = opts[:q].to_s
269
+ string = opts[:string].to_s
269
270
 
270
271
  rand_sleep_float = if opts[:rand_sleep_float]
271
272
  opts[:rand_sleep_float].to_f
@@ -273,7 +274,7 @@ module PWN
273
274
  0.09
274
275
  end
275
276
 
276
- query_string.each_char do |char|
277
+ string.each_char do |char|
277
278
  yield char
278
279
  sleep Random.rand(rand_sleep_float)
279
280
  end
@@ -317,30 +318,92 @@ module PWN
317
318
  with_devtools: 'optional - boolean (defaults to false)'
318
319
  )
319
320
  puts browser_obj1.public_methods
320
- * Only works w/ Chrome
321
+
322
+ ********************************************************
323
+ * DevTools Interaction Only works w/ Chrome
321
324
  * All DevTools Commands can be found here:
322
325
  * https://chromedevtools.github.io/devtools-protocol/
326
+ * Examples
323
327
  devtools = browser_obj1.driver.devtools
324
328
  puts devtools.public_methods
325
329
  puts devtools.instance_variables
326
330
  puts devtools.instance_variable_get('@messages')
331
+
332
+ * Tracing
327
333
  devtools.send_cmd('Tracing.start')
328
334
  devtools.send_cmd('Tracing.requestMemoryDump')
329
335
  devtools.send_cmd('Tracing.end')
330
336
  puts devtools.instance_variable_get('@messages')
337
+
338
+ * Network
331
339
  devtools.send_cmd('Network.enable')
332
- last_ws_resp = devtools.instance_variable_get('@messages').last if devtools.instance_variable_get('@messages')['method'] == 'Network.webSocketFrameReceived'
340
+ last_ws_resp = devtools.instance_variable_get('@messages').last if devtools.instance_variable_get('@messages').last['method'] == 'Network.webSocketFrameReceived'
333
341
  puts last_ws_resp
334
342
  devtools.send_cmd('Network.disable')
335
343
 
344
+ * Debugging DOM and Sending JavaScript to Console
345
+ devtools.send_cmd('Runtime.enable')
346
+ devtools.send_cmd('Console.enable')
347
+ devtools.send_cmd('DOM.enable')
348
+ devtools.send_cmd('Page.enable')
349
+ devtools.send_cmd('Log.enable')
350
+ devtools.send_cmd('Debugger.enable')
351
+ devtools.send_cmd('Debugger.pause')
352
+ step = 1
353
+ next_step = 60
354
+ loop do
355
+ devtools.send_cmd('Console.clearMessages')
356
+ devtools.send_cmd('Log.clear')
357
+ console_events = []
358
+ b.driver.on_log_event(:console) { |event| console_events.push(event) }
359
+
360
+ devtools.send_cmd('Debugger.stepInto')
361
+ puts \"Step: \#{step}\"
362
+
363
+ this_document = devtools.send_cmd('DOM.getDocument')
364
+ puts \"This #document:\\n\#{this_document}\\n\\n\\n\"
365
+
366
+ console_cmd = {
367
+ expression: 'for(var pop_var in window) { if (window.hasOwnProperty(pop_var) && window[pop_var] != null) console.log(pop_var + \" = \" + window[pop_var]); }'
368
+ }
369
+ puts devtools.send_cmd('Runtime.evaluate', **console_cmd)
370
+
371
+ print '-' * 180
372
+ print \"\\n\"
373
+ console_events.each do |event|
374
+ puts event.args
375
+ end
376
+ puts \"Console Response Length: \#{console_events.length}\"
377
+ console_events_digest = OpenSSL::Digest::SHA256.hexdigest(
378
+ console_events.inspect
379
+ )
380
+ puts \"Console Events Array SHA256 Digest: \#{console_events_digest}\"
381
+ print '-' * 180
382
+ puts \"\\n\\n\\n\"
383
+
384
+ print \"Next Step in \"
385
+ next_step.downto(1) {|n| print \"\#{n} \"; sleep 1 }
386
+ puts 'READY!'
387
+ step += 1
388
+ end
389
+
390
+ devtools.send_cmd('Debugger.disable')
391
+ devtools.send_cmd('Log.disable')
392
+ devtools.send_cmd('Page.disable')
393
+ devtools.send_cmd('DOM.disable')
394
+ devtools.send_cmd('Console.disable')
395
+ devtools.send_cmd('Runtime.disable')
396
+ * End of DevTools Examples
397
+ ********************************************************
398
+
336
399
  browser_obj1 = #{self}.linkout(
337
400
  browser_obj: 'required - browser_obj returned from #open method)'
338
401
  )
339
402
 
340
403
  #{self}.type_as_human(
341
- q: 'required - query string to randomize',
404
+ string: 'required - string to type as human',
342
405
  rand_sleep_float: 'optional - float timing in between keypress (defaults to 0.09)'
343
- ) {|char| browser_obj1.text_field(name: \"q\").send_keys(char) }
406
+ ) {|char| browser_obj1.text_field(name: \"search\").send_keys(char) }
344
407
 
345
408
  browser_obj1 = #{self}.close(
346
409
  browser_obj: 'required - browser_obj returned from #open method)'
data/lib/pwn/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PWN
4
- VERSION = '0.4.383'
4
+ VERSION = '0.4.386'
5
5
  end
@@ -0,0 +1,135 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'yaml'
4
+
5
+ module PWN
6
+ module WWW
7
+ # This plugin supports tradingview.com actions.
8
+ module CoinbasePro
9
+ # Supported Method Parameters::
10
+ # browser_obj = PWN::WWW::CoinbasePro.open(
11
+ # browser_type: 'optional - :firefox|:chrome|:ie|:headless (Defaults to :firefox)',
12
+ # proxy: 'optional - scheme://proxy_host:port',
13
+ # with_tor: 'optional - boolean (defaults to false)'
14
+ # )
15
+
16
+ public_class_method def self.open(opts = {})
17
+ browser_obj = PWN::Plugins::TransparentBrowser.open(opts)
18
+
19
+ browser_obj.goto('https://pro.coinbase.com')
20
+
21
+ browser_obj
22
+ rescue StandardError => e
23
+ raise e
24
+ end
25
+
26
+ # Supported Method Parameters::
27
+ # browser_obj = PWN::WWW::CoinbasePro.login(
28
+ # browser_obj: 'required - browser_obj returned from #open method',
29
+ # username: 'required - username',
30
+ # password: 'optional - passwd (will prompt if blank)'
31
+ # )
32
+
33
+ public_class_method def self.login(opts = {})
34
+ browser_obj = opts[:browser_obj]
35
+ username = opts[:username].to_s.scrub.strip.chomp
36
+ password = opts[:password]
37
+
38
+ if password.nil?
39
+ password = PWN::Plugins::AuthenticationHelper.mask_password
40
+ else
41
+ password = opts[:password].to_s.scrub.strip.chomp
42
+ end
43
+ mfa = opts[:mfa]
44
+
45
+ browser_obj.goto('https://pro.coinbase.com')
46
+
47
+ # In case window is really small,
48
+ # click on hamburger menu
49
+ browser_obj.div(index: 9).click if browser_obj.div(index: 9).visible?
50
+ browser_obj.span(text: 'Sign in').wait_until(&:present?).click
51
+ browser_obj.text_field(name: 'email').wait_until(&:present?).set(username)
52
+ browser_obj.text_field(name: 'password').wait_until(&:present?).set(password)
53
+ browser_obj.button(text: 'Sign In').click!
54
+
55
+ if mfa
56
+ until browser_obj.url.include?('https://pro.coinbase.com')
57
+ browser_obj.text_field(name: 'token').wait_until(&:present?).set(PWN::Plugins::AuthenticationHelper.mfa(prompt: 'enter mfa token'))
58
+ browser_obj.button(text: 'Verify').click!
59
+ sleep 3
60
+ end
61
+ print "\n"
62
+ end
63
+
64
+ browser_obj
65
+ rescue StandardError => e
66
+ raise e
67
+ end
68
+
69
+ # Supported Method Parameters::
70
+ # browser_obj = PWN::WWW::CoinbasePro.logout(
71
+ # browser_obj: 'required - browser_obj returned from #open method'
72
+ # )
73
+
74
+ public_class_method def self.logout(opts = {})
75
+ browser_obj = opts[:browser_obj]
76
+ browser_obj.goto('https://pro.coinbase.com/signout')
77
+
78
+ browser_obj
79
+ rescue StandardError => e
80
+ raise e
81
+ end
82
+
83
+ # Supported Method Parameters::
84
+ # browser_obj = PWN::WWW::CoinbasePro.close(
85
+ # browser_obj: 'required - browser_obj returned from #open method'
86
+ # )
87
+
88
+ public_class_method def self.close(opts = {})
89
+ browser_obj = opts[:browser_obj]
90
+ PWN::Plugins::TransparentBrowser.close(
91
+ browser_obj: browser_obj
92
+ )
93
+ rescue StandardError => e
94
+ raise e
95
+ end
96
+
97
+ # Author(s):: 0day Inc. <request.pentest@0dayinc.com>
98
+
99
+ public_class_method def self.authors
100
+ "AUTHOR(S):
101
+ 0day Inc. <request.pentest@0dayinc.com>
102
+ "
103
+ end
104
+
105
+ # Display Usage for this Module
106
+
107
+ public_class_method def self.help
108
+ puts "USAGE:
109
+ browser_obj = #{self}.open(
110
+ browser_type: 'optional - :firefox|:chrome|:ie|:headless (Defaults to :firefox)',
111
+ proxy: 'optional - scheme://proxy_host:port',
112
+ with_tor: 'optional - boolean (defaults to false)'
113
+ )
114
+ puts browser_obj.public_methods
115
+
116
+ browser_obj = #{self}.login(
117
+ browser_obj: 'required - browser_obj returned from #open method',
118
+ username: 'required - username',
119
+ password: 'optional - passwd (will prompt if blank),
120
+ )
121
+
122
+ browser_obj = #{self}.logout(
123
+ browser_obj: 'required - browser_obj returned from #open method'
124
+ )
125
+
126
+ #{self}.close(
127
+ browser_obj: 'required - browser_obj returned from #open method'
128
+ )
129
+
130
+ #{self}.authors
131
+ "
132
+ end
133
+ end
134
+ end
135
+ end
data/lib/pwn/www.rb CHANGED
@@ -9,6 +9,7 @@ module PWN
9
9
  autoload :Bing, 'pwn/www/bing'
10
10
  autoload :BugCrowd, 'pwn/www/bug_crowd'
11
11
  autoload :Checkip, 'pwn/www/checkip.rb'
12
+ autoload :CoinbasePro, 'pwn/www/coinbase_pro.rb'
12
13
  autoload :Duckduckgo, 'pwn/www/duckduckgo'
13
14
  autoload :Facebook, 'pwn/www/facebook'
14
15
  autoload :Google, 'pwn/www/google'
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ describe PWN::WWW::CoinbasePro do
6
+ it 'should display information for authors' do
7
+ authors_response = PWN::WWW::CoinbasePro
8
+ expect(authors_response).to respond_to :authors
9
+ end
10
+
11
+ it 'should display information for existing help method' do
12
+ help_response = PWN::WWW::CoinbasePro
13
+ expect(help_response).to respond_to :help
14
+ end
15
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pwn
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.383
4
+ version: 0.4.386
5
5
  platform: ruby
6
6
  authors:
7
7
  - 0day Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-03-29 00:00:00.000000000 Z
11
+ date: 2022-03-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -310,14 +310,14 @@ dependencies:
310
310
  requirements:
311
311
  - - '='
312
312
  - !ruby/object:Gem::Version
313
- version: 2.17.0
313
+ version: 2.17.1
314
314
  type: :runtime
315
315
  prerelease: false
316
316
  version_requirements: !ruby/object:Gem::Requirement
317
317
  requirements:
318
318
  - - '='
319
319
  - !ruby/object:Gem::Version
320
- version: 2.17.0
320
+ version: 2.17.1
321
321
  - !ruby/object:Gem::Dependency
322
322
  name: msfrpc-client
323
323
  requirement: !ruby/object:Gem::Requirement
@@ -464,14 +464,14 @@ dependencies:
464
464
  requirements:
465
465
  - - '='
466
466
  - !ruby/object:Gem::Version
467
- version: 1.3.4
467
+ version: 1.3.5
468
468
  type: :runtime
469
469
  prerelease: false
470
470
  version_requirements: !ruby/object:Gem::Requirement
471
471
  requirements:
472
472
  - - '='
473
473
  - !ruby/object:Gem::Version
474
- version: 1.3.4
474
+ version: 1.3.5
475
475
  - !ruby/object:Gem::Dependency
476
476
  name: pry
477
477
  requirement: !ruby/object:Gem::Requirement
@@ -744,14 +744,14 @@ dependencies:
744
744
  requirements:
745
745
  - - '='
746
746
  - !ruby/object:Gem::Version
747
- version: 0.99.1
747
+ version: 0.100.0
748
748
  type: :runtime
749
749
  prerelease: false
750
750
  version_requirements: !ruby/object:Gem::Requirement
751
751
  requirements:
752
752
  - - '='
753
753
  - !ruby/object:Gem::Version
754
- version: 0.99.1
754
+ version: 0.100.0
755
755
  - !ruby/object:Gem::Dependency
756
756
  name: serialport
757
757
  requirement: !ruby/object:Gem::Requirement
@@ -1539,6 +1539,7 @@ files:
1539
1539
  - lib/pwn/www/bing.rb
1540
1540
  - lib/pwn/www/bug_crowd.rb
1541
1541
  - lib/pwn/www/checkip.rb
1542
+ - lib/pwn/www/coinbase_pro.rb
1542
1543
  - lib/pwn/www/duckduckgo.rb
1543
1544
  - lib/pwn/www/facebook.rb
1544
1545
  - lib/pwn/www/google.rb
@@ -1823,6 +1824,7 @@ files:
1823
1824
  - spec/lib/pwn/www/bing_spec.rb
1824
1825
  - spec/lib/pwn/www/bug_crowd.rb
1825
1826
  - spec/lib/pwn/www/checkip_spec.rb
1827
+ - spec/lib/pwn/www/coinbase_pro_spec.rb
1826
1828
  - spec/lib/pwn/www/duckduckgo_spec.rb
1827
1829
  - spec/lib/pwn/www/facebook_spec.rb
1828
1830
  - spec/lib/pwn/www/google_spec.rb
@@ -2083,6 +2085,7 @@ test_files:
2083
2085
  - spec/lib/pwn/www/bing_spec.rb
2084
2086
  - spec/lib/pwn/www/bug_crowd.rb
2085
2087
  - spec/lib/pwn/www/checkip_spec.rb
2088
+ - spec/lib/pwn/www/coinbase_pro_spec.rb
2086
2089
  - spec/lib/pwn/www/duckduckgo_spec.rb
2087
2090
  - spec/lib/pwn/www/facebook_spec.rb
2088
2091
  - spec/lib/pwn/www/google_spec.rb