pwn 0.5.189 → 0.5.191
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/README.md +3 -3
- data/lib/pwn/plugins/transparent_browser.rb +30 -18
- data/lib/pwn/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0a505a20bdb9c9adcd1e006d35bc8b09002c4c98e4dfd43d6e592f381fc39ae0
|
4
|
+
data.tar.gz: '05856cfa4c5c3e0d3fb9a807a616f063f4606b09c913b6502e4c354613da321e'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a4386feadcc8c56c4de2c8fe323fba7c4b794397cdf4c4a0e3ca661e8126ce8cb07b71aa191d1cc5cf6233bbdc5a0cc5bcf8e4c7b7dfe2bfb824b8fd68db5651
|
7
|
+
data.tar.gz: c61ac9fcf9e474fe4b01eaa0fdf0deb03beebd91e4f7cdc340b9b960f9dbcec3b8ffa5fe3562007f0af313ff9ae805e3881bac25bdfbc37db9f94ba9a358e517
|
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.191]:001 >>> PWN.help
|
41
41
|
```
|
42
42
|
|
43
43
|
[](https://youtu.be/G7iLUY4FzsI)
|
@@ -52,7 +52,7 @@ $ rvm use ruby-3.3.3@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.191]: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.3.3@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.191]: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:
|
@@ -41,7 +41,8 @@ module PWN
|
|
41
41
|
# browser_obj1 = PWN::Plugins::TransparentBrowser.open(
|
42
42
|
# browser_type: 'optional - :firefox|:chrome|:headless|:rest|:websocket (defaults to :chrome)',
|
43
43
|
# proxy: 'optional - scheme://proxy_host:port || tor (defaults to nil)',
|
44
|
-
# with_devtools: 'optional - boolean (defaults to true)'
|
44
|
+
# with_devtools: 'optional - boolean (defaults to true)',
|
45
|
+
# url: 'optional - URL to navigate to after opening browser (Defaults to about:about#RANDID)'
|
45
46
|
# )
|
46
47
|
|
47
48
|
public_class_method def self.open(opts = {})
|
@@ -62,6 +63,8 @@ module PWN
|
|
62
63
|
with_devtools = opts[:with_devtools] ||= false
|
63
64
|
with_devtools = true if devtools_supported.include?(browser_type) && with_devtools
|
64
65
|
|
66
|
+
url = opts[:url] ||= "about:about##{SecureRandom.hex(8)}"
|
67
|
+
|
65
68
|
# Let's crank up the default timeout from 30 seconds to 15 min for slow sites
|
66
69
|
Watir.default_timeout = 900
|
67
70
|
|
@@ -195,9 +198,6 @@ module PWN
|
|
195
198
|
this_profile['devtools.cache.disabled'] = true
|
196
199
|
this_profile['dom.caches.enabled'] = false
|
197
200
|
|
198
|
-
# caps = Selenium::WebDriver::Remote::Capabilities.firefox
|
199
|
-
# caps[:acceptInsecureCerts] = true
|
200
|
-
|
201
201
|
if proxy
|
202
202
|
this_profile['network.proxy.type'] = 1
|
203
203
|
this_profile['network.proxy.allow_hijacking_localhost'] = true
|
@@ -286,6 +286,7 @@ module PWN
|
|
286
286
|
if devtools_supported.include?(browser_type)
|
287
287
|
rand_tab = SecureRandom.hex(8)
|
288
288
|
browser_obj[:browser].goto("about:about##{rand_tab}")
|
289
|
+
browser_obj[:browser].execute_script("document.title = '#{rand_tab}'")
|
289
290
|
|
290
291
|
if with_devtools
|
291
292
|
driver = browser_obj[:browser].driver
|
@@ -307,7 +308,7 @@ module PWN
|
|
307
308
|
|
308
309
|
browser_obj[:bidi] = driver.bidi
|
309
310
|
|
310
|
-
browser_obj[:browser].
|
311
|
+
browser_obj[:browser].send_keys(:escape)
|
311
312
|
end
|
312
313
|
end
|
313
314
|
|
@@ -497,9 +498,9 @@ module PWN
|
|
497
498
|
browser.execute_script("document.title = '#{rand_tab}'")
|
498
499
|
end
|
499
500
|
# Open the DevTools for Firefox, Chrome opens them automatically
|
500
|
-
browser.
|
501
|
+
browser.send_keys(:f12) if firefox_types.include?(browser_type)
|
501
502
|
# Open Console drawer if DevTools are open
|
502
|
-
browser.
|
503
|
+
browser.send_keys(:escape) unless devtools.nil?
|
503
504
|
browser.goto(url) unless url.nil?
|
504
505
|
|
505
506
|
{ title: browser.title, url: browser.url, state: :active }
|
@@ -509,7 +510,7 @@ module PWN
|
|
509
510
|
|
510
511
|
# Supported Method Parameters::
|
511
512
|
# tab = PWN::Plugins::TransparentBrowser.close_tab(
|
512
|
-
# browser_obj: 'required - browser_obj returned from #open method)'
|
513
|
+
# browser_obj: 'required - browser_obj returned from #open method)',
|
513
514
|
# keyword: 'required - keyword in title or url used to close tabs'
|
514
515
|
# )
|
515
516
|
|
@@ -522,15 +523,26 @@ module PWN
|
|
522
523
|
|
523
524
|
browser = browser_obj[:browser]
|
524
525
|
# Switch to an inactive tab before closing the active tab if it's currently active
|
525
|
-
|
526
|
-
|
527
|
-
|
528
|
-
|
529
|
-
|
526
|
+
tab_list = list_tabs(browser_obj: browser_obj)
|
527
|
+
active_tab = tab_list.find { |tab| tab[:state] == :active }
|
528
|
+
if active_tab[:url].include?(keyword)
|
529
|
+
inactive_tabs = tab_list.reject { |tab| tab[:url] == browser.url }
|
530
|
+
if inactive_tabs.any?
|
531
|
+
tab_to_activate = inactive_tabs.last[:url]
|
532
|
+
jmp_tab(browser_obj: browser_obj, keyword: tab_to_activate)
|
533
|
+
end
|
530
534
|
end
|
531
535
|
all_tabs = browser.windows
|
532
|
-
|
533
|
-
{
|
536
|
+
|
537
|
+
tabs_to_close = all_tabs.select { |tab| tab.title.include?(keyword) || tab.url.include?(keyword) }
|
538
|
+
|
539
|
+
tabs_closed = tabs_to_close.map do |tab|
|
540
|
+
{ title: tab.title, url: tab.url, state: :closed }
|
541
|
+
end
|
542
|
+
|
543
|
+
tabs_to_close.each(&:close)
|
544
|
+
|
545
|
+
tabs_closed
|
534
546
|
rescue StandardError => e
|
535
547
|
raise e
|
536
548
|
end
|
@@ -647,7 +659,7 @@ module PWN
|
|
647
659
|
verify_devtools_browser(browser_obj: browser_obj)
|
648
660
|
|
649
661
|
browser = browser_obj[:browser]
|
650
|
-
browser.
|
662
|
+
browser.send_keys(:f12)
|
651
663
|
rescue StandardError => e
|
652
664
|
raise e
|
653
665
|
end
|
@@ -691,8 +703,8 @@ module PWN
|
|
691
703
|
end
|
692
704
|
|
693
705
|
# Have to call twice for Chrome, otherwise devtools stays closed
|
694
|
-
browser.
|
695
|
-
browser.
|
706
|
+
browser.send_keys(hotkey)
|
707
|
+
browser.send_keys(hotkey) if chrome_types.include?(browser_type)
|
696
708
|
rescue StandardError => e
|
697
709
|
raise e
|
698
710
|
end
|
data/lib/pwn/version.rb
CHANGED