pwn 0.4.636 → 0.4.637
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +2 -2
- data/lib/pwn/plugins/baresip.rb +7 -6
- data/lib/pwn/plugins/burp_suite.rb +6 -3
- data/lib/pwn/plugins/owasp_zap.rb +4 -3
- data/lib/pwn/plugins/sock.rb +38 -3
- 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: ed890d64be30032f92cd57c59abfe52a7b568816945c9196fcc46adb1ccdeb7e
|
4
|
+
data.tar.gz: 9e5f0acbfeaea73f98b1dc14e4ec3e54dc8bb71c654ffcf4d0ca14a7ee2e344d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 26a50246edaa50f39dba47018111e7803891daea153f9ed2bf5b2dd916613eac40d30f66fbb6c6f5a5e3f0a2aa5b470715d2848b9a68219d59afc23533800fb7
|
7
|
+
data.tar.gz: 63dd51a285d26aa58d4a5de34000c2d28bbdee18333841ea3d09a2b003052141c094fe4c94d89d03da2030c74a4f2802487b8d1255c735ea846d422f49bb1e48
|
data/README.md
CHANGED
@@ -37,7 +37,7 @@ $ rvm use ruby-3.2.2@pwn
|
|
37
37
|
$ rvm list gemsets
|
38
38
|
$ gem install --verbose pwn
|
39
39
|
$ pwn
|
40
|
-
pwn[v0.4.
|
40
|
+
pwn[v0.4.637]: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.2.2@pwn
|
|
52
52
|
$ gem uninstall --all --executables pwn
|
53
53
|
$ gem install --verbose pwn
|
54
54
|
$ pwn
|
55
|
-
pwn[v0.4.
|
55
|
+
pwn[v0.4.637]:001 >>> PWN.help
|
56
56
|
```
|
57
57
|
|
58
58
|
|
data/lib/pwn/plugins/baresip.rb
CHANGED
@@ -84,12 +84,13 @@ module PWN
|
|
84
84
|
raise "no http_listen value found in #{config}." if http_list_entry.empty?
|
85
85
|
|
86
86
|
# Update http_listen value in respective config with random available port
|
87
|
-
random_port = -1
|
88
|
-
port_in_use = true
|
89
|
-
while port_in_use
|
90
|
-
|
91
|
-
|
92
|
-
end
|
87
|
+
# random_port = -1
|
88
|
+
# port_in_use = true
|
89
|
+
# while port_in_use
|
90
|
+
# random_port = Random.rand(1024..65_535)
|
91
|
+
# port_in_use = PWN::Plugins::Sock.check_port_in_use(port: random_port)
|
92
|
+
# end
|
93
|
+
random_port = PWN::Plugins::Sock.get_random_unused_port
|
93
94
|
http_listen_ip_port = "127.0.0.1:#{random_port}"
|
94
95
|
|
95
96
|
updated_config_content = ''
|
@@ -40,8 +40,11 @@ module PWN
|
|
40
40
|
burp_obj = {}
|
41
41
|
burp_obj[:pid] = Process.spawn(burp_cmd_string)
|
42
42
|
rest_browser = PWN::Plugins::TransparentBrowser.open(browser_type: :rest)
|
43
|
-
|
44
|
-
|
43
|
+
random_mitm_port = PWN::Plugins::Sock.get_random_unused_port
|
44
|
+
random_bb_port = random_mitm_port
|
45
|
+
random_bb_port = PWN::Plugins::Sock.get_random_unused_port while random_bb_port == random_mitm_port
|
46
|
+
burp_obj[:mitm_proxy] = "127.0.0.1:#{random_mitm_port}"
|
47
|
+
burp_obj[:burpbuddy_api] = "127.0.0.1:#{random_bb_port}"
|
45
48
|
burp_obj[:rest_browser] = rest_browser
|
46
49
|
|
47
50
|
# Proxy always listens on localhost...use SSH tunneling if remote access is required
|
@@ -54,7 +57,7 @@ module PWN
|
|
54
57
|
|
55
58
|
# Wait for TCP 8001 to open prior to returning burp_obj
|
56
59
|
loop do
|
57
|
-
s = TCPSocket.new('127.0.0.1',
|
60
|
+
s = TCPSocket.new('127.0.0.1', random_bb_port)
|
58
61
|
s.close
|
59
62
|
break
|
60
63
|
rescue Errno::ECONNREFUSED
|
@@ -75,7 +75,7 @@ module PWN
|
|
75
75
|
# api_key: 'required - api key for API authorization',
|
76
76
|
# zap_bin_path: 'optional - path to zap.sh file'
|
77
77
|
# headless: 'optional - run zap headless if set to true',
|
78
|
-
# proxy: 'optional - change local zap proxy listener (defaults to http://127.0.0.1
|
78
|
+
# proxy: 'optional - change local zap proxy listener (defaults to http://127.0.0.1:<Random 1024-65535>)',
|
79
79
|
# )
|
80
80
|
|
81
81
|
public_class_method def self.start(opts = {})
|
@@ -118,7 +118,8 @@ module PWN
|
|
118
118
|
proxy_uri = URI.parse(proxy)
|
119
119
|
owasp_zap_cmd = "#{owasp_zap_cmd} -host #{proxy_uri.host} -port #{proxy_uri.port}"
|
120
120
|
else
|
121
|
-
|
121
|
+
random_port = PWN::Plugins::Sock.get_random_unused_port
|
122
|
+
proxy = "http://127.0.0.1:#{random_port}"
|
122
123
|
proxy_uri = URI.parse(proxy)
|
123
124
|
end
|
124
125
|
zap_obj[:host] = proxy_uri.host.to_s.scrub
|
@@ -499,7 +500,7 @@ module PWN
|
|
499
500
|
api_key: 'required - api key for API authorization',
|
500
501
|
zap_bin_path: 'optional - path to zap.sh file',
|
501
502
|
headless: 'optional - run zap headless if set to true',
|
502
|
-
proxy: 'optional - change local zap proxy listener (defaults to http://127.0.0.1
|
503
|
+
proxy: 'optional - change local zap proxy listener (defaults to http://127.0.0.1:<Random 1024-65535>)'
|
503
504
|
)
|
504
505
|
puts zap_obj.public_methods
|
505
506
|
|
data/lib/pwn/plugins/sock.rb
CHANGED
@@ -47,10 +47,40 @@ module PWN
|
|
47
47
|
raise e
|
48
48
|
end
|
49
49
|
|
50
|
+
# Supported Method Parameters::
|
51
|
+
# PWN::Plugins::Sock.get_random_unused_port(
|
52
|
+
# server_ip: 'optional - target host or ip to check (Defaults to 127.0.0.1)',
|
53
|
+
# protocol: 'optional - :tcp || :udp (defaults to tcp)'
|
54
|
+
# )
|
55
|
+
|
56
|
+
public_class_method def self.get_random_unused_port(opts = {})
|
57
|
+
server_ip = opts[:server_ip]
|
58
|
+
server_ip ||= '127.0.0.1'
|
59
|
+
port = -1
|
60
|
+
protocol = opts[:protocol]
|
61
|
+
protocol ||= :tcp
|
62
|
+
|
63
|
+
port_in_use = true
|
64
|
+
while port_in_use
|
65
|
+
port = Random.rand(1024..65_535)
|
66
|
+
port_in_use = check_port_in_use(
|
67
|
+
server_ip: server_ip,
|
68
|
+
port: port,
|
69
|
+
protocol: protocol
|
70
|
+
)
|
71
|
+
end
|
72
|
+
|
73
|
+
port
|
74
|
+
rescue Errno::ECONNREFUSED,
|
75
|
+
Errno::EHOSTUNREACH,
|
76
|
+
Errno::ETIMEDOUT
|
77
|
+
false
|
78
|
+
end
|
79
|
+
|
50
80
|
# Supported Method Parameters::
|
51
81
|
# PWN::Plugins::Sock.check_port_in_use(
|
52
|
-
# port: 'required - target port',
|
53
82
|
# server_ip: 'optional - target host or ip to check (Defaults to 127.0.0.1)',
|
83
|
+
# port: 'required - target port',
|
54
84
|
# protocol: 'optional - :tcp || :udp (defaults to tcp)'
|
55
85
|
# )
|
56
86
|
|
@@ -163,9 +193,14 @@ module PWN
|
|
163
193
|
tls: 'optional - boolean connect to target socket using TLS (defaults to false)'
|
164
194
|
)
|
165
195
|
|
166
|
-
#{self}.
|
167
|
-
|
196
|
+
port = #{self}.get_random_unused_port(
|
197
|
+
server_ip: 'optional - target host or ip to check (Defaults to 127.0.0.1)',
|
198
|
+
protocol: 'optional - :tcp || :udp (defaults to tcp)'
|
199
|
+
)
|
200
|
+
|
201
|
+
#{self}.check_port_in_use(
|
168
202
|
server_ip: 'optional - target host or ip to check (Defaults to 127.0.0.1)',
|
203
|
+
port: 'required - target port',
|
169
204
|
protocol: 'optional - :tcp || :udp (defaults to tcp)'
|
170
205
|
)
|
171
206
|
|
data/lib/pwn/version.rb
CHANGED