pwn 0.4.540 → 0.4.543

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: 0013bdf78e9fd0fd9e7edf7a328dd40e44f3f796bc371701614ffe2ebe123853
4
- data.tar.gz: 9dfe4aa9953df1b5afc20fc7c9cab44a78e4557474dbf47498d7bfbe28fba09c
3
+ metadata.gz: a5d887b5d0434dcaa46ef673de80a11641844733b4589b622c8da8c3eab6e961
4
+ data.tar.gz: 3e35c91f769c6969de334f40e6c91c7f411051ddb2091bd9df0efc8c88b0b1c9
5
5
  SHA512:
6
- metadata.gz: 9fe61829cbf3d58a9a895e0d084705bee3e54180885321b6def4f06f8b1e9160cfe20799086a28218051d14c2ced302d84209844d5eaa4952ab03ba160e34e89
7
- data.tar.gz: 81e98057c2a6e4004424fac4b74160baf9e60b88625b454f318498de4241c2fb52726b35fd3d14efb41def3fb2b474a98c5a03272dd7379f8c65a01f39cc8847
6
+ metadata.gz: 015c611721dd8c43fc06f4a8eb88ccbe7c3deb8f959f7c0cd56e14e61ae509c2f39c85b56fd16e6c6dc230993177818b95ac9c71614f3666d79131343971afb0
7
+ data.tar.gz: 4e475ccc1edcfcbcc5220106ecb6accd68104513b3264235bf6dadd51eb9c2d9ecc5ad58576c8954f0ae9359d258fffc543e3239f8db9125e76c685b91fbf4bb
data/Gemfile CHANGED
@@ -11,18 +11,18 @@ gemspec
11
11
  # In some circumstances custom flags are passed to gems in order
12
12
  # to build appropriately. Defer to ./reinstall_pwn_gemset.sh
13
13
  # to review these custom flags (e.g. pg, serialport, etc).
14
- gem 'activesupport', '7.0.3.1'
14
+ gem 'activesupport', '7.0.4'
15
15
  gem 'anemone', '0.7.2'
16
16
  gem 'authy', '3.0.1'
17
17
  gem 'aws-sdk', '3.1.0'
18
18
  gem 'bettercap', '1.6.2'
19
19
  gem 'brakeman', '5.3.1'
20
20
  gem 'bson', '4.15.0'
21
- gem 'bundler', '>=2.3.21'
21
+ gem 'bundler', '>=2.3.22'
22
22
  gem 'bundler-audit', '0.9.1'
23
23
  gem 'bunny', '2.19.0'
24
24
  gem 'colorize', '0.8.1'
25
- gem 'credit_card_validations', '5.0.0'
25
+ gem 'credit_card_validations', '6.0.0'
26
26
  gem 'eventmachine', '1.2.7'
27
27
  gem 'faye-websocket', '0.11.1'
28
28
  gem 'fftw3', '0.3'
@@ -60,27 +60,27 @@ gem 'rex', '2.0.13'
60
60
  gem 'rmagick', '4.2.6'
61
61
  gem 'rspec', '3.11.0'
62
62
  gem 'rtesseract', '3.1.2'
63
- gem 'rubocop', '1.35.1'
63
+ gem 'rubocop', '1.36.0'
64
64
  gem 'rubocop-rake', '0.6.0'
65
- gem 'rubocop-rspec', '2.12.1'
65
+ gem 'rubocop-rspec', '2.13.1'
66
66
  gem 'ruby-audio', '1.6.1'
67
67
  gem 'ruby-nmap', '0.10.0'
68
68
  gem 'ruby-saml', '1.14.0'
69
69
  gem 'rvm', '1.11.3.9'
70
- gem 'savon', '2.13.0'
71
- gem 'selenium-devtools', '0.104.0'
70
+ gem 'savon', '2.13.1'
71
+ gem 'selenium-devtools', '0.105.0'
72
72
  gem 'serialport', '1.3.2'
73
73
  gem 'sinatra', '2.2.2'
74
74
  gem 'slack-ruby-client', '1.1.0'
75
75
  gem 'socksify', '1.7.1'
76
76
  gem 'spreadsheet', '1.3.0'
77
- gem 'sqlite3', '1.4.4'
77
+ gem 'sqlite3', '1.5.0'
78
78
  gem 'thin', '1.8.1'
79
79
  gem 'tty-prompt', '0.23.1'
80
80
  gem 'watir', '7.1.0'
81
81
  gem 'waveform', '0.1.2'
82
82
  gem 'webrick', '1.7.0'
83
83
  gem 'whois', '5.1.0'
84
- gem 'whois-parser', '1.2.0'
84
+ gem 'whois-parser', '2.0.0'
85
85
  gem 'wicked_pdf', '2.6.3'
86
86
  gem 'yard', '0.9.28'
data/README.md CHANGED
@@ -37,7 +37,7 @@ $ rvm use ruby-3.1.2@pwn
37
37
  $ rvm list gemsets
38
38
  $ gem install --verbose pwn
39
39
  $ pwn
40
- pwn[v0.4.540]:001 >>> PWN.help
40
+ pwn[v0.4.543]: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.1.2@pwn
52
52
  $ gem uninstall --all --executables pwn
53
53
  $ gem install --verbose pwn
54
54
  $ pwn
55
- pwn[v0.4.540]:001 >>> PWN.help
55
+ pwn[v0.4.543]:001 >>> PWN.help
56
56
  ```
57
57
 
58
58
 
data/bin/pwn_sast CHANGED
@@ -72,8 +72,8 @@ begin
72
72
  test_cases = chosen_test_cases.to_s.scrub.chomp.strip.delete("\s").split(',').map(&:to_sym)
73
73
  else
74
74
  test_cases = %i[
75
- ApacheFileSystemUtilAPI
76
75
  AMQPConnectAsGuest
76
+ ApacheFileSystemUtilAPI
77
77
  AWS
78
78
  BannedFunctionCallsC
79
79
  Base64
@@ -89,12 +89,14 @@ begin
89
89
  Factory
90
90
  HTTPAuthorizationHeader
91
91
  InnerHTML
92
+ Keystore
92
93
  LocationHash
93
94
  Log4J
94
95
  Logger
95
- Keystore
96
96
  OuterHTML
97
97
  Password
98
+ PHPInputMechanisms
99
+ PHPTypeJuggling
98
100
  PomVersion
99
101
  Port
100
102
  PrivateKey
@@ -109,6 +111,7 @@ begin
109
111
  ThrowErrors
110
112
  Token
111
113
  Version
114
+ WindowLocationHash
112
115
  ]
113
116
  end
114
117
 
@@ -0,0 +1,149 @@
1
+ # frozen_string_literal: false
2
+
3
+ require 'socket'
4
+
5
+ module PWN
6
+ module SAST
7
+ # SAST Module used to identify HTTP input
8
+ # mechanisms that exist in PHP code (e.g. $_REQUEST, $_GET, etc.)
9
+ module PHPInputMechanisms
10
+ @@logger = PWN::Plugins::PWNLogger.create
11
+
12
+ # Supported Method Parameters::
13
+ # PWN::SAST::PHPInputMechanisms.scan(
14
+ # dir_path: 'optional path to dir defaults to .'
15
+ # git_repo_root_uri: 'optional http uri of git repo scanned'
16
+ # )
17
+
18
+ public_class_method def self.scan(opts = {})
19
+ dir_path = opts[:dir_path]
20
+ git_repo_root_uri = opts[:git_repo_root_uri].to_s.scrub
21
+ result_arr = []
22
+ logger_results = ''
23
+
24
+ PWN::Plugins::FileFu.recurse_dir(dir_path: dir_path) do |entry|
25
+ if (File.file?(entry) && File.basename(entry) !~ /^pwn.+(html|json|db)$/ && File.basename(entry) !~ /\.JS-BEAUTIFIED$/) && File.extname(entry).include?('.php') && entry !~ /test/i
26
+ line_no_and_contents_arr = []
27
+ entry_beautified = false
28
+
29
+ if File.extname(entry) == '.js' && (`wc -l #{entry}`.split.first.to_i < 20 || entry.include?('.min.js') || entry.include?('-all.js'))
30
+ js_beautify = `js-beautify #{entry} > #{entry}.JS-BEAUTIFIED`.to_s.scrub
31
+ entry = "#{entry}.JS-BEAUTIFIED"
32
+ entry_beautified = true
33
+ end
34
+
35
+ test_case_filter = "
36
+ grep -Fn \
37
+ -e '$_COOKIE' \
38
+ -e '$_FILES' \
39
+ -e '$_GET' \
40
+ -e '$_POST' \
41
+ -e '$_REQUEST' \
42
+ -e '$_SERVER' \
43
+ -e '$_SESSION' #{entry}
44
+ "
45
+
46
+ str = `#{test_case_filter}`.to_s.scrub
47
+
48
+ if str.to_s.empty?
49
+ # If str length is >= 64 KB do not include results. (Due to Mongo Document Size Restrictions)
50
+ logger_results = "#{logger_results}~" # Catching bugs is good :)
51
+ else
52
+ str = "1:Result larger than 64KB -> Size: #{str.to_s.length}. Please click the \"Path\" link for more details." if str.to_s.length >= 64_000
53
+
54
+ hash_line = {
55
+ timestamp: Time.now.strftime('%Y-%m-%d %H:%M:%S.%9N %z').to_s,
56
+ security_references: security_references,
57
+ filename: { git_repo_root_uri: git_repo_root_uri, entry: entry },
58
+ line_no_and_contents: '',
59
+ raw_content: str,
60
+ test_case_filter: test_case_filter
61
+ }
62
+
63
+ # COMMMENT: Must be a better way to implement this (regex is kinda funky)
64
+ line_contents_split = str.split(/^(\d{1,}):|\n(\d{1,}):/)[1..-1]
65
+ line_no_count = line_contents_split.length # This should always be an even number
66
+ current_count = 0
67
+ while line_no_count > current_count
68
+ line_no = line_contents_split[current_count]
69
+ contents = line_contents_split[current_count + 1]
70
+ if Dir.exist?("#{dir_path}/.git") ||
71
+ Dir.exist?('.git')
72
+
73
+ repo_root = dir_path
74
+ repo_root = '.' if Dir.exist?('.git')
75
+
76
+ author = PWN::Plugins::Git.get_author(
77
+ repo_root: repo_root,
78
+ from_line: line_no,
79
+ to_line: line_no,
80
+ target_file: entry,
81
+ entry_beautified: entry_beautified
82
+ )
83
+ else
84
+ author = 'N/A'
85
+ end
86
+ hash_line[:line_no_and_contents] = line_no_and_contents_arr.push(
87
+ line_no: line_no,
88
+ contents: contents,
89
+ author: author
90
+ )
91
+
92
+ current_count += 2
93
+ end
94
+ result_arr.push(hash_line)
95
+ logger_results = "#{logger_results}x" # Seeing progress is good :)
96
+ end
97
+ end
98
+ end
99
+ logger_banner = "http://#{Socket.gethostname}:8808/doc_root/pwn-#{PWN::VERSION.to_s.scrub}/#{to_s.scrub.gsub('::', '/')}.html"
100
+ if logger_results.empty?
101
+ @@logger.info("#{logger_banner}: No files applicable to this test case.\n")
102
+ else
103
+ @@logger.info("#{logger_banner} => #{logger_results}complete.\n")
104
+ end
105
+ result_arr
106
+ rescue StandardError => e
107
+ raise e
108
+ end
109
+
110
+ # Used primarily to map NIST 800-53 Revision 4 Security Controls
111
+ # https://web.nvd.nist.gov/view/800-53/Rev4/impact?impactName=HIGH
112
+ # to PWN Exploit & Static Code Anti-Pattern Matching Modules to
113
+ # Determine the level of Testing Coverage w/ PWN.
114
+
115
+ public_class_method def self.security_references
116
+ {
117
+ sast_module: self,
118
+ section: 'DEVELOPER SECURITY AND PRIVACY ARCHITECTURE AND DESIGN',
119
+ nist_800_53_uri: 'https://csrc.nist.gov/Projects/risk-management/sp800-53-controls/release-search#/control/?version=5.1&number=SA-17',
120
+ cwe_id: '661',
121
+ cwe_uri: 'https://cwe.mitre.org/data/definitions/661.html'
122
+ }
123
+ rescue StandardError => e
124
+ raise e
125
+ end
126
+
127
+ # Author(s):: 0day Inc. <request.pentest@0dayinc.com>
128
+
129
+ public_class_method def self.authors
130
+ "AUTHOR(S):
131
+ 0day Inc. <request.pentest@0dayinc.com>
132
+ "
133
+ end
134
+
135
+ # Display Usage for this Module
136
+
137
+ public_class_method def self.help
138
+ puts "USAGE:
139
+ sast_arr = #{self}.scan(
140
+ :dir_path => 'optional path to dir defaults to .',
141
+ :git_repo_root_uri => 'optional http uri of git repo scanned'
142
+ )
143
+
144
+ #{self}.authors
145
+ "
146
+ end
147
+ end
148
+ end
149
+ end
@@ -0,0 +1,144 @@
1
+ # frozen_string_literal: false
2
+
3
+ require 'socket'
4
+
5
+ module PWN
6
+ module SAST
7
+ # SAST Module used to identify loose comparisons
8
+ # (i.e. == instead of ===) within PHP source code.
9
+ module PHPTypeJuggling
10
+ @@logger = PWN::Plugins::PWNLogger.create
11
+
12
+ # Supported Method Parameters::
13
+ # PWN::SAST::PHPTypeJuggling.scan(
14
+ # dir_path: 'optional path to dir defaults to .'
15
+ # git_repo_root_uri: 'optional http uri of git repo scanned'
16
+ # )
17
+
18
+ public_class_method def self.scan(opts = {})
19
+ dir_path = opts[:dir_path]
20
+ git_repo_root_uri = opts[:git_repo_root_uri].to_s.scrub
21
+ result_arr = []
22
+ logger_results = ''
23
+
24
+ PWN::Plugins::FileFu.recurse_dir(dir_path: dir_path) do |entry|
25
+ if (File.file?(entry) && File.basename(entry) !~ /^pwn.+(html|json|db)$/ && File.basename(entry) !~ /\.JS-BEAUTIFIED$/) && File.extname(entry).include?('.php') && entry !~ /test/i
26
+ line_no_and_contents_arr = []
27
+ entry_beautified = false
28
+
29
+ if File.extname(entry) == '.js' && (`wc -l #{entry}`.split.first.to_i < 20 || entry.include?('.min.js') || entry.include?('-all.js'))
30
+ js_beautify = `js-beautify #{entry} > #{entry}.JS-BEAUTIFIED`.to_s.scrub
31
+ entry = "#{entry}.JS-BEAUTIFIED"
32
+ entry_beautified = true
33
+ end
34
+
35
+ test_case_filter = "
36
+ grep -Fn \
37
+ -e '==' #{entry} \ |
38
+ grep -v '==='
39
+ "
40
+
41
+ str = `#{test_case_filter}`.to_s.scrub
42
+
43
+ if str.to_s.empty?
44
+ # If str length is >= 64 KB do not include results. (Due to Mongo Document Size Restrictions)
45
+ logger_results = "#{logger_results}~" # Catching bugs is good :)
46
+ else
47
+ str = "1:Result larger than 64KB -> Size: #{str.to_s.length}. Please click the \"Path\" link for more details." if str.to_s.length >= 64_000
48
+
49
+ hash_line = {
50
+ timestamp: Time.now.strftime('%Y-%m-%d %H:%M:%S.%9N %z').to_s,
51
+ security_references: security_references,
52
+ filename: { git_repo_root_uri: git_repo_root_uri, entry: entry },
53
+ line_no_and_contents: '',
54
+ raw_content: str,
55
+ test_case_filter: test_case_filter
56
+ }
57
+
58
+ # COMMMENT: Must be a better way to implement this (regex is kinda funky)
59
+ line_contents_split = str.split(/^(\d{1,}):|\n(\d{1,}):/)[1..-1]
60
+ line_no_count = line_contents_split.length # This should always be an even number
61
+ current_count = 0
62
+ while line_no_count > current_count
63
+ line_no = line_contents_split[current_count]
64
+ contents = line_contents_split[current_count + 1]
65
+ if Dir.exist?("#{dir_path}/.git") ||
66
+ Dir.exist?('.git')
67
+
68
+ repo_root = dir_path
69
+ repo_root = '.' if Dir.exist?('.git')
70
+
71
+ author = PWN::Plugins::Git.get_author(
72
+ repo_root: repo_root,
73
+ from_line: line_no,
74
+ to_line: line_no,
75
+ target_file: entry,
76
+ entry_beautified: entry_beautified
77
+ )
78
+ else
79
+ author = 'N/A'
80
+ end
81
+ hash_line[:line_no_and_contents] = line_no_and_contents_arr.push(
82
+ line_no: line_no,
83
+ contents: contents,
84
+ author: author
85
+ )
86
+
87
+ current_count += 2
88
+ end
89
+ result_arr.push(hash_line)
90
+ logger_results = "#{logger_results}x" # Seeing progress is good :)
91
+ end
92
+ end
93
+ end
94
+ logger_banner = "http://#{Socket.gethostname}:8808/doc_root/pwn-#{PWN::VERSION.to_s.scrub}/#{to_s.scrub.gsub('::', '/')}.html"
95
+ if logger_results.empty?
96
+ @@logger.info("#{logger_banner}: No files applicable to this test case.\n")
97
+ else
98
+ @@logger.info("#{logger_banner} => #{logger_results}complete.\n")
99
+ end
100
+ result_arr
101
+ rescue StandardError => e
102
+ raise e
103
+ end
104
+
105
+ # Used primarily to map NIST 800-53 Revision 4 Security Controls
106
+ # https://web.nvd.nist.gov/view/800-53/Rev4/impact?impactName=HIGH
107
+ # to PWN Exploit & Static Code Anti-Pattern Matching Modules to
108
+ # Determine the level of Testing Coverage w/ PWN.
109
+
110
+ public_class_method def self.security_references
111
+ {
112
+ sast_module: self,
113
+ section: 'DEVELOPER SECURITY AND PRIVACY ARCHITECTURE AND DESIGN',
114
+ nist_800_53_uri: 'https://csrc.nist.gov/Projects/risk-management/sp800-53-controls/release-search#/control/?version=5.1&number=SA-17',
115
+ cwe_id: '661',
116
+ cwe_uri: 'https://cwe.mitre.org/data/definitions/661.html'
117
+ }
118
+ rescue StandardError => e
119
+ raise e
120
+ end
121
+
122
+ # Author(s):: 0day Inc. <request.pentest@0dayinc.com>
123
+
124
+ public_class_method def self.authors
125
+ "AUTHOR(S):
126
+ 0day Inc. <request.pentest@0dayinc.com>
127
+ "
128
+ end
129
+
130
+ # Display Usage for this Module
131
+
132
+ public_class_method def self.help
133
+ puts "USAGE:
134
+ sast_arr = #{self}.scan(
135
+ :dir_path => 'optional path to dir defaults to .',
136
+ :git_repo_root_uri => 'optional http uri of git repo scanned'
137
+ )
138
+
139
+ #{self}.authors
140
+ "
141
+ end
142
+ end
143
+ end
144
+ end
data/lib/pwn/sast.rb CHANGED
@@ -29,6 +29,8 @@ module PWN
29
29
  autoload :Logger, 'pwn/sast/logger'
30
30
  autoload :OuterHTML, 'pwn/sast/outer_html'
31
31
  autoload :Password, 'pwn/sast/password'
32
+ autoload :PHPInputMechanisms, 'pwn/sast/php_input_mechanisms'
33
+ autoload :PHPTypeJuggling, 'pwn/sast/php_type_juggling'
32
34
  autoload :PomVersion, 'pwn/sast/pom_version'
33
35
  autoload :Port, 'pwn/sast/port'
34
36
  autoload :PrivateKey, 'pwn/sast/private_key'
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.540'
4
+ VERSION = '0.4.543'
5
5
  end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ describe PWN::SAST::PHPInputMechanisms do
6
+ it 'scan method should exist' do
7
+ scan_response = PWN::SAST::PHPInputMechanisms
8
+ expect(scan_response).to respond_to :scan
9
+ end
10
+
11
+ it 'should display information for security_references' do
12
+ security_references_response = PWN::SAST::PHPInputMechanisms
13
+ expect(security_references_response).to respond_to :security_references
14
+ end
15
+
16
+ it 'should display information for authors' do
17
+ authors_response = PWN::SAST::PHPInputMechanisms
18
+ expect(authors_response).to respond_to :authors
19
+ end
20
+
21
+ it 'should display information for existing help method' do
22
+ help_response = PWN::SAST::PHPInputMechanisms
23
+ expect(help_response).to respond_to :help
24
+ end
25
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ describe PWN::SAST::PHPTypeJuggling do
6
+ it 'scan method should exist' do
7
+ scan_response = PWN::SAST::PHPTypeJuggling
8
+ expect(scan_response).to respond_to :scan
9
+ end
10
+
11
+ it 'should display information for security_references' do
12
+ security_references_response = PWN::SAST::PHPTypeJuggling
13
+ expect(security_references_response).to respond_to :security_references
14
+ end
15
+
16
+ it 'should display information for authors' do
17
+ authors_response = PWN::SAST::PHPTypeJuggling
18
+ expect(authors_response).to respond_to :authors
19
+ end
20
+
21
+ it 'should display information for existing help method' do
22
+ help_response = PWN::SAST::PHPTypeJuggling
23
+ expect(help_response).to respond_to :help
24
+ end
25
+ 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.540
4
+ version: 0.4.543
5
5
  platform: ruby
6
6
  authors:
7
7
  - 0day Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-08-30 00:00:00.000000000 Z
11
+ date: 2022-09-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 7.0.3.1
19
+ version: 7.0.4
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: 7.0.3.1
26
+ version: 7.0.4
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: anemone
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -114,14 +114,14 @@ dependencies:
114
114
  requirements:
115
115
  - - ">="
116
116
  - !ruby/object:Gem::Version
117
- version: 2.3.21
117
+ version: 2.3.22
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - ">="
123
123
  - !ruby/object:Gem::Version
124
- version: 2.3.21
124
+ version: 2.3.22
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: bundler-audit
127
127
  requirement: !ruby/object:Gem::Requirement
@@ -170,14 +170,14 @@ dependencies:
170
170
  requirements:
171
171
  - - '='
172
172
  - !ruby/object:Gem::Version
173
- version: 5.0.0
173
+ version: 6.0.0
174
174
  type: :runtime
175
175
  prerelease: false
176
176
  version_requirements: !ruby/object:Gem::Requirement
177
177
  requirements:
178
178
  - - '='
179
179
  - !ruby/object:Gem::Version
180
- version: 5.0.0
180
+ version: 6.0.0
181
181
  - !ruby/object:Gem::Dependency
182
182
  name: eventmachine
183
183
  requirement: !ruby/object:Gem::Requirement
@@ -688,14 +688,14 @@ dependencies:
688
688
  requirements:
689
689
  - - '='
690
690
  - !ruby/object:Gem::Version
691
- version: 1.35.1
691
+ version: 1.36.0
692
692
  type: :runtime
693
693
  prerelease: false
694
694
  version_requirements: !ruby/object:Gem::Requirement
695
695
  requirements:
696
696
  - - '='
697
697
  - !ruby/object:Gem::Version
698
- version: 1.35.1
698
+ version: 1.36.0
699
699
  - !ruby/object:Gem::Dependency
700
700
  name: rubocop-rake
701
701
  requirement: !ruby/object:Gem::Requirement
@@ -716,14 +716,14 @@ dependencies:
716
716
  requirements:
717
717
  - - '='
718
718
  - !ruby/object:Gem::Version
719
- version: 2.12.1
719
+ version: 2.13.1
720
720
  type: :runtime
721
721
  prerelease: false
722
722
  version_requirements: !ruby/object:Gem::Requirement
723
723
  requirements:
724
724
  - - '='
725
725
  - !ruby/object:Gem::Version
726
- version: 2.12.1
726
+ version: 2.13.1
727
727
  - !ruby/object:Gem::Dependency
728
728
  name: ruby-audio
729
729
  requirement: !ruby/object:Gem::Requirement
@@ -786,28 +786,28 @@ dependencies:
786
786
  requirements:
787
787
  - - '='
788
788
  - !ruby/object:Gem::Version
789
- version: 2.13.0
789
+ version: 2.13.1
790
790
  type: :runtime
791
791
  prerelease: false
792
792
  version_requirements: !ruby/object:Gem::Requirement
793
793
  requirements:
794
794
  - - '='
795
795
  - !ruby/object:Gem::Version
796
- version: 2.13.0
796
+ version: 2.13.1
797
797
  - !ruby/object:Gem::Dependency
798
798
  name: selenium-devtools
799
799
  requirement: !ruby/object:Gem::Requirement
800
800
  requirements:
801
801
  - - '='
802
802
  - !ruby/object:Gem::Version
803
- version: 0.104.0
803
+ version: 0.105.0
804
804
  type: :runtime
805
805
  prerelease: false
806
806
  version_requirements: !ruby/object:Gem::Requirement
807
807
  requirements:
808
808
  - - '='
809
809
  - !ruby/object:Gem::Version
810
- version: 0.104.0
810
+ version: 0.105.0
811
811
  - !ruby/object:Gem::Dependency
812
812
  name: serialport
813
813
  requirement: !ruby/object:Gem::Requirement
@@ -884,14 +884,14 @@ dependencies:
884
884
  requirements:
885
885
  - - '='
886
886
  - !ruby/object:Gem::Version
887
- version: 1.4.4
887
+ version: 1.5.0
888
888
  type: :runtime
889
889
  prerelease: false
890
890
  version_requirements: !ruby/object:Gem::Requirement
891
891
  requirements:
892
892
  - - '='
893
893
  - !ruby/object:Gem::Version
894
- version: 1.4.4
894
+ version: 1.5.0
895
895
  - !ruby/object:Gem::Dependency
896
896
  name: thin
897
897
  requirement: !ruby/object:Gem::Requirement
@@ -982,14 +982,14 @@ dependencies:
982
982
  requirements:
983
983
  - - '='
984
984
  - !ruby/object:Gem::Version
985
- version: 1.2.0
985
+ version: 2.0.0
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.2.0
992
+ version: 2.0.0
993
993
  - !ruby/object:Gem::Dependency
994
994
  name: wicked_pdf
995
995
  requirement: !ruby/object:Gem::Requirement
@@ -1641,6 +1641,8 @@ files:
1641
1641
  - lib/pwn/sast/logger.rb
1642
1642
  - lib/pwn/sast/outer_html.rb
1643
1643
  - lib/pwn/sast/password.rb
1644
+ - lib/pwn/sast/php_input_mechanisms.rb
1645
+ - lib/pwn/sast/php_type_juggling.rb
1644
1646
  - lib/pwn/sast/pom_version.rb
1645
1647
  - lib/pwn/sast/port.rb
1646
1648
  - lib/pwn/sast/private_key.rb
@@ -1938,6 +1940,8 @@ files:
1938
1940
  - spec/lib/pwn/sast/log4j_spec.rb
1939
1941
  - spec/lib/pwn/sast/logger_spec.rb
1940
1942
  - spec/lib/pwn/sast/password_spec.rb
1943
+ - spec/lib/pwn/sast/php_input_mechanisms_spec.rb
1944
+ - spec/lib/pwn/sast/php_type_juggling_spec.rb
1941
1945
  - spec/lib/pwn/sast/pom_version_spec.rb
1942
1946
  - spec/lib/pwn/sast/port_spec.rb
1943
1947
  - spec/lib/pwn/sast/private_key_spec.rb
@@ -2028,7 +2032,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
2028
2032
  - !ruby/object:Gem::Version
2029
2033
  version: '0'
2030
2034
  requirements: []
2031
- rubygems_version: 3.3.21
2035
+ rubygems_version: 3.3.22
2032
2036
  signing_key:
2033
2037
  specification_version: 4
2034
2038
  summary: Automated Security Testing for CI/CD Pipelines & Beyond