pwn 0.5.167 → 0.5.168

Sign up to get free protection for your applications and to get access to all the features.
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