pwn 0.4.701 → 0.4.703
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CONTRIBUTING.md +12 -9
- data/README.md +2 -2
- data/bin/pwn_burp_suite_pro_active_scan +2 -1
- data/bin/pwn_domain_reversewhois +7 -6
- data/bin/pwn_owasp_zap_active_scan +3 -2
- data/bin/pwn_pastebin_sample_filter +5 -3
- data/bin/pwn_web_cache_deception +10 -7
- data/bin/pwn_www_checkip +5 -4
- data/bin/pwn_www_uri_buster +5 -4
- data/bin/pwn_xss_dom_vectors +11 -8
- data/lib/pwn/plugins/baresip.rb +3 -2
- data/lib/pwn/plugins/beef.rb +5 -2
- data/lib/pwn/plugins/burp_suite.rb +7 -5
- data/lib/pwn/plugins/defect_dojo.rb +5 -3
- data/lib/pwn/plugins/github.rb +2 -1
- data/lib/pwn/plugins/hacker_one.rb +4 -2
- data/lib/pwn/plugins/ibm_appscan.rb +13 -6
- data/lib/pwn/plugins/ip_info.rb +4 -2
- data/lib/pwn/plugins/jira_server.rb +2 -1
- data/lib/pwn/plugins/nessus_cloud.rb +2 -1
- data/lib/pwn/plugins/open_ai.rb +3 -1
- data/lib/pwn/plugins/owasp_zap.rb +2 -1
- data/lib/pwn/plugins/shodan.rb +2 -1
- data/lib/pwn/plugins/transparent_browser.rb +22 -32
- data/lib/pwn/plugins/twitter_api.rb +5 -2
- data/lib/pwn/plugins/vsphere.rb +1 -2
- data/lib/pwn/version.rb +1 -1
- data/lib/pwn/www/app_cobalt_io.rb +17 -11
- data/lib/pwn/www/bing.rb +7 -4
- data/lib/pwn/www/bug_crowd.rb +17 -11
- data/lib/pwn/www/checkip.rb +5 -3
- data/lib/pwn/www/coinbase_pro.rb +16 -10
- data/lib/pwn/www/duckduckgo.rb +13 -6
- data/lib/pwn/www/facebook.rb +14 -8
- data/lib/pwn/www/google.rb +10 -6
- data/lib/pwn/www/hacker_one.rb +14 -8
- data/lib/pwn/www/linkedin.rb +14 -8
- data/lib/pwn/www/pandora.rb +14 -8
- data/lib/pwn/www/pastebin.rb +7 -3
- data/lib/pwn/www/paypal.rb +34 -26
- data/lib/pwn/www/synack.rb +17 -11
- data/lib/pwn/www/torch.rb +10 -5
- data/lib/pwn/www/trading_view.rb +17 -11
- data/lib/pwn/www/twitter.rb +18 -10
- data/lib/pwn/www/uber.rb +14 -8
- data/lib/pwn/www/upwork.rb +14 -8
- data/lib/pwn/www/youtube.rb +7 -4
- metadata +2 -6
- data/bin/pwn_arachni +0 -157
- data/bin/pwn_arachni_rest +0 -174
data/lib/pwn/www/linkedin.rb
CHANGED
@@ -15,7 +15,8 @@ module PWN
|
|
15
15
|
public_class_method def self.open(opts = {})
|
16
16
|
browser_obj = PWN::Plugins::TransparentBrowser.open(opts)
|
17
17
|
|
18
|
-
browser_obj
|
18
|
+
browser = browser_obj[:browser]
|
19
|
+
browser.goto('https://www.linkedin.com')
|
19
20
|
|
20
21
|
browser_obj
|
21
22
|
rescue StandardError => e
|
@@ -34,17 +35,19 @@ module PWN
|
|
34
35
|
username = opts[:username].to_s.scrub.strip.chomp
|
35
36
|
password = opts[:password]
|
36
37
|
|
38
|
+
browser = browser_obj[:browser]
|
39
|
+
|
37
40
|
if password.nil?
|
38
41
|
password = PWN::Plugins::AuthenticationHelper.mask_password
|
39
42
|
else
|
40
43
|
password = opts[:password].to_s.scrub.strip.chomp
|
41
44
|
end
|
42
45
|
|
43
|
-
|
46
|
+
browser.goto('https://www.linkedin.com/uas/login')
|
44
47
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
+
browser.text_field(name: 'session_key').wait_until(&:present?).set(username)
|
49
|
+
browser.text_field(name: 'session_password').wait_until(&:present?).set(password)
|
50
|
+
browser.button(name: 'signin').click!
|
48
51
|
|
49
52
|
browser_obj
|
50
53
|
rescue StandardError => e
|
@@ -58,8 +61,10 @@ module PWN
|
|
58
61
|
|
59
62
|
public_class_method def self.logout(opts = {})
|
60
63
|
browser_obj = opts[:browser_obj]
|
61
|
-
|
62
|
-
browser_obj
|
64
|
+
|
65
|
+
browser = browser_obj[:browser]
|
66
|
+
browser.button(id: 'nav-settings__dropdown-trigger').wait_until(&:present?).click!
|
67
|
+
browser.link(index: 14).wait_until(&:present?).click!
|
63
68
|
|
64
69
|
browser_obj
|
65
70
|
rescue StandardError => e
|
@@ -96,7 +101,8 @@ module PWN
|
|
96
101
|
browser_type: 'optional - :firefox|:chrome|:ie|:headless (Defaults to :firefox)',
|
97
102
|
proxy: 'optional - scheme://proxy_host:port || tor'
|
98
103
|
)
|
99
|
-
|
104
|
+
browser = browser_obj[:browser]
|
105
|
+
puts browser.public_methods
|
100
106
|
|
101
107
|
browser_obj = #{self}.login(
|
102
108
|
browser_obj: 'required - browser_obj returned from #open method',
|
data/lib/pwn/www/pandora.rb
CHANGED
@@ -15,7 +15,8 @@ module PWN
|
|
15
15
|
public_class_method def self.open(opts = {})
|
16
16
|
browser_obj = PWN::Plugins::TransparentBrowser.open(opts)
|
17
17
|
|
18
|
-
browser_obj
|
18
|
+
browser = browser_obj[:browser]
|
19
|
+
browser.goto('https://www.pandora.com')
|
19
20
|
|
20
21
|
browser_obj
|
21
22
|
rescue StandardError => e
|
@@ -34,17 +35,19 @@ module PWN
|
|
34
35
|
username = opts[:username].to_s.scrub.strip.chomp
|
35
36
|
password = opts[:password]
|
36
37
|
|
38
|
+
browser = browser_obj[:browser]
|
39
|
+
|
37
40
|
if password.nil?
|
38
41
|
password = PWN::Plugins::AuthenticationHelper.mask_password
|
39
42
|
else
|
40
43
|
password = opts[:password].to_s.scrub.strip.chomp
|
41
44
|
end
|
42
45
|
|
43
|
-
|
46
|
+
browser.goto('https://www.pandora.com/account/sign-in')
|
44
47
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
+
browser.text_field(id: 'login_username').wait_until(&:present?).set(username)
|
49
|
+
browser.text_field(id: 'login_password').wait_until(&:present?).set(password)
|
50
|
+
browser.button(text: 'Log In').click!
|
48
51
|
|
49
52
|
browser_obj
|
50
53
|
rescue StandardError => e
|
@@ -58,8 +61,10 @@ module PWN
|
|
58
61
|
|
59
62
|
public_class_method def self.logout(opts = {})
|
60
63
|
browser_obj = opts[:browser_obj]
|
61
|
-
|
62
|
-
browser_obj
|
64
|
+
|
65
|
+
browser = browser_obj[:browser]
|
66
|
+
browser.img(alt: 'Account Menu').wait_until(&:present?).click!
|
67
|
+
browser.span(text: 'Sign Out').wait_until(&:present?).click!
|
63
68
|
|
64
69
|
browser_obj
|
65
70
|
rescue StandardError => e
|
@@ -96,7 +101,8 @@ module PWN
|
|
96
101
|
browser_type: 'optional - :firefox|:chrome|:ie|:headless (Defaults to :firefox)',
|
97
102
|
proxy: 'optional - scheme://proxy_host:port || tor'
|
98
103
|
)
|
99
|
-
|
104
|
+
browser = browser_obj[:browser]
|
105
|
+
puts browser.public_methods
|
100
106
|
|
101
107
|
browser_obj = #{self}.login(
|
102
108
|
browser_obj: 'required - browser_obj returned from #open method',
|
data/lib/pwn/www/pastebin.rb
CHANGED
@@ -13,7 +13,8 @@ module PWN
|
|
13
13
|
public_class_method def self.open(opts = {})
|
14
14
|
browser_obj = PWN::Plugins::TransparentBrowser.open(opts)
|
15
15
|
|
16
|
-
browser_obj
|
16
|
+
browser = browser_obj[:browser]
|
17
|
+
browser.goto('https://pastebin.com')
|
17
18
|
|
18
19
|
browser_obj
|
19
20
|
rescue StandardError => e
|
@@ -27,7 +28,9 @@ module PWN
|
|
27
28
|
|
28
29
|
public_class_method def self.onion(opts = {})
|
29
30
|
browser_obj = opts[:browser_obj]
|
30
|
-
|
31
|
+
|
32
|
+
browser = browser_obj[:browser]
|
33
|
+
browser.goto('http://lw4ipk5choakk5ze.onion')
|
31
34
|
|
32
35
|
browser_obj
|
33
36
|
rescue StandardError => e
|
@@ -64,7 +67,8 @@ module PWN
|
|
64
67
|
browser_type: 'optional :firefox|:chrome|:ie|:headless (Defaults to :firefox)',
|
65
68
|
proxy: 'optional - scheme://proxy_host:port || tor'
|
66
69
|
)
|
67
|
-
|
70
|
+
browser = browser_obj[:browser]
|
71
|
+
puts browser.public_methods
|
68
72
|
|
69
73
|
browser_obj = #{self}.onion(
|
70
74
|
browser_obj: 'required - browser_obj returned from #open method'
|
data/lib/pwn/www/paypal.rb
CHANGED
@@ -15,7 +15,8 @@ module PWN
|
|
15
15
|
public_class_method def self.open(opts = {})
|
16
16
|
browser_obj = PWN::Plugins::TransparentBrowser.open(opts)
|
17
17
|
|
18
|
-
browser_obj
|
18
|
+
browser = browser_obj[:browser]
|
19
|
+
browser.goto('https://www.paypal.com')
|
19
20
|
|
20
21
|
browser_obj
|
21
22
|
rescue StandardError => e
|
@@ -48,6 +49,8 @@ module PWN
|
|
48
49
|
username = opts[:username].to_s.scrub.strip.chomp
|
49
50
|
password = opts[:password]
|
50
51
|
|
52
|
+
browser = browser_obj[:browser]
|
53
|
+
|
51
54
|
if password.nil?
|
52
55
|
password = PWN::Plugins::AuthenticationHelper.mask_password
|
53
56
|
else
|
@@ -55,21 +58,21 @@ module PWN
|
|
55
58
|
end
|
56
59
|
mfa = opts[:mfa]
|
57
60
|
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
61
|
+
browser.goto('https://www.paypal.com/signup/account')
|
62
|
+
|
63
|
+
browser.text_field(id: 'email').wait_until(&:present?).set(username)
|
64
|
+
browser.text_field(id: 'password').wait_until(&:present?).set(password)
|
65
|
+
browser.text_field(id: 'confirmPassword').wait_until(&:present?).set(password)
|
66
|
+
browser.button(id: '_eventId_personal').wait_until(&:present?).click!
|
67
|
+
browser.text_field(id: 'firstName').wait_until(&:present?).set(first_name)
|
68
|
+
browser.text_field(id: 'lastName').wait_until(&:present?).set(last_name)
|
69
|
+
browser.text_field(id: 'address1').wait_until(&:present?).set(address)
|
70
|
+
browser.text_field(id: 'city').wait_until(&:present?).set(city)
|
71
|
+
browser.select(id: 'state').wait_until(&:present?).select_value(state)
|
72
|
+
browser.text_field(id: 'postalCode').wait_until(&:present?).set(zip_code)
|
73
|
+
browser.text_field(id: 'phoneNumber').wait_until(&:present?).set(mobile_phone)
|
74
|
+
browser.span(index: 7).wait_until(&:present?).click! # Agree to ToS
|
75
|
+
browser.button(id: 'submitBtn').wait_until(&:present?).click!
|
73
76
|
|
74
77
|
puts "Confirmation email sent to: #{username}"
|
75
78
|
|
@@ -91,6 +94,8 @@ module PWN
|
|
91
94
|
username = opts[:username].to_s.scrub.strip.chomp
|
92
95
|
password = opts[:password]
|
93
96
|
|
97
|
+
browser = browser_obj[:browser]
|
98
|
+
|
94
99
|
if password.nil?
|
95
100
|
password = PWN::Plugins::AuthenticationHelper.mask_password
|
96
101
|
else
|
@@ -98,18 +103,18 @@ module PWN
|
|
98
103
|
end
|
99
104
|
mfa = opts[:mfa]
|
100
105
|
|
101
|
-
|
106
|
+
browser.goto('https://www.paypal.com/signin')
|
102
107
|
|
103
|
-
|
104
|
-
|
105
|
-
|
108
|
+
browser.text_field(id: 'email').wait_until(&:present?).set(username)
|
109
|
+
browser.text_field(id: 'password').wait_until(&:present?).set(password)
|
110
|
+
browser.button(id: 'btnLogin').click!
|
106
111
|
|
107
112
|
if mfa
|
108
113
|
# Send code to SMS
|
109
|
-
|
110
|
-
until
|
111
|
-
|
112
|
-
|
114
|
+
browser.button(id: 'btnSelectSoftToken').wait_until(&:present?).click!
|
115
|
+
until browser.url == 'https://www.paypal.com/myaccount/home'
|
116
|
+
browser.text_field(id: 'security-code').wait_until(&:present?).set(PWN::Plugins::AuthenticationHelper.mfa(prompt: 'enter mfa token'))
|
117
|
+
browser.button(id: 'btnCodeSubmit').click!
|
113
118
|
sleep 3
|
114
119
|
end
|
115
120
|
print "\n"
|
@@ -127,7 +132,9 @@ module PWN
|
|
127
132
|
|
128
133
|
public_class_method def self.logout(opts = {})
|
129
134
|
browser_obj = opts[:browser_obj]
|
130
|
-
|
135
|
+
|
136
|
+
browser = browser_obj[:browser]
|
137
|
+
browser.link(index: 13).wait_until(&:present?).click!
|
131
138
|
|
132
139
|
browser_obj
|
133
140
|
rescue StandardError => e
|
@@ -164,7 +171,8 @@ module PWN
|
|
164
171
|
browser_type: 'optional - :firefox|:chrome|:ie|:headless (Defaults to :firefox)',
|
165
172
|
proxy: 'optional - scheme://proxy_host:port || tor'
|
166
173
|
)
|
167
|
-
|
174
|
+
browser = browser_obj[:browser]
|
175
|
+
puts browser.public_methods
|
168
176
|
|
169
177
|
browser_obj = #{self}.signup(
|
170
178
|
browser_obj: 'required - browser_obj returned from #open method',
|
data/lib/pwn/www/synack.rb
CHANGED
@@ -15,7 +15,8 @@ module PWN
|
|
15
15
|
public_class_method def self.open(opts = {})
|
16
16
|
browser_obj = PWN::Plugins::TransparentBrowser.open(opts)
|
17
17
|
|
18
|
-
browser_obj
|
18
|
+
browser = browser_obj[:browser]
|
19
|
+
browser.goto('https://www.synack.com')
|
19
20
|
|
20
21
|
browser_obj
|
21
22
|
rescue StandardError => e
|
@@ -35,6 +36,8 @@ module PWN
|
|
35
36
|
username = opts[:username].to_s.scrub.strip.chomp
|
36
37
|
password = opts[:password]
|
37
38
|
|
39
|
+
browser = browser_obj[:browser]
|
40
|
+
|
38
41
|
if password.nil?
|
39
42
|
password = PWN::Plugins::AuthenticationHelper.mask_password
|
40
43
|
else
|
@@ -42,16 +45,16 @@ module PWN
|
|
42
45
|
end
|
43
46
|
mfa = opts[:mfa]
|
44
47
|
|
45
|
-
|
48
|
+
browser.goto('https://login.synack.com')
|
46
49
|
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
+
browser.text_field(name: 'email').wait_until(&:present?).set(username)
|
51
|
+
browser.text_field(name: 'password').wait_until(&:present?).set(password)
|
52
|
+
browser.button(class: 'btn').click!
|
50
53
|
|
51
54
|
if mfa
|
52
|
-
until
|
53
|
-
|
54
|
-
|
55
|
+
until browser.url.include?('https://platform.synack.com')
|
56
|
+
browser.text_field(name: 'authy_token').wait_until(&:present?).set(PWN::Plugins::AuthenticationHelper.mfa(prompt: 'enter mfa token'))
|
57
|
+
browser.button(class: 'btn').click!
|
55
58
|
sleep 3
|
56
59
|
end
|
57
60
|
print "\n"
|
@@ -69,8 +72,10 @@ module PWN
|
|
69
72
|
|
70
73
|
public_class_method def self.logout(opts = {})
|
71
74
|
browser_obj = opts[:browser_obj]
|
72
|
-
|
73
|
-
browser_obj
|
75
|
+
|
76
|
+
browser = browser_obj[:browser]
|
77
|
+
browser.img(class: 'navbar-avatar-img').wait_until(&:present?).click!
|
78
|
+
browser.button(text: 'Logout').wait_until(&:present?).click!
|
74
79
|
|
75
80
|
browser_obj
|
76
81
|
rescue StandardError => e
|
@@ -107,7 +112,8 @@ module PWN
|
|
107
112
|
browser_type: 'optional - :firefox|:chrome|:ie|:headless (Defaults to :firefox)',
|
108
113
|
proxy: 'optional - scheme://proxy_host:port || tor'
|
109
114
|
)
|
110
|
-
|
115
|
+
browser = browser_obj[:browser]
|
116
|
+
puts browser.public_methods
|
111
117
|
|
112
118
|
browser_obj = #{self}.login(
|
113
119
|
browser_obj: 'required - browser_obj returned from #open method',
|
data/lib/pwn/www/torch.rb
CHANGED
@@ -13,7 +13,8 @@ module PWN
|
|
13
13
|
public_class_method def self.open(opts = {})
|
14
14
|
browser_obj = PWN::Plugins::TransparentBrowser.open(opts)
|
15
15
|
|
16
|
-
browser_obj
|
16
|
+
browser = browser_obj[:browser]
|
17
|
+
browser.goto('http://www.torchtorsearch.com')
|
17
18
|
|
18
19
|
browser_obj
|
19
20
|
rescue StandardError => e
|
@@ -30,8 +31,9 @@ module PWN
|
|
30
31
|
browser_obj = opts[:browser_obj]
|
31
32
|
q = opts[:q].to_s
|
32
33
|
|
33
|
-
browser_obj
|
34
|
-
|
34
|
+
browser = browser_obj[:browser]
|
35
|
+
browser.text_field(name: 'q').wait_until(&:present?).set(q)
|
36
|
+
browser.button(name: 'cmd').click!
|
35
37
|
|
36
38
|
browser_obj
|
37
39
|
rescue StandardError => e
|
@@ -45,7 +47,9 @@ module PWN
|
|
45
47
|
|
46
48
|
public_class_method def self.onion
|
47
49
|
browser_obj = opts[:browser_obj]
|
48
|
-
|
50
|
+
|
51
|
+
browser = browser_obj[:browser]
|
52
|
+
browser.goto('http://xmh57jrzrnw6insl.onion')
|
49
53
|
|
50
54
|
browser_obj
|
51
55
|
rescue StandardError => e
|
@@ -82,7 +86,8 @@ module PWN
|
|
82
86
|
browser_type: 'optional :firefox|:chrome|:ie|:headless (Defaults to :firefox)',
|
83
87
|
proxy: 'optional - scheme://proxy_host:port || tor'
|
84
88
|
)
|
85
|
-
|
89
|
+
browser = browser_obj[:browser]
|
90
|
+
puts browser.public_methods
|
86
91
|
|
87
92
|
browser_obj = #{self}.open(
|
88
93
|
q: 'required search string'
|
data/lib/pwn/www/trading_view.rb
CHANGED
@@ -15,7 +15,8 @@ module PWN
|
|
15
15
|
public_class_method def self.open(opts = {})
|
16
16
|
browser_obj = PWN::Plugins::TransparentBrowser.open(opts)
|
17
17
|
|
18
|
-
browser_obj
|
18
|
+
browser = browser_obj[:browser]
|
19
|
+
browser.goto('https://tradingview.com')
|
19
20
|
|
20
21
|
browser_obj
|
21
22
|
rescue StandardError => e
|
@@ -34,20 +35,22 @@ module PWN
|
|
34
35
|
username = opts[:username].to_s.scrub.strip.chomp
|
35
36
|
password = opts[:password]
|
36
37
|
|
38
|
+
browser = browser_obj[:browser]
|
39
|
+
|
37
40
|
if password.nil?
|
38
41
|
password = PWN::Plugins::AuthenticationHelper.mask_password
|
39
42
|
else
|
40
43
|
password = opts[:password].to_s.scrub.strip.chomp
|
41
44
|
end
|
42
45
|
|
43
|
-
|
46
|
+
browser.goto('https://tradingview.com')
|
44
47
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
48
|
+
browser.button(index: 3).wait_until(&:present?).click
|
49
|
+
browser.div(text: 'Sign in').wait_until(&:present?).click
|
50
|
+
browser.span(text: 'Email').wait_until(&:present?).click
|
51
|
+
browser.text_field(name: 'username').wait_until(&:present?).set(username)
|
52
|
+
browser.text_field(name: 'password').wait_until(&:present?).set(password)
|
53
|
+
browser.button(text: 'Sign in').click!
|
51
54
|
|
52
55
|
browser_obj
|
53
56
|
rescue StandardError => e
|
@@ -61,8 +64,10 @@ module PWN
|
|
61
64
|
|
62
65
|
public_class_method def self.logout(opts = {})
|
63
66
|
browser_obj = opts[:browser_obj]
|
64
|
-
|
65
|
-
browser_obj
|
67
|
+
|
68
|
+
browser = browser_obj[:browser]
|
69
|
+
browser.button(index: 4).wait_until(&:present?).click
|
70
|
+
browser.div(text: 'Sign Out').wait_until(&:present?).click!
|
66
71
|
|
67
72
|
browser_obj
|
68
73
|
rescue StandardError => e
|
@@ -99,7 +104,8 @@ module PWN
|
|
99
104
|
browser_type: 'optional - :firefox|:chrome|:ie|:headless (Defaults to :firefox)',
|
100
105
|
proxy: 'optional - scheme://proxy_host:port || tor'
|
101
106
|
)
|
102
|
-
|
107
|
+
browser = browser_obj[:browser]
|
108
|
+
puts browser.public_methods
|
103
109
|
|
104
110
|
browser_obj = #{self}.login(
|
105
111
|
browser_obj: 'required - browser_obj returned from #open method',
|
data/lib/pwn/www/twitter.rb
CHANGED
@@ -15,7 +15,8 @@ module PWN
|
|
15
15
|
public_class_method def self.open(opts = {})
|
16
16
|
browser_obj = PWN::Plugins::TransparentBrowser.open(opts)
|
17
17
|
|
18
|
-
browser_obj
|
18
|
+
browser = browser_obj[:browser]
|
19
|
+
browser.goto('https://twitter.com')
|
19
20
|
|
20
21
|
browser_obj
|
21
22
|
rescue StandardError => e
|
@@ -35,6 +36,8 @@ module PWN
|
|
35
36
|
username = opts[:username].to_s.scrub.strip.chomp
|
36
37
|
password = opts[:password]
|
37
38
|
|
39
|
+
browser = browser_obj[:browser]
|
40
|
+
|
38
41
|
if password.nil?
|
39
42
|
password = PWN::Plugins::AuthenticationHelper.mask_password
|
40
43
|
else
|
@@ -44,14 +47,16 @@ module PWN
|
|
44
47
|
|
45
48
|
browser_obj.goto('https://twitter.com/login')
|
46
49
|
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
+
browser.text_field(index: 2).wait_until(&:present?).set(username)
|
51
|
+
browser.text_field(index: 3).wait_until(&:present?).set(password)
|
52
|
+
browser.button(index: 1).click!
|
50
53
|
|
51
54
|
if mfa
|
52
|
-
until
|
53
|
-
|
54
|
-
|
55
|
+
until browser.url == 'https://twitter.com/' ||
|
56
|
+
browser.url == 'https://twitter.com/home'
|
57
|
+
|
58
|
+
browser.text_field(id: 'challenge_response').wait_until(&:present?).set(PWN::Plugins::AuthenticationHelper.mfa(prompt: 'enter mfa token'))
|
59
|
+
browser.button(id: 'email_challenge_submit').click!
|
55
60
|
sleep 3
|
56
61
|
end
|
57
62
|
print "\n"
|
@@ -69,8 +74,10 @@ module PWN
|
|
69
74
|
|
70
75
|
public_class_method def self.logout(opts = {})
|
71
76
|
browser_obj = opts[:browser_obj]
|
72
|
-
|
73
|
-
browser_obj
|
77
|
+
|
78
|
+
browser = browser_obj[:browser]
|
79
|
+
browser.li(id: 'user-dropdown').wait_until(&:present?).click!
|
80
|
+
browser.button(text: 'Log out').wait_until(&:present?).click!
|
74
81
|
|
75
82
|
browser_obj
|
76
83
|
rescue StandardError => e
|
@@ -107,7 +114,8 @@ module PWN
|
|
107
114
|
browser_type: 'optional - :firefox|:chrome|:ie|:headless (Defaults to :firefox)',
|
108
115
|
proxy: 'optional - scheme://proxy_host:port || tor'
|
109
116
|
)
|
110
|
-
|
117
|
+
browser = browser_obj[:browser]
|
118
|
+
puts browser.public_methods
|
111
119
|
|
112
120
|
browser_obj = #{self}.login(
|
113
121
|
browser_obj: 'required - browser_obj returned from #open method',
|
data/lib/pwn/www/uber.rb
CHANGED
@@ -15,7 +15,8 @@ module PWN
|
|
15
15
|
public_class_method def self.open(opts = {})
|
16
16
|
browser_obj = PWN::Plugins::TransparentBrowser.open(opts)
|
17
17
|
|
18
|
-
browser_obj
|
18
|
+
browser = browser_obj[:browser]
|
19
|
+
browser.goto('https://www.uber.com')
|
19
20
|
|
20
21
|
browser_obj
|
21
22
|
rescue StandardError => e
|
@@ -34,17 +35,19 @@ module PWN
|
|
34
35
|
username = opts[:username].to_s.scrub.strip.chomp
|
35
36
|
password = opts[:password]
|
36
37
|
|
38
|
+
browser = browser_obj[:browser]
|
39
|
+
|
37
40
|
if password.nil?
|
38
41
|
password = PWN::Plugins::AuthenticationHelper.mask_password
|
39
42
|
else
|
40
43
|
password = opts[:password].to_s.scrub.strip.chomp
|
41
44
|
end
|
42
45
|
|
43
|
-
|
46
|
+
browser.goto('https://login.uber.com/login')
|
44
47
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
+
browser.text_field(id: 'email').wait_until(&:present?).set(username)
|
49
|
+
browser.text_field(id: 'password').wait_until(&:present?).set(password)
|
50
|
+
browser.button(id: 'login-submit-btn').click!
|
48
51
|
|
49
52
|
browser_obj
|
50
53
|
rescue StandardError => e
|
@@ -58,8 +61,10 @@ module PWN
|
|
58
61
|
|
59
62
|
public_class_method def self.logout(opts = {})
|
60
63
|
browser_obj = opts[:browser_obj]
|
61
|
-
|
62
|
-
browser_obj
|
64
|
+
|
65
|
+
browser = browser_obj[:browser]
|
66
|
+
browser.span(index: 5).wait_until(&:present?).hover
|
67
|
+
browser.link(index: 13).wait_until(&:present?).click!
|
63
68
|
|
64
69
|
browser_obj
|
65
70
|
rescue StandardError => e
|
@@ -96,7 +101,8 @@ module PWN
|
|
96
101
|
browser_type: 'optional - :firefox|:chrome|:ie|:headless (Defaults to :firefox)',
|
97
102
|
proxy: 'optional - scheme://proxy_host:port || tor'
|
98
103
|
)
|
99
|
-
|
104
|
+
browser = browser_obj[:browser]
|
105
|
+
puts browser.public_methods
|
100
106
|
|
101
107
|
browser_obj = #{self}.login(
|
102
108
|
browser_obj: 'required - browser_obj returned from #open method',
|
data/lib/pwn/www/upwork.rb
CHANGED
@@ -15,7 +15,8 @@ module PWN
|
|
15
15
|
public_class_method def self.open(opts = {})
|
16
16
|
browser_obj = PWN::Plugins::TransparentBrowser.open(opts)
|
17
17
|
|
18
|
-
browser_obj
|
18
|
+
browser = browser_obj[:browser]
|
19
|
+
browser.goto('https://www.upwork.com')
|
19
20
|
|
20
21
|
browser_obj
|
21
22
|
rescue StandardError => e
|
@@ -34,17 +35,19 @@ module PWN
|
|
34
35
|
username = opts[:username].to_s.scrub.strip.chomp
|
35
36
|
password = opts[:password]
|
36
37
|
|
38
|
+
browser = browser_obj[:browser]
|
39
|
+
|
37
40
|
if password.nil?
|
38
41
|
password = PWN::Plugins::AuthenticationHelper.mask_password
|
39
42
|
else
|
40
43
|
password = opts[:password].to_s.scrub.strip.chomp
|
41
44
|
end
|
42
45
|
|
43
|
-
|
46
|
+
browser.goto('https://www.upwork.com/ab/account-security/login')
|
44
47
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
+
browser.text_field(id: 'login_username').wait_until(&:present?).set(username)
|
49
|
+
browser.text_field(id: 'login_password').wait_until(&:present?).set(password)
|
50
|
+
browser.button(text: 'Log In').click!
|
48
51
|
|
49
52
|
browser_obj
|
50
53
|
rescue StandardError => e
|
@@ -58,8 +61,10 @@ module PWN
|
|
58
61
|
|
59
62
|
public_class_method def self.logout(opts = {})
|
60
63
|
browser_obj = opts[:browser_obj]
|
61
|
-
|
62
|
-
browser_obj
|
64
|
+
|
65
|
+
browser = browser_obj[:browser]
|
66
|
+
browser.span(class: 'organization-selector').wait_until(&:present?).click!
|
67
|
+
browser.link(index: 39).wait_until(&:present?).click!
|
63
68
|
|
64
69
|
browser_obj
|
65
70
|
rescue StandardError => e
|
@@ -96,7 +101,8 @@ module PWN
|
|
96
101
|
browser_type: 'optional - :firefox|:chrome|:ie|:headless (Defaults to :firefox)',
|
97
102
|
proxy: 'optional - scheme://proxy_host:port || tor'
|
98
103
|
)
|
99
|
-
|
104
|
+
browser = browser_obj[:browser]
|
105
|
+
puts browser.public_methods
|
100
106
|
|
101
107
|
browser_obj = #{self}.login(
|
102
108
|
browser_obj: 'required - browser_obj returned from #open method',
|
data/lib/pwn/www/youtube.rb
CHANGED
@@ -13,7 +13,8 @@ module PWN
|
|
13
13
|
public_class_method def self.open(opts = {})
|
14
14
|
browser_obj = PWN::Plugins::TransparentBrowser.open(opts)
|
15
15
|
|
16
|
-
browser_obj
|
16
|
+
browser = browser_obj[:browser]
|
17
|
+
browser.goto('https://www.youtube.com')
|
17
18
|
|
18
19
|
browser_obj
|
19
20
|
rescue StandardError => e
|
@@ -30,8 +31,9 @@ module PWN
|
|
30
31
|
browser_obj = opts[:browser_obj]
|
31
32
|
q = opts[:q].to_s
|
32
33
|
|
33
|
-
browser_obj
|
34
|
-
|
34
|
+
browser = browser_obj[:browser]
|
35
|
+
browser.text_field(name: 'search_query').wait_until(&:present?).set(q)
|
36
|
+
browser.button(id: 'search-btn').click!
|
35
37
|
|
36
38
|
browser_obj
|
37
39
|
rescue StandardError => e
|
@@ -68,7 +70,8 @@ module PWN
|
|
68
70
|
browser_type: 'optional - :firefox|:chrome|:ie|:headless (Defaults to :firefox)',
|
69
71
|
proxy: 'optional - scheme://proxy_host:port || tor'
|
70
72
|
)
|
71
|
-
|
73
|
+
browser = browser_obj[:browser]
|
74
|
+
puts 'browser.public_methods'
|
72
75
|
|
73
76
|
browser_obj =#{self}.search(
|
74
77
|
browser_obj: 'required - browser_obj returned from #open method',
|