Skip to content

Commit a66ec1b

Browse files
authored
Merge pull request #453 from ninp0/master
PWN::Plugins::DefectDojo module / pwn_defectdojo_importscan, pwn_defe…
2 parents 0338b69 + 513efe1 commit a66ec1b

File tree

6 files changed

+78
-16
lines changed

6 files changed

+78
-16
lines changed

Gemfile

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@ gem 'anemone', '0.7.2'
1616
gem 'authy', '3.0.1'
1717
gem 'aws-sdk', '3.2.0'
1818
# gem 'bettercap', '1.6.2'
19-
gem 'barby', '0.6.8'
20-
gem 'brakeman', '6.0.1'
19+
gem 'barby', '0.6.9'
20+
gem 'brakeman', '6.1.0'
2121
gem 'bson', '4.15.0'
22-
gem 'bundler', '>=2.4.22'
22+
gem 'bundler', '>=2.5.0'
2323
gem 'bundler-audit', '0.9.1'
2424
gem 'bunny', '2.22.0'
2525
gem 'colorize', '1.1.0'
@@ -38,9 +38,10 @@ gem 'htmlentities', '4.3.4'
3838
gem 'ipaddress', '0.8.3'
3939
gem 'jenkins_api_client2', '1.9.0'
4040
gem 'js-beautify', '0.1.8'
41-
gem 'json', '2.7.0'
41+
gem 'json', '2.7.1'
4242
gem 'jsonpath', '1.1.5'
4343
gem 'jwt', '2.7.1'
44+
gem 'libusb', '0.6.4'
4445
gem 'luhn', '1.0.2'
4546
gem 'mail', '2.8.1'
4647
gem 'mongo', '2.19.3'
@@ -56,29 +57,30 @@ gem 'oily_png', '1.2.1'
5657
gem 'open3', '0.2.0'
5758
gem 'os', '1.1.4'
5859
gem 'packetfu', '2.0.0'
60+
gem 'packetgen', '3.3.0'
5961
gem 'pdf-reader', '2.11.0'
6062
gem 'pg', '1.5.4'
6163
gem 'pry', '0.14.2'
6264
gem 'pry-doc', '1.4.0'
6365
gem 'rake', '13.1.0'
6466
gem 'rb-readline', '0.5.5'
6567
gem 'rbvmomi', '3.0.0'
66-
gem 'rdoc', '6.6.0'
68+
gem 'rdoc', '6.6.1'
6769
gem 'rest-client', '2.1.0'
6870
gem 'rex', '2.0.13'
6971
gem 'rmagick', '5.3.0'
7072
gem 'rqrcode', '2.2.0'
7173
gem 'rspec', '3.12.0'
7274
gem 'rtesseract', '3.1.3'
73-
gem 'rubocop', '1.58.0'
75+
gem 'rubocop', '1.59.0'
7476
gem 'rubocop-rake', '0.6.0'
7577
gem 'rubocop-rspec', '2.25.0'
7678
gem 'ruby-audio', '1.6.1'
7779
gem 'ruby-nmap', '1.0.2'
7880
gem 'ruby-saml', '1.16.0'
7981
gem 'rvm', '1.11.3.9'
8082
gem 'savon', '2.14.0'
81-
gem 'selenium-devtools', '0.119.0'
83+
gem 'selenium-devtools', '0.120.0'
8284
gem 'serialport', '1.3.2'
8385
gem 'sinatra', '3.1.0'
8486
gem 'slack-ruby-client', '2.2.0'

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ $ cd /opt/pwn
3737
$ ./install.sh
3838
$ ./install.sh ruby-gem
3939
$ pwn
40-
pwn[v0.4.935]:001 >>> PWN.help
40+
pwn[v0.4.936]:001 >>> PWN.help
4141
```
4242

4343
[![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.2.2@pwn
5252
$ gem uninstall --all --executables pwn
5353
$ gem install --verbose pwn
5454
$ pwn
55-
pwn[v0.4.935]:001 >>> PWN.help
55+
pwn[v0.4.936]:001 >>> PWN.help
5656
```
5757

5858
If you're using a multi-user install of RVM do:
@@ -62,7 +62,7 @@ $ rvm use ruby-3.2.2@pwn
6262
$ rvmsudo gem uninstall --all --executables pwn
6363
$ rvmsudo gem install --verbose pwn
6464
$ pwn
65-
pwn[v0.4.935]:001 >>> PWN.help
65+
pwn[v0.4.936]:001 >>> PWN.help
6666
```
6767

6868

bin/pwn_defectdojo_importscan

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,18 @@ OptionParser.new do |options|
6161
options.on('-g', '--create-finding-groups', '<Optional - group similar findings into one finding (defaults to false)') do |g|
6262
opts[:create_finding_groups] = g
6363
end
64+
65+
options.on('-c', '--close-old-findings-product-scope', '<Optional - close old findings from the engagement (defaults to false)') do |c|
66+
opts[:close_old_findings_product_scope] = c
67+
end
68+
69+
options.on('-C', '--close-old-findings', '<Optional - close old findings, regardless of engagement (defaults to false)') do |c|
70+
opts[:close_old_findings] = c
71+
end
72+
73+
options.on('-j', '--push-to-jira', '<Optional - push findings to JIRA (defaults to false)') do |j|
74+
opts[:push_to_jira] = j
75+
end
6476
end.parse!
6577

6678
if opts.empty?
@@ -84,6 +96,9 @@ minimum_severity = opts[:minimum_severity]
8496
scan_date = opts[:scan_date]
8597
verified = opts[:verified]
8698
create_findings_groups = opts[:create_finding_groups]
99+
close_old_findings_product_scope = opts[:close_old_findings_product_scope]
100+
close_old_findings = opts[:close_old_findings]
101+
push_to_jira = opts[:push_to_jira]
87102

88103
begin
89104
dd_obj = PWN::Plugins::DefectDojo.login(
@@ -103,7 +118,10 @@ begin
103118
minimum_severity: minimum_severity,
104119
scan_date: scan_date,
105120
verified: verified,
106-
create_findings_groups: create_findings_groups
121+
create_findings_groups: create_findings_groups,
122+
close_old_findings_product_scope: close_old_findings_product_scope,
123+
close_old_findings: close_old_findings,
124+
push_to_jira: push_to_jira
107125
)
108126
rescue StandardError => e
109127
raise e

bin/pwn_defectdojo_reimportscan

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,18 @@ OptionParser.new do |options|
6161
options.on('-g', '--create-finding-groups', '<Optional - group similar findings into one finding (defaults to false)') do |g|
6262
opts[:create_finding_groups] = g
6363
end
64+
65+
options.on('-c', '--close-old-findings-product-scope', '<Optional - close old findings from the engagement (defaults to false)') do |c|
66+
opts[:close_old_findings_product_scope] = c
67+
end
68+
69+
options.on('-C', '--close-old-findings', '<Optional - close old findings, regardless of engagement (defaults to false)') do |c|
70+
opts[:close_old_findings] = c
71+
end
72+
73+
options.on('-j', '--push-to-jira', '<Optional - push findings to JIRA (defaults to false)') do |j|
74+
opts[:push_to_jira] = j
75+
end
6476
end.parse!
6577

6678
if opts.empty?
@@ -84,6 +96,9 @@ minimum_severity = opts[:minimum_severity]
8496
scan_date = opts[:scan_date]
8597
verified = opts[:verified]
8698
create_finding_groups = opts[:create_finding_groups]
99+
close_old_findings_product_scope = opts[:close_old_findings_product_scope]
100+
close_old_findings = opts[:close_old_findings]
101+
push_to_jira = opts[:push_to_jira]
87102

88103
begin
89104
dd_obj = PWN::Plugins::DefectDojo.login(
@@ -103,7 +118,10 @@ begin
103118
minimum_severity: minimum_severity,
104119
scan_date: scan_date,
105120
verified: verified,
106-
create_finding_groups: create_finding_groups
121+
create_finding_groups: create_finding_groups,
122+
close_old_findings_product_scope: close_old_findings_product_scope,
123+
close_old_findings: close_old_findings,
124+
push_to_jira: push_to_jira
107125
)
108126
rescue StandardError => e
109127
raise e

lib/pwn/plugins/defect_dojo.rb

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -388,6 +388,9 @@ module DefectDojo
388388
# scan_date: 'optional - date in which scan was kicked off (defaults to now)',
389389
# verified: 'optional - flag finding as verified by a tester (defaults to false)',
390390
# create_finding_groups: 'optional - flag to create finding groups (defaults to false)'
391+
# close_old_findings_product_scope: 'optional - flag to close old findings from engagement (defaults to false)',
392+
# close_old_findings: 'optional - flag to close old findings, regardless of engagement (defaults to false)',
393+
# push_to_jira: 'optional - flag to push findings to JIRA (defaults to false)'
391394
# )
392395

393396
public_class_method def self.importscan(opts = {})
@@ -465,6 +468,12 @@ module DefectDojo
465468

466469
opts[:create_finding_groups] ? (http_body[:create_finding_groups_for_all_findings] = true) : (http_body[:create_finding_groups_for_all_findings] = false)
467470

471+
opts[:close_old_findings_product_scope] ? (http_body[:close_old_findings_product_scope] = true) : (http_body[:close_old_findings_product_scope] = false)
472+
473+
opts[:close_old_findings] ? (http_body[:close_old_findings] = true) : (http_body[:close_old_findings] = false)
474+
475+
opts[:push_to_jira] ? (http_body[:push_to_jira] = true) : (http_body[:push_to_jira] = false)
476+
468477
api_path = 'import-scan/'
469478
api_path = 'importscan/' if api_version == 'v1'
470479

@@ -489,7 +498,10 @@ module DefectDojo
489498
# minimum_severity: 'optional - minimum finding severity Info||Low||Medium||High||Critical (Defaults to Info)',
490499
# scan_date: 'optional - date in which scan was kicked off (defaults to now)',
491500
# verified: 'optional - flag finding as verified by a tester (defaults to false)',
492-
# create_finding_groups: 'optional - flag to create finding groups (defaults to false)'
501+
# create_finding_groups: 'optional - flag to create finding groups (defaults to false)',
502+
# close_old_findings_product_scope: 'optional - flag to close old findings from engagement (defaults to false)',
503+
# close_old_findings: 'optional - flag to close old findings, regardless of engagement (defaults to false)',
504+
# push_to_jira: 'optional - flag to push findings to JIRA (defaults to false)'
493505
# )
494506

495507
public_class_method def self.reimportscan(opts = {})
@@ -570,6 +582,12 @@ module DefectDojo
570582

571583
opts[:create_finding_groups] ? (http_body[:create_finding_groups_for_all_findings] = true) : (http_body[:create_finding_groups_for_all_findings] = false)
572584

585+
opts[:close_old_findings_product_scope] ? (http_body[:close_old_findings_product_scope] = true) : (http_body[:close_old_findings_product_scope] = false)
586+
587+
opts[:close_old_findings] ? (http_body[:close_old_findings] = true) : (http_body[:close_old_findings] = false)
588+
589+
opts[:push_to_jira] ? (http_body[:push_to_jira] = true) : (http_body[:push_to_jira] = false)
590+
573591
api_path = 'reimport-scan/'
574592
api_path = 'reimportscan/' if api_version == 'v1'
575593

@@ -726,7 +744,10 @@ module DefectDojo
726744
minimum_severity: 'optional - minimum finding severity Info||Low||Medium||High||Critical (Defaults to Info)',
727745
scan_date: 'optional - date in which scan was kicked off (defaults to now)',
728746
verified: 'optional - flag finding as verified by a tester (defaults to false)',
729-
create_finding_groups: 'optional - flag to create finding groups (defaults to false)'
747+
create_finding_groups: 'optional - flag to create finding groups (defaults to false)',
748+
close_old_findings_product_scope: 'optional - flag to close old findings from engagement (defaults to false)',
749+
close_old_findings: 'optional - flag to close old findings, regardless of engagement (defaults to false)',
750+
push_to_jira: 'optional - flag to push findings to JIRA (defaults to false)'
730751
)
731752
732753
reimportscan_response = #{self}.reimportscan(
@@ -739,7 +760,10 @@ module DefectDojo
739760
minimum_severity: 'optional - minimum finding severity Info||Low||Medium||High||Critical (Defaults to Info)',
740761
scan_date: 'optional - date in which scan was kicked off (defaults to now)',
741762
verified: 'optional - flag finding as verified by a tester (defaults to false)',
742-
create_finding_groups: 'optional - flag to create finding groups (defaults to false)'
763+
create_finding_groups: 'optional - flag to create finding groups (defaults to false)',
764+
close_old_findings_product_scope: 'optional - flag to close old findings from engagement (defaults to false)',
765+
close_old_findings: 'optional - flag to close old findings, regardless of engagement (defaults to false)',
766+
push_to_jira: 'optional - flag to push findings to JIRA (defaults to false)'
743767
)
744768
745769
finding_list = #{self}.finding_list(

lib/pwn/version.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# frozen_string_literal: true
22

33
module PWN
4-
VERSION = '0.4.935'
4+
VERSION = '0.4.936'
55
end

0 commit comments

Comments
 (0)