pwn 0.4.803 → 0.4.805
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 +4 -4
- data/Gemfile +9 -9
- data/README.md +2 -2
- data/bin/pwn_bdba_groups +22 -5
- data/bin/pwn_bdba_scan +12 -15
- data/lib/pwn/version.rb +1 -1
- metadata +21 -21
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: df24a7741ae10182398e97d2c9246f610c2a34b0fc49937302639e3b7841f2be
|
|
4
|
+
data.tar.gz: 046ff60cd9d8ac8e71e463104a8c26399d1fb7efacae051bd57ff61a6e063b57
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 2450129fc4ade765a470e1493c707b21b518f546db44989b633377f0e3f114047a1b964a6bdcd27805c0d54c754ebfb8e0018b70289604ed27cb4cd0c967ba2b
|
|
7
|
+
data.tar.gz: a94197fa28bee16dafe03e13695f00c12e62ca7ef48e5718dbab1ff3a0da9d626f426532032da368f9a46d34e59a7dc8669bb165a36b845a07317880ddfe4da3
|
data/Gemfile
CHANGED
|
@@ -16,16 +16,16 @@ 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
|
-
gem 'brakeman', '6.0.
|
|
19
|
+
gem 'brakeman', '6.0.1'
|
|
20
20
|
gem 'bson', '4.15.0'
|
|
21
|
-
gem 'bundler', '>=2.4.
|
|
21
|
+
gem 'bundler', '>=2.4.18'
|
|
22
22
|
gem 'bundler-audit', '0.9.1'
|
|
23
23
|
gem 'bunny', '2.22.0'
|
|
24
24
|
gem 'colorize', '1.1.0'
|
|
25
25
|
gem 'credit_card_validations', '6.0.0'
|
|
26
26
|
gem 'eventmachine', '1.2.7'
|
|
27
27
|
gem 'executable-hooks', '1.6.1'
|
|
28
|
-
gem 'faye-websocket', '0.11.
|
|
28
|
+
gem 'faye-websocket', '0.11.3'
|
|
29
29
|
gem 'ffi', '1.15.5'
|
|
30
30
|
gem 'fftw3', '0.3'
|
|
31
31
|
gem 'gdb', '1.0.0'
|
|
@@ -40,7 +40,7 @@ gem 'jsonpath', '1.1.3'
|
|
|
40
40
|
gem 'jwt', '2.7.1'
|
|
41
41
|
gem 'luhn', '1.0.2'
|
|
42
42
|
gem 'mail', '2.8.1'
|
|
43
|
-
gem 'mongo', '2.19.
|
|
43
|
+
gem 'mongo', '2.19.1'
|
|
44
44
|
gem 'msfrpc-client', '1.1.2'
|
|
45
45
|
gem 'neovim', '0.9.0'
|
|
46
46
|
gem 'netaddr', '2.0.6'
|
|
@@ -64,18 +64,18 @@ gem 'rbvmomi', '3.0.0'
|
|
|
64
64
|
gem 'rdoc', '6.5.0'
|
|
65
65
|
gem 'rest-client', '2.1.0'
|
|
66
66
|
gem 'rex', '2.0.13'
|
|
67
|
-
gem 'rmagick', '5.
|
|
67
|
+
gem 'rmagick', '5.3.0'
|
|
68
68
|
gem 'rspec', '3.12.0'
|
|
69
69
|
gem 'rtesseract', '3.1.2'
|
|
70
|
-
gem 'rubocop', '1.
|
|
70
|
+
gem 'rubocop', '1.55.1'
|
|
71
71
|
gem 'rubocop-rake', '0.6.0'
|
|
72
|
-
gem 'rubocop-rspec', '2.
|
|
72
|
+
gem 'rubocop-rspec', '2.23.0'
|
|
73
73
|
gem 'ruby-audio', '1.6.1'
|
|
74
74
|
gem 'ruby-nmap', '1.0.1'
|
|
75
75
|
gem 'ruby-saml', '1.15.0'
|
|
76
76
|
gem 'rvm', '1.11.3.9'
|
|
77
77
|
gem 'savon', '2.14.0'
|
|
78
|
-
gem 'selenium-devtools', '0.
|
|
78
|
+
gem 'selenium-devtools', '0.115.0'
|
|
79
79
|
gem 'serialport', '1.3.2'
|
|
80
80
|
gem 'sinatra', '3.0.6'
|
|
81
81
|
gem 'slack-ruby-client', '2.1.0'
|
|
@@ -85,7 +85,7 @@ gem 'sqlite3', '1.6.3'
|
|
|
85
85
|
gem 'thin', '1.8.2'
|
|
86
86
|
gem 'tty-prompt', '0.23.1'
|
|
87
87
|
gem 'tty-spinner', '0.9.3'
|
|
88
|
-
gem 'watir', '7.
|
|
88
|
+
gem 'watir', '7.3.0'
|
|
89
89
|
gem 'waveform', '0.1.3'
|
|
90
90
|
gem 'webrick', '1.8.1'
|
|
91
91
|
gem 'whois', '5.1.0'
|
data/README.md
CHANGED
|
@@ -37,7 +37,7 @@ $ rvm use ruby-3.2.2@pwn
|
|
|
37
37
|
$ rvm list gemsets
|
|
38
38
|
$ gem install --verbose pwn
|
|
39
39
|
$ pwn
|
|
40
|
-
pwn[v0.4.
|
|
40
|
+
pwn[v0.4.805]:001 >>> PWN.help
|
|
41
41
|
```
|
|
42
42
|
|
|
43
43
|
[](https://youtu.be/G7iLUY4FzsI)
|
|
@@ -52,7 +52,7 @@ $ rvm use ruby-3.2.2@pwn
|
|
|
52
52
|
$ gem uninstall --all --executables pwn
|
|
53
53
|
$ gem install --verbose pwn
|
|
54
54
|
$ pwn
|
|
55
|
-
pwn[v0.4.
|
|
55
|
+
pwn[v0.4.805]:001 >>> PWN.help
|
|
56
56
|
```
|
|
57
57
|
|
|
58
58
|
|
data/bin/pwn_bdba_groups
CHANGED
|
@@ -15,7 +15,7 @@ OptionParser.new do |options|
|
|
|
15
15
|
opts[:config] = c
|
|
16
16
|
end
|
|
17
17
|
|
|
18
|
-
options.on('-CGROUP', '--create=GROUP', '<
|
|
18
|
+
options.on('-CGROUP', '--create=GROUP', '<Optional - Group/Sub-Group to Create>') do |g|
|
|
19
19
|
opts[:group_name] = g
|
|
20
20
|
end
|
|
21
21
|
|
|
@@ -60,14 +60,29 @@ begin
|
|
|
60
60
|
list_or_parent = parent_group_name unless parent_group_name.nil?
|
|
61
61
|
|
|
62
62
|
group_arr = groups_resp[:groups].select { |g| g[:name] == list_or_parent }
|
|
63
|
-
group_arr_sorted = group_arr.sort_by { |g| g[:id] }
|
|
64
|
-
group = group_arr_sorted.last
|
|
65
63
|
|
|
66
|
-
if list_group_name &&
|
|
64
|
+
if list_group_name && group_arr.empty?
|
|
67
65
|
puts 'BDBA Group Not Found.'
|
|
68
66
|
exit 1
|
|
69
67
|
end
|
|
70
68
|
|
|
69
|
+
group_arr_sorted = group_arr.sort_by { |g| g[:id] }
|
|
70
|
+
if group_arr_sorted.length > 1
|
|
71
|
+
dup_groups_arr = []
|
|
72
|
+
group_arr_sorted.each do |group|
|
|
73
|
+
this_group_id = group[:id]
|
|
74
|
+
this_group_details = PWN::Plugins::BlackDuckBinaryAnalysis.get_group_details(
|
|
75
|
+
token: token,
|
|
76
|
+
group_id: this_group_id
|
|
77
|
+
)
|
|
78
|
+
dup_groups_arr.push(this_group_details[:group])
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
puts "ERROR: Multiple BDBA Groups Found:\n#{dup_groups_arr}"
|
|
82
|
+
exit 1
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
group = group_arr_sorted.last
|
|
71
86
|
parent_id = group[:id]
|
|
72
87
|
|
|
73
88
|
if list_group_name
|
|
@@ -84,11 +99,13 @@ begin
|
|
|
84
99
|
group_name = opts[:group_name]
|
|
85
100
|
raise "ERROR: BDBA Group Name Not Provided: #{group_name}" if group_name.nil?
|
|
86
101
|
|
|
87
|
-
PWN::Plugins::BlackDuckBinaryAnalysis.create_group(
|
|
102
|
+
create_group_resp = PWN::Plugins::BlackDuckBinaryAnalysis.create_group(
|
|
88
103
|
token: token,
|
|
89
104
|
name: group_name,
|
|
90
105
|
parent_id: parent_id
|
|
91
106
|
)
|
|
107
|
+
|
|
108
|
+
puts create_group_resp.to_json
|
|
92
109
|
rescue SystemExit, Interrupt
|
|
93
110
|
puts "\nGoodbye."
|
|
94
111
|
rescue StandardError => e
|
data/bin/pwn_bdba_scan
CHANGED
|
@@ -16,8 +16,8 @@ OptionParser.new do |options|
|
|
|
16
16
|
opts[:config] = g
|
|
17
17
|
end
|
|
18
18
|
|
|
19
|
-
options.on('-
|
|
20
|
-
opts[:
|
|
19
|
+
options.on('-pID', '--parent-group-id=ID', '<Required - Black Duck Binary Analysis Parent Group ID to Associate with Binary Scan>') do |p|
|
|
20
|
+
opts[:parent_group_id] = p
|
|
21
21
|
end
|
|
22
22
|
|
|
23
23
|
options.on('-sFILE', '--scan=FILE', '<Required - File to Scan in Black Duck Binary Analysis>') do |f|
|
|
@@ -35,6 +35,10 @@ OptionParser.new do |options|
|
|
|
35
35
|
options.on('-tTYPE', '--report-type=TYPE', '<Optional - Black Duck Binary Analysis Scan Report Type csv_libs|csv_vulns|pdf (Default: csv_vulns)>') do |t|
|
|
36
36
|
opts[:report_type] = t
|
|
37
37
|
end
|
|
38
|
+
|
|
39
|
+
options.on('-vVERSION', '--version=VERSION', '<Optional - Version to Associate w/ Specific Scan (Default: nil)>') do |v|
|
|
40
|
+
opts[:version] = v
|
|
41
|
+
end
|
|
38
42
|
end.parse!
|
|
39
43
|
|
|
40
44
|
if opts.empty?
|
|
@@ -54,8 +58,8 @@ begin
|
|
|
54
58
|
token = yaml_config[:token]
|
|
55
59
|
raise "ERROR: BDBA Token Not Found: #{token}" if token.nil?
|
|
56
60
|
|
|
57
|
-
|
|
58
|
-
raise "ERROR: BDBA Parent Group
|
|
61
|
+
parent_group_id = opts[:parent_group_id]
|
|
62
|
+
raise "ERROR: BDBA Parent Group ID Not Provided: #{parent_group_id}" if parent_group_id.nil?
|
|
59
63
|
|
|
60
64
|
target_file = opts[:target_file]
|
|
61
65
|
raise "ERROR: BDBA Target File Not Found: #{target_file}" unless File.exist?(target_file)
|
|
@@ -68,22 +72,15 @@ begin
|
|
|
68
72
|
report_type_str = opts[:report_type] ||= 'csv_vulns'
|
|
69
73
|
report_type = report_type_str.to_s.to_sym
|
|
70
74
|
|
|
71
|
-
|
|
72
|
-
token: token
|
|
73
|
-
)
|
|
74
|
-
|
|
75
|
-
parent_arr = groups_resp[:groups].select { |g| g[:name] == parent_group_name }
|
|
76
|
-
raise "ERROR: BDBA Parent Group Not Found: #{parent_group_name}" if parent_arr.nil?
|
|
77
|
-
|
|
78
|
-
sorted_parent_arr = parent_arr.sort_by { |g| g[:id] }
|
|
79
|
-
parent_id = sorted_parent_arr.last[:id]
|
|
75
|
+
version = opts[:version]
|
|
80
76
|
|
|
81
77
|
unless report_only
|
|
82
78
|
puts "Uploading/Scanning: #{target_file}"
|
|
83
79
|
PWN::Plugins::BlackDuckBinaryAnalysis.upload_file(
|
|
84
80
|
token: token,
|
|
85
81
|
file: target_file,
|
|
86
|
-
group_id:
|
|
82
|
+
group_id: parent_group_id,
|
|
83
|
+
version: version
|
|
87
84
|
)
|
|
88
85
|
end
|
|
89
86
|
|
|
@@ -92,7 +89,7 @@ begin
|
|
|
92
89
|
loop do
|
|
93
90
|
scan_progress_resp = PWN::Plugins::BlackDuckBinaryAnalysis.get_apps_by_group(
|
|
94
91
|
token: token,
|
|
95
|
-
group_id:
|
|
92
|
+
group_id: parent_group_id
|
|
96
93
|
)
|
|
97
94
|
|
|
98
95
|
break if scan_progress_resp[:products].none? { |p| p[:status] == 'B' } || report_only
|
data/lib/pwn/version.rb
CHANGED
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.
|
|
4
|
+
version: 0.4.805
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- 0day Inc.
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2023-
|
|
11
|
+
date: 2023-08-06 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: activesupport
|
|
@@ -72,14 +72,14 @@ dependencies:
|
|
|
72
72
|
requirements:
|
|
73
73
|
- - '='
|
|
74
74
|
- !ruby/object:Gem::Version
|
|
75
|
-
version: 6.0.
|
|
75
|
+
version: 6.0.1
|
|
76
76
|
type: :runtime
|
|
77
77
|
prerelease: false
|
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
|
79
79
|
requirements:
|
|
80
80
|
- - '='
|
|
81
81
|
- !ruby/object:Gem::Version
|
|
82
|
-
version: 6.0.
|
|
82
|
+
version: 6.0.1
|
|
83
83
|
- !ruby/object:Gem::Dependency
|
|
84
84
|
name: bson
|
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -100,14 +100,14 @@ dependencies:
|
|
|
100
100
|
requirements:
|
|
101
101
|
- - ">="
|
|
102
102
|
- !ruby/object:Gem::Version
|
|
103
|
-
version: 2.4.
|
|
103
|
+
version: 2.4.18
|
|
104
104
|
type: :development
|
|
105
105
|
prerelease: false
|
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
|
107
107
|
requirements:
|
|
108
108
|
- - ">="
|
|
109
109
|
- !ruby/object:Gem::Version
|
|
110
|
-
version: 2.4.
|
|
110
|
+
version: 2.4.18
|
|
111
111
|
- !ruby/object:Gem::Dependency
|
|
112
112
|
name: bundler-audit
|
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -198,14 +198,14 @@ dependencies:
|
|
|
198
198
|
requirements:
|
|
199
199
|
- - '='
|
|
200
200
|
- !ruby/object:Gem::Version
|
|
201
|
-
version: 0.11.
|
|
201
|
+
version: 0.11.3
|
|
202
202
|
type: :runtime
|
|
203
203
|
prerelease: false
|
|
204
204
|
version_requirements: !ruby/object:Gem::Requirement
|
|
205
205
|
requirements:
|
|
206
206
|
- - '='
|
|
207
207
|
- !ruby/object:Gem::Version
|
|
208
|
-
version: 0.11.
|
|
208
|
+
version: 0.11.3
|
|
209
209
|
- !ruby/object:Gem::Dependency
|
|
210
210
|
name: ffi
|
|
211
211
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -408,14 +408,14 @@ dependencies:
|
|
|
408
408
|
requirements:
|
|
409
409
|
- - '='
|
|
410
410
|
- !ruby/object:Gem::Version
|
|
411
|
-
version: 2.19.
|
|
411
|
+
version: 2.19.1
|
|
412
412
|
type: :runtime
|
|
413
413
|
prerelease: false
|
|
414
414
|
version_requirements: !ruby/object:Gem::Requirement
|
|
415
415
|
requirements:
|
|
416
416
|
- - '='
|
|
417
417
|
- !ruby/object:Gem::Version
|
|
418
|
-
version: 2.19.
|
|
418
|
+
version: 2.19.1
|
|
419
419
|
- !ruby/object:Gem::Dependency
|
|
420
420
|
name: msfrpc-client
|
|
421
421
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -744,14 +744,14 @@ dependencies:
|
|
|
744
744
|
requirements:
|
|
745
745
|
- - '='
|
|
746
746
|
- !ruby/object:Gem::Version
|
|
747
|
-
version: 5.
|
|
747
|
+
version: 5.3.0
|
|
748
748
|
type: :runtime
|
|
749
749
|
prerelease: false
|
|
750
750
|
version_requirements: !ruby/object:Gem::Requirement
|
|
751
751
|
requirements:
|
|
752
752
|
- - '='
|
|
753
753
|
- !ruby/object:Gem::Version
|
|
754
|
-
version: 5.
|
|
754
|
+
version: 5.3.0
|
|
755
755
|
- !ruby/object:Gem::Dependency
|
|
756
756
|
name: rspec
|
|
757
757
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -786,14 +786,14 @@ dependencies:
|
|
|
786
786
|
requirements:
|
|
787
787
|
- - '='
|
|
788
788
|
- !ruby/object:Gem::Version
|
|
789
|
-
version: 1.
|
|
789
|
+
version: 1.55.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: 1.
|
|
796
|
+
version: 1.55.1
|
|
797
797
|
- !ruby/object:Gem::Dependency
|
|
798
798
|
name: rubocop-rake
|
|
799
799
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -814,14 +814,14 @@ dependencies:
|
|
|
814
814
|
requirements:
|
|
815
815
|
- - '='
|
|
816
816
|
- !ruby/object:Gem::Version
|
|
817
|
-
version: 2.
|
|
817
|
+
version: 2.23.0
|
|
818
818
|
type: :runtime
|
|
819
819
|
prerelease: false
|
|
820
820
|
version_requirements: !ruby/object:Gem::Requirement
|
|
821
821
|
requirements:
|
|
822
822
|
- - '='
|
|
823
823
|
- !ruby/object:Gem::Version
|
|
824
|
-
version: 2.
|
|
824
|
+
version: 2.23.0
|
|
825
825
|
- !ruby/object:Gem::Dependency
|
|
826
826
|
name: ruby-audio
|
|
827
827
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -898,14 +898,14 @@ dependencies:
|
|
|
898
898
|
requirements:
|
|
899
899
|
- - '='
|
|
900
900
|
- !ruby/object:Gem::Version
|
|
901
|
-
version: 0.
|
|
901
|
+
version: 0.115.0
|
|
902
902
|
type: :runtime
|
|
903
903
|
prerelease: false
|
|
904
904
|
version_requirements: !ruby/object:Gem::Requirement
|
|
905
905
|
requirements:
|
|
906
906
|
- - '='
|
|
907
907
|
- !ruby/object:Gem::Version
|
|
908
|
-
version: 0.
|
|
908
|
+
version: 0.115.0
|
|
909
909
|
- !ruby/object:Gem::Dependency
|
|
910
910
|
name: serialport
|
|
911
911
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -1038,14 +1038,14 @@ dependencies:
|
|
|
1038
1038
|
requirements:
|
|
1039
1039
|
- - '='
|
|
1040
1040
|
- !ruby/object:Gem::Version
|
|
1041
|
-
version: 7.
|
|
1041
|
+
version: 7.3.0
|
|
1042
1042
|
type: :runtime
|
|
1043
1043
|
prerelease: false
|
|
1044
1044
|
version_requirements: !ruby/object:Gem::Requirement
|
|
1045
1045
|
requirements:
|
|
1046
1046
|
- - '='
|
|
1047
1047
|
- !ruby/object:Gem::Version
|
|
1048
|
-
version: 7.
|
|
1048
|
+
version: 7.3.0
|
|
1049
1049
|
- !ruby/object:Gem::Dependency
|
|
1050
1050
|
name: waveform
|
|
1051
1051
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -2149,7 +2149,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
2149
2149
|
- !ruby/object:Gem::Version
|
|
2150
2150
|
version: '0'
|
|
2151
2151
|
requirements: []
|
|
2152
|
-
rubygems_version: 3.4.
|
|
2152
|
+
rubygems_version: 3.4.18
|
|
2153
2153
|
signing_key:
|
|
2154
2154
|
specification_version: 4
|
|
2155
2155
|
summary: Automated Security Testing for CI/CD Pipelines & Beyond
|