pwn 0.5.192 → 0.5.193
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +3 -3
- data/lib/pwn/plugins/repl.rb +4 -2
- data/lib/pwn/plugins/transparent_browser.rb +30 -28
- 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: 45b078b3f53dc5344594ebeb0a8e0121fa76d6161019e4ff6918ce1741d1e4f4
|
4
|
+
data.tar.gz: 6e066b6544dd185e3497cedacb72fc1250b519f04cdcf1fad8366cc6db777ab6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: de6837d334d503f2052e7ac8401a993466e003ff03abc83e656f27c2b84bd95d56b1e3ba616d36d4c04c96efc759258077bb55c355d7a8f967ba05e7c1d737b4
|
7
|
+
data.tar.gz: 19b1550c8b1202312322a8ec5c0cc167b8273362bc9ef2eda046e825e2c336c4a4ae75145b1f4d593df61219fc8a0ba36fdd2d4ce54656d5965e81ec57e0ca03
|
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.193]: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.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.193]: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.193]: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:
|
data/lib/pwn/plugins/repl.rb
CHANGED
@@ -605,7 +605,8 @@ module PWN
|
|
605
605
|
model: model,
|
606
606
|
request: request.chomp,
|
607
607
|
response_history: response_history,
|
608
|
-
speak_answer: speak_answer
|
608
|
+
speak_answer: speak_answer,
|
609
|
+
spinner: true
|
609
610
|
)
|
610
611
|
when :openai
|
611
612
|
response = PWN::Plugins::OpenAI.chat(
|
@@ -613,7 +614,8 @@ module PWN
|
|
613
614
|
model: model,
|
614
615
|
request: request.chomp,
|
615
616
|
response_history: response_history,
|
616
|
-
speak_answer: speak_answer
|
617
|
+
speak_answer: speak_answer,
|
618
|
+
spinner: true
|
617
619
|
)
|
618
620
|
else
|
619
621
|
raise "ERROR: Unsupported AI Engine: #{ai_engine}"
|
@@ -42,7 +42,6 @@ module PWN
|
|
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
44
|
# devtools: 'optional - boolean (defaults to true)',
|
45
|
-
# url: 'optional - URL to navigate to after opening browser (Defaults to about:about#RANDID)'
|
46
45
|
# )
|
47
46
|
|
48
47
|
public_class_method def self.open(opts = {})
|
@@ -63,8 +62,6 @@ module PWN
|
|
63
62
|
devtools = opts[:devtools] ||= false
|
64
63
|
devtools = true if devtools_supported.include?(browser_type) && devtools
|
65
64
|
|
66
|
-
url = opts[:url] ||= "about:about##{SecureRandom.hex(8)}"
|
67
|
-
|
68
65
|
# Let's crank up the default timeout from 30 seconds to 15 min for slow sites
|
69
66
|
Watir.default_timeout = 900
|
70
67
|
|
@@ -130,7 +127,7 @@ module PWN
|
|
130
127
|
end
|
131
128
|
end
|
132
129
|
|
133
|
-
args.push('--devtools') if devtools
|
130
|
+
# args.push('--devtools') if devtools
|
134
131
|
options = Selenium::WebDriver::Firefox::Options.new(
|
135
132
|
args: args,
|
136
133
|
accept_insecure_certs: true
|
@@ -152,7 +149,7 @@ module PWN
|
|
152
149
|
end
|
153
150
|
|
154
151
|
if devtools
|
155
|
-
args.push('--auto-open-devtools-for-tabs')
|
152
|
+
# args.push('--auto-open-devtools-for-tabs')
|
156
153
|
args.push('--disable-hang-monitor')
|
157
154
|
end
|
158
155
|
|
@@ -258,7 +255,6 @@ module PWN
|
|
258
255
|
browser_obj[:browser].proxy = proxy
|
259
256
|
end
|
260
257
|
end
|
261
|
-
puts browser_obj[:browser].get(url).body if url
|
262
258
|
|
263
259
|
when :websocket
|
264
260
|
if proxy
|
@@ -285,10 +281,6 @@ module PWN
|
|
285
281
|
end
|
286
282
|
|
287
283
|
if devtools_supported.include?(browser_type)
|
288
|
-
rand_tab = SecureRandom.hex(8)
|
289
|
-
browser_obj[:browser].goto(url)
|
290
|
-
browser_obj[:browser].execute_script("document.title = '#{rand_tab}'")
|
291
|
-
|
292
284
|
if devtools
|
293
285
|
driver = browser_obj[:browser].driver
|
294
286
|
browser_obj[:devtools] = driver.devtools
|
@@ -310,8 +302,8 @@ module PWN
|
|
310
302
|
browser_obj[:bidi] = driver.bidi
|
311
303
|
|
312
304
|
jmp_devtools_panel(browser_obj: browser_obj, panel: :elements)
|
313
|
-
browser_obj[:browser].send_keys(:escape)
|
314
305
|
end
|
306
|
+
new_tab(browser_obj: browser_obj, first_tab: true)
|
315
307
|
end
|
316
308
|
|
317
309
|
browser_obj
|
@@ -479,31 +471,28 @@ module PWN
|
|
479
471
|
# Supported Method Parameters::
|
480
472
|
# tab = PWN::Plugins::TransparentBrowser.new_tab(
|
481
473
|
# browser_obj: 'required - browser_obj returned from #open method)',
|
482
|
-
#
|
474
|
+
# first_tab: 'optional - boolean to indicate if this is the first tab (Defaults to false)'
|
483
475
|
# )
|
484
476
|
|
485
477
|
public_class_method def self.new_tab(opts = {})
|
486
478
|
browser_obj = opts[:browser_obj]
|
487
479
|
verify_devtools_browser(browser_obj: browser_obj)
|
488
480
|
|
489
|
-
|
481
|
+
first_tab = opts[:first_tab] ||= false
|
490
482
|
|
491
|
-
firefox_types = %i[firefox headless_firefox]
|
492
483
|
browser = browser_obj[:browser]
|
493
484
|
browser_type = browser_obj[:type]
|
494
485
|
devtools = browser_obj[:devtools]
|
495
|
-
|
496
|
-
|
497
|
-
|
498
|
-
if url.nil?
|
499
|
-
browser.goto("about:about##{rand_tab}")
|
500
|
-
browser.execute_script("document.title = '#{rand_tab}'")
|
486
|
+
unless first_tab
|
487
|
+
browser.execute_script('window.open()')
|
488
|
+
jmp_tab(browser_obj: browser_obj, keyword: 'about:blank')
|
501
489
|
end
|
502
|
-
|
503
|
-
|
504
|
-
|
505
|
-
browser.
|
506
|
-
browser.
|
490
|
+
|
491
|
+
rand_tab = SecureRandom.hex(8)
|
492
|
+
url = "about:about##{rand_tab}"
|
493
|
+
browser.goto(url)
|
494
|
+
browser.execute_script("document.title = '#{rand_tab}'")
|
495
|
+
toggle_devtools(browser_obj: browser_obj) if devtools
|
507
496
|
|
508
497
|
{ title: browser.title, url: browser.url, state: :active }
|
509
498
|
rescue StandardError => e
|
@@ -660,8 +649,14 @@ module PWN
|
|
660
649
|
browser_obj = opts[:browser_obj]
|
661
650
|
verify_devtools_browser(browser_obj: browser_obj)
|
662
651
|
|
652
|
+
total_tabs = list_tabs(browser_obj: browser_obj).length
|
653
|
+
|
663
654
|
browser = browser_obj[:browser]
|
664
655
|
browser.send_keys(:f12)
|
656
|
+
if total_tabs < 2
|
657
|
+
sleep 1
|
658
|
+
browser.send_keys(:escape)
|
659
|
+
end
|
665
660
|
rescue StandardError => e
|
666
661
|
raise e
|
667
662
|
end
|
@@ -697,7 +692,12 @@ module PWN
|
|
697
692
|
hotkey.push('j') if chrome_types.include?(browser_type)
|
698
693
|
hotkey.push('k') if firefox_types.include?(browser_type)
|
699
694
|
when :debugger, :sources
|
700
|
-
|
695
|
+
if firefox_types.include?(browser_type)
|
696
|
+
# If we're in the console, we need to switch to the inspector first
|
697
|
+
jmp_devtools_panel(browser_obj: browser_obj, panel: :inspector)
|
698
|
+
sleep 1
|
699
|
+
hotkey.push('z') if firefox_types.include?(browser_type)
|
700
|
+
end
|
701
701
|
when :network
|
702
702
|
hotkey.push('e') if firefox_types.include?(browser_type)
|
703
703
|
else
|
@@ -705,9 +705,11 @@ module PWN
|
|
705
705
|
end
|
706
706
|
|
707
707
|
# Have to call twice for Chrome, otherwise devtools stays closed
|
708
|
-
browser.
|
708
|
+
browser_obj[:browser].send_keys(:escape)
|
709
|
+
# browser.body.click!
|
709
710
|
browser.send_keys(hotkey)
|
710
711
|
browser.send_keys(hotkey) if chrome_types.include?(browser_type)
|
712
|
+
browser.send_keys(:escape)
|
711
713
|
rescue StandardError => e
|
712
714
|
raise e
|
713
715
|
end
|
@@ -867,7 +869,7 @@ module PWN
|
|
867
869
|
|
868
870
|
tab = #{self}.new_tab(
|
869
871
|
browser_obj: 'required - browser_obj returned from #open method)',
|
870
|
-
|
872
|
+
first_tab: 'optional - boolean to indicate if this is the first tab (Defaults to false)'
|
871
873
|
)
|
872
874
|
|
873
875
|
tab = #{self}.close_tab(
|
data/lib/pwn/version.rb
CHANGED