pwn 0.4.414 → 0.4.415

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: 7fb462955a6182ce0079d75733ab41f39ec0919bd42f2801022453a7d18e5794
4
- data.tar.gz: 6f37f2b2aaae0dd1950febd4c28234d155f120a9def746cf4d5d35fe08a44680
3
+ metadata.gz: 61670e1dd6c986c619918f5f97abefcde8593af1cb34c1cbe8089c9102a57346
4
+ data.tar.gz: 0a4daaa0f3b6a3790886adc5863f59084359b7efdd9e642f13739b5674783a54
5
5
  SHA512:
6
- metadata.gz: 13d72a02777d25615116e23656a746827892c449c2f73741c9904fc93aab73173c5a080d3f609841ad391c3eff4db2f1624bbc45a84e1bc364b13e729d8147e2
7
- data.tar.gz: 825ee7cba89d734ecb80661a3b0a0bc3f10bb66c729df66b57ccaa203985e05afc6254ff61bbae45ae6bc562c031943483df866e74dbbabec38a10316808580c
6
+ metadata.gz: a47ee10adfd7d9f236f4c51c58ba4bd5505aa0df21a37966427731d6a743e4fa3e31122290acad1d9c5adb25034c2876c6fc1c6ff26317d4617ad22ca78dfbc5
7
+ data.tar.gz: 5cd9ebf6af0386fbfae0a776481c990e1ec28b9253ac8f6683b070452e7abd9de38fbc4bbb902241310b349c9181b6dd142e1f1e0b1b49b3f88a92834967f75e
data/Gemfile CHANGED
@@ -32,7 +32,7 @@ gem 'ipaddress', '0.8.3'
32
32
  # gem 'jenkins_api_client', '1.5.3' # Temporarily disabled until arangamani/jenkins_api_client/issues/304 is Closed out
33
33
  gem 'js-beautify', '0.1.8'
34
34
  gem 'json', '2.6.1'
35
- gem 'jsonpath', '1.1.0'
35
+ gem 'jsonpath', '1.1.2'
36
36
  gem 'jwt', '2.3.0'
37
37
  gem 'luhn', '1.0.2'
38
38
  gem 'mail', '2.7.1'
@@ -59,7 +59,7 @@ gem 'rex', '2.0.13'
59
59
  gem 'rmagick', '4.2.5'
60
60
  gem 'rspec', '3.11.0'
61
61
  gem 'rtesseract', '3.1.2'
62
- gem 'rubocop', '1.28.1'
62
+ gem 'rubocop', '1.28.2'
63
63
  gem 'rubocop-rake', '0.6.0'
64
64
  gem 'rubocop-rspec', '2.10.0'
65
65
  gem 'ruby-audio', '1.6.1'
@@ -79,5 +79,5 @@ gem 'tty-prompt', '0.23.1'
79
79
  gem 'watir', '7.1.0'
80
80
  gem 'waveform', '0.1.2'
81
81
  gem 'webrick', '1.7.0'
82
- gem 'wicked_pdf', '2.1.0'
82
+ gem 'wicked_pdf', '2.6.0'
83
83
  gem 'yard', '0.9.27'
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.414]:001 >>> PWN.help
40
+ pwn[v0.4.415]: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.414]:001 >>> PWN.help
55
+ pwn[v0.4.415]:001 >>> PWN.help
56
56
  ```
57
57
 
58
58
 
data/bin/pwn_sast CHANGED
@@ -95,6 +95,7 @@ begin
95
95
  Redirect
96
96
  ReDOS
97
97
  Shell
98
+ Signature
98
99
  SQL
99
100
  SSL
100
101
  Sudo
@@ -1,5 +1,10 @@
1
1
  #!/bin/bash --login
2
- if [[ $1 != "" && $2 != "" && $3 != "" ]]; then
2
+ usage() {
3
+ echo "USAGE: ${0} '<full name>' <email address> '<git commit comments>'"
4
+ exit 1
5
+ }
6
+
7
+ if (( $# == 3 )); then
3
8
  # Default Strategy is to merge codebase
4
9
  git config pull.rebase false
5
10
  git config commit.gpgsign true
@@ -18,5 +23,5 @@ if [[ $1 != "" && $2 != "" && $3 != "" ]]; then
18
23
  git tag $this_version
19
24
  fi
20
25
  else
21
- echo "USAGE: ${0} '<full name>' <email address> '<git commit comments>'"
26
+ usage
22
27
  fi
@@ -0,0 +1,140 @@
1
+ # frozen_string_literal: false
2
+
3
+ require 'socket'
4
+
5
+ module PWN
6
+ module SAST
7
+ # SAST Module used to identify private keys used for authenticating
8
+ # with remote hosts.
9
+ module Signature
10
+ @@logger = PWN::Plugins::PWNLogger.create
11
+
12
+ # Supported Method Parameters::
13
+ # PWN::SAST::Signature(
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$/
26
+ line_no_and_contents_arr = []
27
+ filename_arr = []
28
+ entry_beautified = false
29
+
30
+ if File.extname(entry) == '.js' && (`wc -l #{entry}`.split.first.to_i < 20 || entry.include?('.min.js') || entry.include?('-all.js'))
31
+ js_beautify = `js-beautify #{entry} > #{entry}.JS-BEAUTIFIED`.to_s.scrub
32
+ entry = "#{entry}.JS-BEAUTIFIED"
33
+ entry_beautified = true
34
+ end
35
+
36
+ test_case_filter = "
37
+ grep -n \
38
+ -e 'Signature' #{entry}
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
+ test_case: nist_800_53_requirements,
52
+ filename: filename_arr.push(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(line_no: line_no,
82
+ contents: contents,
83
+ author: author)
84
+
85
+ current_count += 2
86
+ end
87
+ result_arr.push(hash_line)
88
+ logger_results = "#{logger_results}x" # Seeing progress is good :)
89
+ end
90
+ end
91
+ end
92
+ logger_banner = "http://#{Socket.gethostname}:8808/doc_root/pwn-#{PWN::VERSION.to_s.scrub}/#{to_s.scrub.gsub('::', '/')}.html"
93
+ if logger_results.empty?
94
+ @@logger.info("#{logger_banner}: No files applicable to this test case.\n")
95
+ else
96
+ @@logger.info("#{logger_banner} => #{logger_results}complete.\n")
97
+ end
98
+ result_arr
99
+ rescue StandardError => e
100
+ raise e
101
+ end
102
+
103
+ # Used primarily to map NIST 800-53 Revision 4 Security Controls
104
+ # https://web.nvd.nist.gov/view/800-53/Rev4/impact?impactName=HIGH
105
+ # to PWN Exploit & Static Code Anti-Pattern Matching Modules to
106
+ # Determine the level of Testing Coverage w/ PWN.
107
+
108
+ public_class_method def self.nist_800_53_requirements
109
+ {
110
+ sast_module: self,
111
+ section: 'CRYPTOGRAPHIC MODULE AUTHENTICATION',
112
+ nist_800_53_uri: 'https://csrc.nist.gov/Projects/risk-management/sp800-53-controls/release-search#/control/?version=5.1&number=IA-7'
113
+ }
114
+ rescue StandardError => e
115
+ raise e
116
+ end
117
+
118
+ # Author(s):: 0day Inc. <request.pentest@0dayinc.com>
119
+
120
+ public_class_method def self.authors
121
+ "AUTHOR(S):
122
+ 0day Inc. <request.pentest@0dayinc.com>
123
+ "
124
+ end
125
+
126
+ # Display Usage for this Module
127
+
128
+ public_class_method def self.help
129
+ puts "USAGE:
130
+ sast_arr = #{self}.scan(
131
+ dir_path: 'optional path to dir defaults to .',
132
+ git_repo_root_uri: 'optional http uri of git repo scanned'
133
+ )
134
+
135
+ #{self}.authors
136
+ "
137
+ end
138
+ end
139
+ end
140
+ end
data/lib/pwn/sast.rb CHANGED
@@ -36,6 +36,7 @@ module PWN
36
36
  autoload :Redirect, 'pwn/sast/redirect'
37
37
  autoload :ReDOS, 'pwn/sast/redos'
38
38
  autoload :Shell, 'pwn/sast/shell'
39
+ autoload :Signature, 'pwn/sast/signature'
39
40
  autoload :SQL, 'pwn/sast/sql'
40
41
  autoload :SSL, 'pwn/sast/ssl'
41
42
  autoload :Sudo, 'pwn/sast/sudo'
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.414'
4
+ VERSION = '0.4.415'
5
5
  end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ describe PWN::SAST::Signature do
6
+ it 'scan method should exist' do
7
+ scan_response = PWN::SAST::Signature
8
+ expect(scan_response).to respond_to :scan
9
+ end
10
+
11
+ it 'should display information for nist_800_53_requirements' do
12
+ nist_800_53_requirements_response = PWN::SAST::Signature
13
+ expect(nist_800_53_requirements_response).to respond_to :nist_800_53_requirements
14
+ end
15
+
16
+ it 'should display information for authors' do
17
+ authors_response = PWN::SAST::Signature
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::Signature
23
+ expect(help_response).to respond_to :help
24
+ end
25
+ end
data/update_pwn.sh CHANGED
@@ -5,7 +5,5 @@ else
5
5
  pwn_root="${PWN_ROOT}"
6
6
  fi
7
7
 
8
- #sudo /bin/bash --login -c "cd ${pwn_root} && ./reinstall_pwn_gemset.sh"
9
- #sudo /bin/bash --login -c "cd ${pwn_root} && ./build_pwn_gem.sh"
10
8
  export rvmsudo_secure_path=1
11
9
  rvmsudo /bin/bash --login -c "cd ${pwn_root} && ./build_pwn_gem.sh"
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.414
4
+ version: 0.4.415
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-04-22 00:00:00.000000000 Z
11
+ date: 2022-04-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -296,14 +296,14 @@ dependencies:
296
296
  requirements:
297
297
  - - '='
298
298
  - !ruby/object:Gem::Version
299
- version: 1.1.0
299
+ version: 1.1.2
300
300
  type: :runtime
301
301
  prerelease: false
302
302
  version_requirements: !ruby/object:Gem::Requirement
303
303
  requirements:
304
304
  - - '='
305
305
  - !ruby/object:Gem::Version
306
- version: 1.1.0
306
+ version: 1.1.2
307
307
  - !ruby/object:Gem::Dependency
308
308
  name: jwt
309
309
  requirement: !ruby/object:Gem::Requirement
@@ -674,14 +674,14 @@ dependencies:
674
674
  requirements:
675
675
  - - '='
676
676
  - !ruby/object:Gem::Version
677
- version: 1.28.1
677
+ version: 1.28.2
678
678
  type: :runtime
679
679
  prerelease: false
680
680
  version_requirements: !ruby/object:Gem::Requirement
681
681
  requirements:
682
682
  - - '='
683
683
  - !ruby/object:Gem::Version
684
- version: 1.28.1
684
+ version: 1.28.2
685
685
  - !ruby/object:Gem::Dependency
686
686
  name: rubocop-rake
687
687
  requirement: !ruby/object:Gem::Requirement
@@ -954,14 +954,14 @@ dependencies:
954
954
  requirements:
955
955
  - - '='
956
956
  - !ruby/object:Gem::Version
957
- version: 2.1.0
957
+ version: 2.6.0
958
958
  type: :runtime
959
959
  prerelease: false
960
960
  version_requirements: !ruby/object:Gem::Requirement
961
961
  requirements:
962
962
  - - '='
963
963
  - !ruby/object:Gem::Version
964
- version: 2.1.0
964
+ version: 2.6.0
965
965
  - !ruby/object:Gem::Dependency
966
966
  name: yard
967
967
  requirement: !ruby/object:Gem::Requirement
@@ -1588,6 +1588,7 @@ files:
1588
1588
  - lib/pwn/sast/redirect.rb
1589
1589
  - lib/pwn/sast/redos.rb
1590
1590
  - lib/pwn/sast/shell.rb
1591
+ - lib/pwn/sast/signature.rb
1591
1592
  - lib/pwn/sast/sql.rb
1592
1593
  - lib/pwn/sast/ssl.rb
1593
1594
  - lib/pwn/sast/sudo.rb
@@ -1881,6 +1882,7 @@ files:
1881
1882
  - spec/lib/pwn/sast/redirect_spec.rb
1882
1883
  - spec/lib/pwn/sast/redos_spec.rb
1883
1884
  - spec/lib/pwn/sast/shell_spec.rb
1885
+ - spec/lib/pwn/sast/signature_spec.rb
1884
1886
  - spec/lib/pwn/sast/sql_spec.rb
1885
1887
  - spec/lib/pwn/sast/ssl_spec.rb
1886
1888
  - spec/lib/pwn/sast/sudo_spec.rb
@@ -2149,6 +2151,7 @@ test_files:
2149
2151
  - spec/lib/pwn/sast/redirect_spec.rb
2150
2152
  - spec/lib/pwn/sast/redos_spec.rb
2151
2153
  - spec/lib/pwn/sast/shell_spec.rb
2154
+ - spec/lib/pwn/sast/signature_spec.rb
2152
2155
  - spec/lib/pwn/sast/sql_spec.rb
2153
2156
  - spec/lib/pwn/sast/ssl_spec.rb
2154
2157
  - spec/lib/pwn/sast/sudo_spec.rb