pwn 0.5.354 → 0.5.355

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8512e5e4d1177bad32c255ef76118b23cf334c579f75c7e89fcf01ffacfc4e4c
4
- data.tar.gz: f14e9efed8c396aa61ab72a3a60437854c924b694f8c70c793abb2f3536a3260
3
+ metadata.gz: 1a1c25778cca78de03158bfd515b79afe966f47c3696619c02a2a8b6c54e8f48
4
+ data.tar.gz: 727062f71c704907703d87877d009eb7b9cf91669e72257458592178dd89dd6f
5
5
  SHA512:
6
- metadata.gz: 0ea6aed1954cf83f6ad74518aafb11386679e4a387b063b80b8286609c54d634bc9d65528a6fe569dd80ed0581cb1dfbd93b8d463741c68e5807793f8c65d6d9
7
- data.tar.gz: dc78f00786760d81eeca854594acaa1dbaae3e8401c958458fc3d1ddc01d492b23d42ba9dd4737e35aeca3d661519b35a4ce98f17e814edd1cee9a1f7ab83069
6
+ metadata.gz: 961c1695548771ae13d9a56d2a4170d52c2b660a55de3ae387d1a0fd5bf38e7ff9c8bd1f18366cb2b8eee40d1ee12779ce834eb0620f200b5e952ea0a2f0ed02
7
+ data.tar.gz: 208f0401332646eafec405fa2b8ff0e05932591145fa088f639290b25729085eb286d80cc6fa774d655a26c7caa3f4e5e2545d3c573fe7165d781f833ab5b06a
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.354]:001 >>> PWN.help
40
+ pwn[v0.5.355]: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.4.4@pwn
52
52
  $ gem uninstall --all --executables pwn
53
53
  $ gem install --verbose pwn
54
54
  $ pwn
55
- pwn[v0.5.354]:001 >>> PWN.help
55
+ pwn[v0.5.355]: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.4.4@pwn
62
62
  $ rvmsudo gem uninstall --all --executables pwn
63
63
  $ rvmsudo gem install --verbose pwn
64
64
  $ pwn
65
- pwn[v0.5.354]:001 >>> PWN.help
65
+ pwn[v0.5.355]: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:
@@ -40,7 +40,7 @@ module PWN
40
40
  end
41
41
 
42
42
  # Supported Method Parameters::
43
- # burp_obj = PWN::Plugins::BurpSuite.start(
43
+ # burp_obj1 = PWN::Plugins::BurpSuite.start(
44
44
  # burp_jar_path: 'optional - path of burp suite pro jar file (defaults to /opt/burpsuite/burpsuite_pro.jar)',
45
45
  # headless: 'optional - run burp headless if set to true',
46
46
  # browser_type: 'optional - defaults to :firefox. See PWN::Plugins::TransparentBrowser.help for a list of types',
@@ -60,12 +60,10 @@ module PWN
60
60
 
61
61
  browser_type = opts[:browser_type] ||= :firefox
62
62
  burp_ip = opts[:burp_ip] ||= '127.0.0.1'
63
- burp_port = opts[:burp_port] ||= 8080
64
- # burp_port = opts[:burp_port] ||= PWN::Plugins::Sock.get_random_unused_port
65
- #
63
+ burp_port = opts[:burp_port] ||= PWN::Plugins::Sock.get_random_unused_port
64
+
66
65
  pwn_burp_ip = opts[:pwn_burp_ip] ||= '127.0.0.1'
67
- pwn_burp_port = opts[:pwn_burp_port] ||= 1337
68
- # pwn_burp_port = opts[:pwn_burp_port] ||= PWN::Plugins::Sock.get_random_unused_port
66
+ pwn_burp_port = opts[:pwn_burp_port] ||= PWN::Plugins::Sock.get_random_unused_port
69
67
 
70
68
  burp_cmd_string = 'java -Xmx4G'
71
69
  burp_cmd_string = "#{burp_cmd_string} -Djava.awt.headless=true" if opts[:headless]
@@ -103,14 +101,13 @@ module PWN
103
101
  next
104
102
  end
105
103
 
106
- # USE THIS WHEN Updating Proxy Listener settings become
107
- # available in the BurpSuite Montoya API
108
104
  # Update proxy listener to use the burp_ip and burp_port
109
- # update_proxy_listener(
110
- # burp_obj: burp_obj,
111
- # address: burp_ip,
112
- # port: burp_port
113
- # )
105
+ update_proxy_listener(
106
+ burp_obj: burp_obj,
107
+ id: '0',
108
+ address: burp_ip,
109
+ port: burp_port
110
+ )
114
111
 
115
112
  burp_obj
116
113
  rescue StandardError => e
@@ -246,6 +243,113 @@ module PWN
246
243
  raise e
247
244
  end
248
245
 
246
+ # Supported Method Parameters::
247
+ # json_proxy_listeners = PWN::Plugins::BurpSuite.get_proxy_listeners(
248
+ # burp_obj: 'required - burp_obj returned by #start method'
249
+ # )
250
+
251
+ public_class_method def self.get_proxy_listeners(opts = {})
252
+ burp_obj = opts[:burp_obj]
253
+ rest_browser = burp_obj[:rest_browser]
254
+ pwn_burp_api = burp_obj[:pwn_burp_api]
255
+
256
+ listeners = rest_browser.get("http://#{pwn_burp_api}/proxy/listeners", content_type: 'application/json; charset=UTF8')
257
+ JSON.parse(listeners, symbolize_names: true)
258
+ rescue StandardError => e
259
+ stop(burp_obj: burp_obj) unless burp_obj.nil?
260
+ raise e
261
+ end
262
+
263
+ # Supported Method Parameters::
264
+ # json_proxy_listener = PWN::Plugins::BurpSuite.add_proxy_listener(
265
+ # burp_obj: 'required - burp_obj returned by #start method',
266
+ # bind_address: 'required - bind address for the proxy listener (e.g., "127.0.0.1")',
267
+ # port: 'required - port for the proxy listener (e.g., 8081)',
268
+ # enabled: 'optional - enable the listener (defaults to true)'
269
+ # )
270
+
271
+ public_class_method def self.add_proxy_listener(opts = {})
272
+ burp_obj = opts[:burp_obj]
273
+ rest_browser = burp_obj[:rest_browser]
274
+ pwn_burp_api = burp_obj[:pwn_burp_api]
275
+ bind_address = opts[:bind_address]
276
+ raise 'ERROR: bind_address parameter is required' if bind_address.nil?
277
+
278
+ port = opts[:port]
279
+ raise 'ERROR: port parameter is required' if port.nil?
280
+
281
+ enabled = opts[:enabled] != false # Default to true if not specified
282
+
283
+ proxy_listeners = get_proxy_listeners(burp_obj: burp_obj)
284
+ last_known_proxy_id = proxy_listeners.last[:id].to_i ||= 0
285
+ next_id = last_known_proxy_id + 1
286
+
287
+ post_body = {
288
+ id: next_id.to_s,
289
+ bind_address: bind_address,
290
+ port: port,
291
+ enabled: enabled
292
+ }.to_json
293
+
294
+ listener = rest_browser.post("http://#{pwn_burp_api}/proxy/listeners", post_body, content_type: 'application/json; charset=UTF8')
295
+ JSON.parse(listener, symbolize_names: true)
296
+ rescue StandardError => e
297
+ stop(burp_obj: burp_obj) unless burp_obj.nil?
298
+ raise e
299
+ end
300
+
301
+ # Supported Method Parameters::
302
+ # json_proxy_listener = PWN::Plugins::BurpSuite.update_proxy_listener(
303
+ # burp_obj: 'required - burp_obj returned by #start method',
304
+ # id: 'optional - ID of the proxy listener (defaults to "0")',
305
+ # bind_address: 'optional - bind address for the proxy listener (defaults to "127.0.0.1")',
306
+ # port: 'optional - port for the proxy listener (defaults to 8080)',
307
+ # enabled: 'optional - enable or disable the listener (defaults to true)'
308
+ # )
309
+
310
+ public_class_method def self.update_proxy_listener(opts = {})
311
+ burp_obj = opts[:burp_obj]
312
+ rest_browser = burp_obj[:rest_browser]
313
+ pwn_burp_api = burp_obj[:pwn_burp_api]
314
+ id = opts[:id] ||= '0'
315
+ bind_address = opts[:bind_address] ||= '127.0.0.1'
316
+ port = opts[:port] ||= 8080
317
+ enabled = opts[:enabled] != false # Default to true if not specified
318
+
319
+ post_body = {
320
+ id: id,
321
+ bind_address: bind_address,
322
+ port: port,
323
+ enabled: enabled
324
+ }.to_json
325
+
326
+ listener = rest_browser.put("http://#{pwn_burp_api}/proxy/listeners/#{id}", post_body, content_type: 'application/json; charset=UTF8')
327
+ JSON.parse(listener, symbolize_names: true)
328
+ rescue StandardError => e
329
+ stop(burp_obj: burp_obj) unless burp_obj.nil?
330
+ raise e
331
+ end
332
+
333
+ # Supported Method Parameters::
334
+ # PWN::Plugins::BurpSuite.delete_proxy_listener(
335
+ # burp_obj: 'required - burp_obj returned by #start method',
336
+ # id: 'required - ID of the proxy listener (defaults to "0")'
337
+ # )
338
+
339
+ public_class_method def self.delete_proxy_listener(opts = {})
340
+ burp_obj = opts[:burp_obj]
341
+ rest_browser = burp_obj[:rest_browser]
342
+ pwn_burp_api = burp_obj[:pwn_burp_api]
343
+ id = opts[:id] ||= '0'
344
+ raise 'ERROR: id parameter is required' if id.nil?
345
+
346
+ rest_browser.delete("http://#{pwn_burp_api}/proxy/listeners/#{id}")
347
+ true # Return true to indicate successful deletion (or error if API fails)
348
+ rescue StandardError => e
349
+ stop(burp_obj: burp_obj) unless burp_obj.nil?
350
+ raise e
351
+ end
352
+
249
353
  # Supported Method Parameters::
250
354
  # json_sitemap = PWN::Plugins::BurpSuite.get_sitemap(
251
355
  # burp_obj: 'required - burp_obj returned by #start method',
@@ -788,109 +892,6 @@ module PWN
788
892
  raise e
789
893
  end
790
894
 
791
- # Supported Method Parameters::
792
- # json_proxy_listeners = PWN::Plugins::BurpSuite.get_proxy_listeners(
793
- # burp_obj: 'required - burp_obj returned by #start method'
794
- # )
795
-
796
- public_class_method def self.get_proxy_listeners(opts = {})
797
- burp_obj = opts[:burp_obj]
798
- rest_browser = burp_obj[:rest_browser]
799
- pwn_burp_api = burp_obj[:pwn_burp_api]
800
-
801
- listeners = rest_browser.get("http://#{pwn_burp_api}/proxy/listeners", content_type: 'application/json; charset=UTF8')
802
- JSON.parse(listeners, symbolize_names: true)
803
- rescue StandardError => e
804
- stop(burp_obj: burp_obj) unless burp_obj.nil?
805
- raise e
806
- end
807
-
808
- # Supported Method Parameters::
809
- # json_proxy_listener = PWN::Plugins::BurpSuite.add_proxy_listener(
810
- # burp_obj: 'required - burp_obj returned by #start method',
811
- # bind_address: 'required - bind address for the proxy listener (e.g., "127.0.0.1")',
812
- # port: 'required - port for the proxy listener (e.g., 8081)',
813
- # enabled: 'optional - enable the listener (defaults to true)'
814
- # )
815
-
816
- public_class_method def self.add_proxy_listener(opts = {})
817
- burp_obj = opts[:burp_obj]
818
- rest_browser = burp_obj[:rest_browser]
819
- pwn_burp_api = burp_obj[:pwn_burp_api]
820
- bind_address = opts[:bind_address]
821
- raise 'ERROR: bind_address parameter is required' if bind_address.nil?
822
-
823
- port = opts[:port]
824
- raise 'ERROR: port parameter is required' if port.nil?
825
-
826
- enabled = opts[:enabled] != false # Default to true if not specified
827
-
828
- post_body = {
829
- id: "#{bind_address}:#{port}",
830
- bind_address: bind_address,
831
- port: port,
832
- enabled: enabled
833
- }.to_json
834
-
835
- listener = rest_browser.post("http://#{pwn_burp_api}/proxy/listeners", post_body, content_type: 'application/json; charset=UTF8')
836
- JSON.parse(listener, symbolize_names: true)
837
- rescue StandardError => e
838
- stop(burp_obj: burp_obj) unless burp_obj.nil?
839
- raise e
840
- end
841
-
842
- # Supported Method Parameters::
843
- # json_proxy_listener = PWN::Plugins::BurpSuite.update_proxy_listener(
844
- # burp_obj: 'required - burp_obj returned by #start method',
845
- # id: 'optional - ID of the proxy listener (defaults to "127.0.0.1:8080")',
846
- # bind_address: 'optional - bind address for the proxy listener (defaults to "127.0.0.1")',
847
- # port: 'optional - port for the proxy listener (defaults to 8080)',
848
- # enabled: 'optional - enable or disable the listener (defaults to true)'
849
- # )
850
-
851
- public_class_method def self.update_proxy_listener(opts = {})
852
- burp_obj = opts[:burp_obj]
853
- rest_browser = burp_obj[:rest_browser]
854
- pwn_burp_api = burp_obj[:pwn_burp_api]
855
- id = opts[:id] ||= '127.0.0.1:8080'
856
- bind_address = opts[:bind_address] ||= '127.0.0.1'
857
- port = opts[:port] ||= 8080
858
- enabled = opts[:enabled] != false # Default to true if not specified
859
-
860
- post_body = {
861
- id: id,
862
- bind_address: bind_address,
863
- port: port,
864
- enabled: enabled
865
- }.to_json
866
-
867
- listener = rest_browser.put("http://#{pwn_burp_api}/proxy/listeners/#{id}", post_body, content_type: 'application/json; charset=UTF8')
868
- JSON.parse(listener, symbolize_names: true)
869
- rescue StandardError => e
870
- stop(burp_obj: burp_obj) unless burp_obj.nil?
871
- raise e
872
- end
873
-
874
- # Supported Method Parameters::
875
- # PWN::Plugins::BurpSuite.delete_proxy_listener(
876
- # burp_obj: 'required - burp_obj returned by #start method',
877
- # id: 'required - ID of the proxy listener (e.g., "127.0.0.1:8080")'
878
- # )
879
-
880
- public_class_method def self.delete_proxy_listener(opts = {})
881
- burp_obj = opts[:burp_obj]
882
- rest_browser = burp_obj[:rest_browser]
883
- pwn_burp_api = burp_obj[:pwn_burp_api]
884
- id = opts[:id]
885
- raise 'ERROR: id parameter is required' if id.nil?
886
-
887
- rest_browser.delete("http://#{pwn_burp_api}/proxy/listeners/#{id}")
888
- true # Return true to indicate successful deletion (or error if API fails)
889
- rescue StandardError => e
890
- stop(burp_obj: burp_obj) unless burp_obj.nil?
891
- raise e
892
- end
893
-
894
895
  # Supported Method Parameters::
895
896
  # PWN::Plugins::BurpSuite.update_burp_jar(
896
897
  # )
@@ -929,7 +930,7 @@ module PWN
929
930
 
930
931
  public_class_method def self.help
931
932
  puts "USAGE:
932
- burp_obj = #{self}.start(
933
+ burp_obj1 = #{self}.start(
933
934
  burp_jar_path: 'optional - path of burp suite pro jar file (defaults to /opt/burpsuite/burpsuite_pro.jar)',
934
935
  headless: 'optional - run headless if set to true',
935
936
  browser_type: 'optional - defaults to :firefox. See PWN::Plugins::TransparentBrowser.help for a list of types'
@@ -958,6 +959,30 @@ module PWN
958
959
  burp_obj: 'required - burp_obj returned by #start method'
959
960
  )
960
961
 
962
+ #{self}.get_proxy_listeners(
963
+ burp_obj: 'required - burp_obj returned by #start method'
964
+ )
965
+
966
+ json_proxy_listener = #{self}.add_proxy_listener(
967
+ burp_obj: 'required - burp_obj returned by #start method',
968
+ bind_address: 'required - bind address for the proxy listener (e.g., \"127.0.0.1\")',
969
+ port: 'required - port for the proxy listener (e.g., 8081)',
970
+ enabled: 'optional - enable the listener (defaults to true)'
971
+ )
972
+
973
+ json_proxy_listener = #{self}.update_proxy_listener(
974
+ burp_obj: 'required - burp_obj returned by #start method',
975
+ id: 'optional - ID of the proxy listener (defaults to \"0\")',
976
+ bind_address: 'required - bind address for the proxy listener (e.g., \"127.0.0.1\")',
977
+ port: 'required - port for the proxy listener (e.g., 8081)',
978
+ enabled: 'optional - enable the listener (defaults to true)'
979
+ )
980
+
981
+ #{self}.delete_proxy_listener(
982
+ burp_obj: 'required - burp_obj returned by #start method',
983
+ id: 'required - ID of the proxy listener (defaults to \"0\")'
984
+ )
985
+
961
986
  json_sitemap = #{self}.get_sitemap(
962
987
  burp_obj: 'required - burp_obj returned by #start method',
963
988
  target_url: 'optional - target URL to filter sitemap results (defaults to entire sitemap)'
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.354'
4
+ VERSION = '0.5.355'
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.354
4
+ version: 0.5.355
5
5
  platform: ruby
6
6
  authors:
7
7
  - 0day Inc.