pwn 0.4.697 → 0.4.699
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/Gemfile +2 -1
- data/README.md +2 -2
- data/bin/pwn +18 -0
- data/lib/pwn/plugins/tor.rb +13 -1
- data/lib/pwn/version.rb +1 -1
- metadata +18 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d745dcbcd6c2a339cc95cd95cf520971dd1cb5d382e440222cad856b610899d4
|
4
|
+
data.tar.gz: 0fbe7d75659820c93ff70d1803fc397d4496a43e9148ee303e0d661cc7e88446
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ccb00ebd0473169fef1745f37cdf988344afa39709590ff96d3d304f041a1a8fa664ade80425eb554649872bc891742466975826a3e79c0e34bbb24238bdb438
|
7
|
+
data.tar.gz: a0c6cbcfe85105ace99b455f38804c75f03a24457a0b9b713e9b87cc66927610a09f2366f147cde39f298d8bf02554eb505f83a2c21b15fc7113102b1bc28b7c
|
data/Gemfile
CHANGED
@@ -80,7 +80,8 @@ gem 'sinatra', '3.0.6'
|
|
80
80
|
gem 'slack-ruby-client', '2.1.0'
|
81
81
|
gem 'socksify', '1.7.1'
|
82
82
|
gem 'spreadsheet', '1.3.0'
|
83
|
-
gem 'sqlite3', '1.6.
|
83
|
+
gem 'sqlite3', '1.6.3'
|
84
|
+
gem 'sys-proctable', '1.3.0'
|
84
85
|
gem 'thin', '1.8.2'
|
85
86
|
gem 'tty-prompt', '0.23.1'
|
86
87
|
gem 'tty-spinner', '0.9.3'
|
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.699]:001 >>> PWN.help
|
41
41
|
```
|
42
42
|
|
43
43
|
[](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.699]:001 >>> PWN.help
|
56
56
|
```
|
57
57
|
|
58
58
|
|
data/bin/pwn
CHANGED
@@ -4,6 +4,7 @@
|
|
4
4
|
require 'optparse'
|
5
5
|
require 'pwn'
|
6
6
|
require 'pry'
|
7
|
+
require 'sys/proctable'
|
7
8
|
require 'yaml'
|
8
9
|
|
9
10
|
opts = {}
|
@@ -292,10 +293,27 @@ begin
|
|
292
293
|
)
|
293
294
|
|
294
295
|
# Start PWN REPL
|
296
|
+
pwn_pid = Process.pid
|
295
297
|
Pry.start(
|
296
298
|
self,
|
297
299
|
prompt: prompt
|
298
300
|
)
|
299
301
|
rescue StandardError => e
|
300
302
|
raise e
|
303
|
+
ensure
|
304
|
+
child_pids = Sys::ProcTable.ps(smaps: false).select do |pe|
|
305
|
+
pe.ppid == pwn_pid
|
306
|
+
end.map(&:pid)
|
307
|
+
|
308
|
+
grandkid_pids = Sys::ProcTable.ps(smaps: false).select do |pe|
|
309
|
+
child_pids.include?(pe.ppid)
|
310
|
+
end.map(&:pid)
|
311
|
+
|
312
|
+
grandkid_pids.each do |grandkid_pid|
|
313
|
+
Process.kill('TERM', grandkid_pid)
|
314
|
+
end
|
315
|
+
|
316
|
+
child_pids.each do |child_pid|
|
317
|
+
Process.kill('TERM', child_pid)
|
318
|
+
end
|
301
319
|
end
|
data/lib/pwn/plugins/tor.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'netaddr'
|
3
4
|
require 'pty'
|
4
5
|
|
5
6
|
module PWN
|
@@ -77,6 +78,7 @@ module PWN
|
|
77
78
|
# ip: 'optional - IP address to listen (default: 127.0.0.1)',
|
78
79
|
# port: 'optional - socks port to listen (default: 1024-65535)',
|
79
80
|
# ctrl_port: 'optional - tor control port to listen (default: 1024-65535)',
|
81
|
+
# net: 'optional - CIDR notation to accept connections (default: 127.0.0.0.1/32)',
|
80
82
|
# data_dir: 'optional - directory to keep tor session data (default: /tmp/tor_pwn-TIMESTAMP)'
|
81
83
|
# )
|
82
84
|
|
@@ -92,6 +94,11 @@ module PWN
|
|
92
94
|
break if ctrl_port != port
|
93
95
|
end
|
94
96
|
end
|
97
|
+
|
98
|
+
net = opts[:net]
|
99
|
+
net ||= "#{ip}/32"
|
100
|
+
acl_net = NetAddr.parse_net(net)
|
101
|
+
|
95
102
|
timestamp = Time.now.strftime('%Y-%m-%d_%H-%M-%S.%N%z')
|
96
103
|
data_dir = opts[:data_dir]
|
97
104
|
data_dir ||= "/tmp/tor_pwn-#{timestamp}"
|
@@ -115,7 +122,11 @@ module PWN
|
|
115
122
|
'ControlPort',
|
116
123
|
ctrl_port.to_s,
|
117
124
|
'CookieAuthentication',
|
118
|
-
'1'
|
125
|
+
'1',
|
126
|
+
'SocksPolicy',
|
127
|
+
"accept #{acl_net}",
|
128
|
+
'SocksPolicy',
|
129
|
+
'reject *'
|
119
130
|
) do |stdout, _stdin, pid|
|
120
131
|
File.write(pid_file, pid)
|
121
132
|
stdout.each do |line|
|
@@ -201,6 +212,7 @@ module PWN
|
|
201
212
|
ip: 'optional - IP address to listen (default: 127.0.0.1)',
|
202
213
|
port: 'optional - socks port to listen (default: 9050)',
|
203
214
|
ctrl_port: 'optional - tor control port to listen (default: 9051)',
|
215
|
+
net: 'optional - CIDR notation to accept connections (default: 127.0.0.1/32)',
|
204
216
|
data_dir: 'optional - directory to keep tor session data (default: /tmp/tor_pwn-TIMESTAMP)'
|
205
217
|
)
|
206
218
|
|
data/lib/pwn/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pwn
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.699
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- 0day Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-05-
|
11
|
+
date: 2023-05-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -982,14 +982,28 @@ dependencies:
|
|
982
982
|
requirements:
|
983
983
|
- - '='
|
984
984
|
- !ruby/object:Gem::Version
|
985
|
-
version: 1.6.
|
985
|
+
version: 1.6.3
|
986
986
|
type: :runtime
|
987
987
|
prerelease: false
|
988
988
|
version_requirements: !ruby/object:Gem::Requirement
|
989
989
|
requirements:
|
990
990
|
- - '='
|
991
991
|
- !ruby/object:Gem::Version
|
992
|
-
version: 1.6.
|
992
|
+
version: 1.6.3
|
993
|
+
- !ruby/object:Gem::Dependency
|
994
|
+
name: sys-proctable
|
995
|
+
requirement: !ruby/object:Gem::Requirement
|
996
|
+
requirements:
|
997
|
+
- - '='
|
998
|
+
- !ruby/object:Gem::Version
|
999
|
+
version: 1.3.0
|
1000
|
+
type: :runtime
|
1001
|
+
prerelease: false
|
1002
|
+
version_requirements: !ruby/object:Gem::Requirement
|
1003
|
+
requirements:
|
1004
|
+
- - '='
|
1005
|
+
- !ruby/object:Gem::Version
|
1006
|
+
version: 1.3.0
|
993
1007
|
- !ruby/object:Gem::Dependency
|
994
1008
|
name: thin
|
995
1009
|
requirement: !ruby/object:Gem::Requirement
|