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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 943acf516461b6defab89c118dce50021fbe4a54149e383cb94be08570cb4735
4
- data.tar.gz: 88ed9ddeec7d76c97a0b4665b26d14db609b9a820786905ab81a2d1f9115f65b
3
+ metadata.gz: 45b078b3f53dc5344594ebeb0a8e0121fa76d6161019e4ff6918ce1741d1e4f4
4
+ data.tar.gz: 6e066b6544dd185e3497cedacb72fc1250b519f04cdcf1fad8366cc6db777ab6
5
5
  SHA512:
6
- metadata.gz: 15fea999df3f0b8f05358f285980cf34851d3dde2992e325f8b1cc3d550be9e24a18fe78a7147531d811992f8b15b9ef2e89300cade9d9873534addc513ecd65
7
- data.tar.gz: 13f05cebbee3ddd043f8f397a733a78daa7e8aa1efae393659d2e8f9bd493cc940bcea1d953fd2bcebeaece47eb29f9abad9184f41ce5a3b587e6285a981beb0
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.192]:001 >>> PWN.help
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.192]:001 >>> PWN.help
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.192]:001 >>> PWN.help
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:
@@ -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
- # url: 'optional - URL to navigate to after opening new tab (Defaults to nil)'
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
- url = opts[:url]
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
- browser.execute_script('window.open()')
496
- jmp_tab(browser_obj: browser_obj, keyword: 'about:blank')
497
- rand_tab = SecureRandom.hex(8)
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
- # Open the DevTools for Firefox, Chrome opens them automatically
503
- browser.send_keys(:f12) if firefox_types.include?(browser_type)
504
- # Open Console drawer if DevTools are open
505
- browser.send_keys(:escape) unless devtools.nil?
506
- browser.goto(url) unless url.nil?
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
- hotkey.push('z') if firefox_types.include?(browser_type)
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.body.click
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
- url: 'optional - URL to navigate to after opening new tab (Defaults to nil)'
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PWN
4
- VERSION = '0.5.192'
4
+ VERSION = '0.5.193'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pwn
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.192
4
+ version: 0.5.193
5
5
  platform: ruby
6
6
  authors:
7
7
  - 0day Inc.