pwn 0.5.167 → 0.5.168

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: 11593e950e655277579eec76ad13903d34626a75a3a447aafd510d2ff693d13a
4
- data.tar.gz: e73406d33b46258e8fbdf880b89807e3ddd164862a9b2e976778eaca47619654
3
+ metadata.gz: 2659982911e6ccf3bd88887125f8b6c60d18f45b2fb07add9b280ddf55487a2f
4
+ data.tar.gz: 81502331d554fbddd5e0269498c79056505f25d75283e848b3473ea33b0b0e2f
5
5
  SHA512:
6
- metadata.gz: '09e82f98797370ba93ba8e16369ae2949e43e602be4e280796799530960316d83abb4f9fc1945ea80eb6262ebd14d901aed23b99deedb79d26882a9001cf4d43'
7
- data.tar.gz: 3a0cd8c796c916a28ca64941aae0cc5832359866b2d49f84422b537012f309c0600deee68235163bb138aa720e23bb234a240fada722b97431ecbf830e3f2176
6
+ metadata.gz: 6e71dc36e47e9aa24b05841ca39bfcde6cc45514bcb10eb81147b9d2557a761e92e0da45ba52b95cbc143a985da50b89d2cb5dbe54bb4db95a187df010f2f92c
7
+ data.tar.gz: 95e92a90b168451e82fd796d8c65337096e332935ca924f6d436b8ad35b2cb98fd264a0a860f87cb1fefa5eaae315f141538e26ba00ec216ab75606002acd4c5
data/Gemfile CHANGED
@@ -17,6 +17,7 @@ gem 'authy', '3.0.1'
17
17
  gem 'aws-sdk', '3.2.0'
18
18
  # gem 'bettercap', '1.6.2'
19
19
  gem 'barby', '0.6.9'
20
+ gem 'base32', '0.3.4'
20
21
  gem 'brakeman', '6.1.2'
21
22
  gem 'bson', '5.0.0'
22
23
  gem 'bundler', '>=2.5.11'
@@ -46,7 +47,7 @@ gem 'jwt', '2.8.1'
46
47
  gem 'libusb', '0.7.1'
47
48
  gem 'luhn', '1.0.2'
48
49
  gem 'mail', '2.8.1'
49
- gem 'meshtastic', '0.0.69'
50
+ gem 'meshtastic', '0.0.70'
50
51
  gem 'metasm', '1.0.5'
51
52
  gem 'mongo', '2.20.0'
52
53
  gem 'msfrpc-client', '1.1.2'
@@ -78,7 +79,7 @@ gem 'rspec', '3.13.0'
78
79
  gem 'rtesseract', '3.1.3'
79
80
  gem 'rubocop', '1.64.1'
80
81
  gem 'rubocop-rake', '0.6.0'
81
- gem 'rubocop-rspec', '2.31.0'
82
+ gem 'rubocop-rspec', '3.0.1'
82
83
  gem 'ruby-audio', '1.6.1'
83
84
  gem 'ruby-nmap', '1.0.3'
84
85
  gem 'ruby-saml', '1.16.0'
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.167]:001 >>> PWN.help
40
+ pwn[v0.5.168]: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.1@pwn
52
52
  $ gem uninstall --all --executables pwn
53
53
  $ gem install --verbose pwn
54
54
  $ pwn
55
- pwn[v0.5.167]:001 >>> PWN.help
55
+ pwn[v0.5.168]: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.1@pwn
62
62
  $ rvmsudo gem uninstall --all --executables pwn
63
63
  $ rvmsudo gem install --verbose pwn
64
64
  $ pwn
65
- pwn[v0.5.167]:001 >>> PWN.help
65
+ pwn[v0.5.168]: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:
data/lib/pwn/aws/iam.rb CHANGED
@@ -1,6 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'aws-sdk'
4
+ require 'base32'
5
+ require 'base64'
4
6
 
5
7
  module PWN
6
8
  module AWS
@@ -44,6 +46,107 @@ module PWN
44
46
  raise e
45
47
  end
46
48
 
49
+ # Supported Method Parameters::
50
+ # PWN::AWS::IAM.decode_key(
51
+ # key: 'required - key to decode',
52
+ # key_type: 'optional - key type :access_key_id|:secret_access_key|:sts_session_token (Default: access_key_id)',
53
+ # )
54
+ public_class_method def self.decode_key(opts = {})
55
+ key = opts[:key].to_s.scrub.chomp.strip.upcase
56
+ raise 'ERROR: Key is required' if key == ''
57
+
58
+ key_type = opts[:key_type] || :access_key_id
59
+ key_type = key_type.to_s.scrub.chomp.strip.to_sym
60
+
61
+ decoded_key = {}
62
+
63
+ prefix = key[0..3].to_s.downcase.to_sym
64
+ case prefix
65
+ when :abia
66
+ resource_type = 'AWS STS Service Bearer Token'
67
+ decoded_key[:prefix] = prefix
68
+ when :acca
69
+ resource_type = 'Context Specific Credential'
70
+ decoded_key[:prefix] = prefix
71
+ when :agpa
72
+ resource_type = 'Group'
73
+ decoded_key[:prefix] = prefix
74
+ when :aida
75
+ resource_type = 'IAM User'
76
+ decoded_key[:prefix] = prefix
77
+ when :aipa
78
+ resource_type = 'EC2 Instance Profile'
79
+ decoded_key[:prefix] = prefix
80
+ when :akia
81
+ resource_type = 'Access Key'
82
+ decoded_key[:prefix] = prefix
83
+ when :anpa
84
+ resource_type = 'Managed Policy'
85
+ decoded_key[:prefix] = prefix
86
+ when :anva
87
+ resource_type = 'Version in a Managed Policy'
88
+ decoded_key[:prefix] = prefix
89
+ when :apka
90
+ resource_type = 'Public Key'
91
+ decoded_key[:prefix] = prefix
92
+ when :aroa
93
+ resource_type = 'Role'
94
+ decoded_key[:prefix] = prefix
95
+ when :asca
96
+ resource_type = 'Certificate'
97
+ decoded_key[:prefix] = prefix
98
+ when :asia
99
+ resource_type = 'Temporary (AWS STS) Keys'
100
+ decoded_key[:prefix] = prefix
101
+ else
102
+ resource_type = 'Secret Access Key' if key_type == :secret_access_key
103
+ resource_type = 'STS Session' if key_type == :sts_session_token
104
+ end
105
+
106
+ decoded_key[:resource_type] = resource_type
107
+
108
+ case key_type
109
+ when :access_key_id
110
+ suffix = key[4..-1]
111
+ decoded_suffix = Base32.decode(suffix)
112
+ trimmed_decoded_suffix = decoded_suffix[0..5]
113
+ z = trimmed_decoded_suffix.bytes.inject { |total, byte| (total << 8) + byte }
114
+ mask = 0x7FFFFFFFFF80
115
+ key = (z & mask) >> 7
116
+ decoded_key[:account_id] = key
117
+ when :secret_access_key, :sts_session_token
118
+ decoded_key[:decoded_key] = Base64.strict_decode64(key)
119
+ else
120
+ raise "ERROR: Invalid Key Type: #{key_type}. Valid key types are :access_key_id|:secret_access_key|:sts_session_token"
121
+ end
122
+ decoded_key[:key_type] = key_type
123
+
124
+ decoded_key
125
+ rescue StandardError => e
126
+ raise e
127
+ end
128
+
129
+ # TODO: Implement this method
130
+ # Supported Method Parameters::
131
+ # PWN::AWS::IAM.generate_access_key(
132
+ # account_id: 'required - AWS Account ID',
133
+ # prefix: 'optional - prefix for the key :abia|:acca|:agpa|:aida|:aipa|:akia|:anpa|:anva|:apka|:aroa|:asca|:asia (Default: akia)'
134
+ # )
135
+ # public_class_method def self.generate_access_key(opts = {})
136
+ # account_id = opts[:account_id].to_i
137
+ # raise 'ERROR: Account ID is required and must be an Integer' unless account_id.positive?
138
+
139
+ # prefix = opts[:prefix] ||= :akia
140
+ # prefix_str = prefix.to_s.scrub.chomp.strip.upcase
141
+
142
+ # mask = 0x7FFFFFFFFF80
143
+ # key = (account_id & mask) << 7
144
+
145
+ # "#{prefix_str}#{encoded_key}"
146
+ # rescue StandardError => e
147
+ # raise e
148
+ # end
149
+
47
150
  # Supported Method Parameters::
48
151
  # PWN::AWS::IAM.disconnect(
49
152
  # iam_obj: 'required - iam_obj returned from #connect method'
@@ -80,6 +183,11 @@ module PWN
80
183
  )
81
184
  puts iam_obj.public_methods
82
185
 
186
+ decoded_key = #{self}.decode_key(
187
+ key: 'required - key to decode',
188
+ key_type: 'optional - key type :access_key_id|:secret_access_key|:sts_session_token (Default: access_key_id
189
+ )
190
+
83
191
  #{self}.disconnect(
84
192
  iam_obj: 'required - iam_obj returned from #connect method'
85
193
  )
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.167'
4
+ VERSION = '0.5.168'
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.5.167
4
+ version: 0.5.168
5
5
  platform: ruby
6
6
  authors:
7
7
  - 0day Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-06-10 00:00:00.000000000 Z
11
+ date: 2024-06-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -80,6 +80,20 @@ dependencies:
80
80
  - - '='
81
81
  - !ruby/object:Gem::Version
82
82
  version: 0.6.9
83
+ - !ruby/object:Gem::Dependency
84
+ name: base32
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - '='
88
+ - !ruby/object:Gem::Version
89
+ version: 0.3.4
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - '='
95
+ - !ruby/object:Gem::Version
96
+ version: 0.3.4
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: brakeman
85
99
  requirement: !ruby/object:Gem::Requirement
@@ -478,14 +492,14 @@ dependencies:
478
492
  requirements:
479
493
  - - '='
480
494
  - !ruby/object:Gem::Version
481
- version: 0.0.69
495
+ version: 0.0.70
482
496
  type: :runtime
483
497
  prerelease: false
484
498
  version_requirements: !ruby/object:Gem::Requirement
485
499
  requirements:
486
500
  - - '='
487
501
  - !ruby/object:Gem::Version
488
- version: 0.0.69
502
+ version: 0.0.70
489
503
  - !ruby/object:Gem::Dependency
490
504
  name: metasm
491
505
  requirement: !ruby/object:Gem::Requirement
@@ -926,14 +940,14 @@ dependencies:
926
940
  requirements:
927
941
  - - '='
928
942
  - !ruby/object:Gem::Version
929
- version: 2.31.0
943
+ version: 3.0.1
930
944
  type: :runtime
931
945
  prerelease: false
932
946
  version_requirements: !ruby/object:Gem::Requirement
933
947
  requirements:
934
948
  - - '='
935
949
  - !ruby/object:Gem::Version
936
- version: 2.31.0
950
+ version: 3.0.1
937
951
  - !ruby/object:Gem::Dependency
938
952
  name: ruby-audio
939
953
  requirement: !ruby/object:Gem::Requirement