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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2572514219bb53ad28d5bdb441d795b192a4f18b8bcf371652ef8661be793d06
4
- data.tar.gz: 6afc53d56f23965bebfed008a7e7819457e6fc0face0daa5c4dd21110e1d7c9a
3
+ metadata.gz: d745dcbcd6c2a339cc95cd95cf520971dd1cb5d382e440222cad856b610899d4
4
+ data.tar.gz: 0fbe7d75659820c93ff70d1803fc397d4496a43e9148ee303e0d661cc7e88446
5
5
  SHA512:
6
- metadata.gz: 986d271d939c0652a3c8c8ba943a51c56884e95102faad3ee36393f0e3c275af78c3edcdb8cde327424ab487dcc60fd87522010e6e2f587132d88fbd384fc573
7
- data.tar.gz: 5158e21c12952017324123711dfb88776bc802c10a6cc5519cf10bff9607a8147bf452cae98f9769971c6f7e77510899d37376aba95bbf8d19b1fcf23089488a
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.2'
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.697]:001 >>> PWN.help
40
+ pwn[v0.4.699]: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.697]:001 >>> PWN.help
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
@@ -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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PWN
4
- VERSION = '0.4.697'
4
+ VERSION = '0.4.699'
5
5
  end
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.697
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-15 00:00:00.000000000 Z
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.2
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.2
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