pwn 0.4.383 → 0.4.386

Sign up to get free protection for your applications and to get access to all the features.
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