pwn 0.4.540 → 0.4.543

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: 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