dradis-qualys 3.21.0 → 4.2.0

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.
@@ -14,8 +14,22 @@ class QualysTasks < Thor
14
14
 
15
15
  detect_and_set_project_scope
16
16
 
17
- importer = Dradis::Plugins::Qualys::Importer.new(task_options)
17
+ importer = Dradis::Plugins::Qualys::Vuln::Importer.new(task_options)
18
18
  importer.import(file: file_path)
19
19
  end
20
20
 
21
+ desc "upload_was FILE", "upload Qualys WAS XML results"
22
+ def upload_was(file_path)
23
+ require 'config/environment'
24
+
25
+ unless File.exists?(file_path)
26
+ $stderr.puts "** the file [#{file_path}] does not exist"
27
+ exit -1
28
+ end
29
+
30
+ detect_and_set_project_scope
31
+
32
+ importer = Dradis::Plugins::Qualys::WAS::Importer.new(task_options)
33
+ importer.import(file: file_path)
34
+ end
21
35
  end
@@ -0,0 +1,127 @@
1
+ <?xml version='1.0' encoding='UTF-8'?>
2
+ <WAS_SCAN_REPORT>
3
+ <HEADER>
4
+ <NAME>Scan Report</NAME>
5
+ <DESCRIPTION>Vulnerabilities of all selected scans are consolidated into one report so that you can view their evolution.</DESCRIPTION>
6
+ <GENERATION_DATETIME>10 Nov 2021 10:00AM GMT-0500</GENERATION_DATETIME>
7
+ <COMPANY_INFO>
8
+ <NAME>Sample Company</NAME>
9
+ <ADDRESS>Sample Address</ADDRESS>
10
+ <CITY>Sample City</CITY>
11
+ <STATE>Sample State</STATE>
12
+ <COUNTRY>Sample Country</COUNTRY>
13
+ <ZIP_CODE>00000</ZIP_CODE>
14
+ </COMPANY_INFO>
15
+ <USER_INFO>
16
+ <NAME>Test User</NAME>
17
+ <USERNAME>test_user</USERNAME>
18
+ <ROLE>PC User,VM User</ROLE>
19
+ </USER_INFO>
20
+ </HEADER>
21
+ <FILTERS>
22
+ <FILTER>
23
+ <NAME>REMEDIATION</NAME>
24
+ <VALUE>Include patched findings</VALUE>
25
+ </FILTER>
26
+ <FILTER>
27
+ <NAME>REMEDIATION</NAME>
28
+ <VALUE>Show ignored findings </VALUE>
29
+ </FILTER>
30
+ </FILTERS>
31
+ <TARGET>
32
+ <SCAN>Test Scan</SCAN>
33
+ </TARGET>
34
+ <SUMMARY>
35
+ <GLOBAL_SUMMARY>
36
+ <SECURITY_RISK>High</SECURITY_RISK>
37
+ <VULNERABILITY>31</VULNERABILITY>
38
+ <SENSITIVE_CONTENT>0</SENSITIVE_CONTENT>
39
+ <INFORMATION_GATHERED>30</INFORMATION_GATHERED>
40
+ </GLOBAL_SUMMARY>
41
+ <SUMMARY_STATS>
42
+ <SUMMARY_STAT>
43
+ <SCAN>test Scan</SCAN>
44
+ <DATE>12 Oct 2021</DATE>
45
+ <LEVEL5>5</LEVEL5>
46
+ <LEVEL4>2</LEVEL4>
47
+ <LEVEL3>9</LEVEL3>
48
+ <LEVEL2>2</LEVEL2>
49
+ <LEVEL1>13</LEVEL1>
50
+ <SENSITIVE_CONTENT>0</SENSITIVE_CONTENT>
51
+ <INFORMATION_GATHERED>30</INFORMATION_GATHERED>
52
+ </SUMMARY_STAT>
53
+ </SUMMARY_STATS>
54
+ </SUMMARY>
55
+ <RESULTS>
56
+ <VULNERABILITY_LIST>
57
+ <VULNERABILITY>
58
+ <UNIQUE_ID>test-id</UNIQUE_ID>
59
+ <ID>1</ID>
60
+ <DETECTION_ID>1</DETECTION_ID>
61
+ <QID>6</QID>
62
+ <URL>http://example.com</URL>
63
+ <ACCESS_PATH>
64
+ <URL>http://example.com</URL>
65
+ </ACCESS_PATH>
66
+ <AJAX>false</AJAX>
67
+ <AUTHENTICATION>Not Required</AUTHENTICATION>
68
+ <DETECTION_DATE>21 Aug 2021 10:00PM GMT-0500</DETECTION_DATE>
69
+ <POTENTIAL>false</POTENTIAL>
70
+ <PAYLOADS>
71
+ <PAYLOAD>
72
+ <NUM>1</NUM>
73
+ <PAYLOAD>N/A</PAYLOAD>
74
+ <REQUEST>
75
+ <METHOD>GET</METHOD>
76
+ <URL>http://example.com</URL>
77
+ <HEADERS>
78
+ <HEADER>
79
+ <key>Host</key>
80
+ <value><![CDATA[ example.com ]]></value>
81
+ </HEADER>
82
+ <HEADER>
83
+ <key>User-Agent</key>
84
+ <value>user-agent</value>
85
+ </HEADER>
86
+ <HEADER>
87
+ <key>Accept</key>
88
+ <value><![CDATA[ */*
89
+ </HEADER>
90
+ </HEADERS>
91
+ <BODY></BODY>
92
+ </REQUEST>
93
+ <RESPONSE>
94
+ <CONTENTS base64="true"></CONTENTS>
95
+ </RESPONSE>
96
+ </PAYLOAD>
97
+ </PAYLOADS>
98
+ <IGNORED>false</IGNORED>
99
+ </VULNERABILITY>
100
+ </VULNERABILITY_LIST>
101
+ </RESULTS>
102
+ <GLOSSARY>
103
+ <QID_LIST>
104
+ <QID>
105
+ <QID>6</QID>
106
+ <CATEGORY>Information Gathered</CATEGORY>
107
+ <SEVERITY>1</SEVERITY>
108
+ <TITLE>DNS Host Name</TITLE>
109
+ <GROUP>DIAG</GROUP>
110
+ <DESCRIPTION>The fully qualified domain name of this host, if it was obtained from a DNS server, is displayed in the RESULT section.</DESCRIPTION>
111
+ <IMPACT>N/A</IMPACT>
112
+ <SOLUTION>N/A</SOLUTION>
113
+ </QID>
114
+ </QID_LIST>
115
+ </GLOSSARY>
116
+ <APPENDIX>
117
+ <WEBAPP>
118
+ <ID>1</ID>
119
+ <NAME>Test</NAME>
120
+ <URL>http://example.com</URL>
121
+ <OWNER>Test User</OWNER>
122
+ <SCOPE>Limit to URL hostname</SCOPE>
123
+ <CUSTOM_ATTRIBUTES/>
124
+ <TAGS/>
125
+ </WEBAPP>
126
+ </APPENDIX>
127
+ </WAS_SCAN_REPORT>
@@ -5,37 +5,15 @@ module Dradis::Plugins
5
5
  describe 'Qualys upload plugin' do
6
6
  before(:each) do
7
7
  # Stub template service
8
- templates_dir = File.expand_path('../../../templates', __FILE__)
8
+ templates_dir = File.expand_path('../../../../templates', __FILE__)
9
9
  expect_any_instance_of(Dradis::Plugins::TemplateService)
10
10
  .to receive(:default_templates_dir).and_return(templates_dir)
11
11
 
12
- # Init services
13
- plugin = Dradis::Plugins::Qualys
12
+ stub_content_service
14
13
 
15
- @content_service = Dradis::Plugins::ContentService::Base.new(
16
- logger: Logger.new(STDOUT),
17
- plugin: plugin
18
- )
19
-
20
- @importer = Dradis::Plugins::Qualys::Importer.new(
14
+ @importer = Dradis::Plugins::Qualys::Vuln::Importer.new(
21
15
  content_service: @content_service
22
16
  )
23
-
24
- # Stub dradis-plugins methods
25
- #
26
- # They return their argument hashes as objects mimicking
27
- # Nodes, Issues, etc
28
- allow(@content_service).to receive(:create_node) do |args|
29
- obj = OpenStruct.new(args)
30
- obj.define_singleton_method(:set_property) { |_, __| }
31
- obj
32
- end
33
- allow(@content_service).to receive(:create_issue) do |args|
34
- OpenStruct.new(args)
35
- end
36
- allow(@content_service).to receive(:create_evidence) do |args|
37
- OpenStruct.new(args)
38
- end
39
17
  end
40
18
 
41
19
  let(:example_xml) { 'spec/fixtures/files/simple.xml' }
@@ -84,11 +62,12 @@ module Dradis::Plugins
84
62
  expect_to_create_issue_with(
85
63
  text: "Apache 1.3 HTTP Server Expect Header Cross-Site Scripting"
86
64
  )
87
-
65
+
88
66
  expect_to_create_issue_with(
89
- text: "Apache Web Server ETag Header Information Disclosure Weakness"
67
+ text: "Apache Web Server ETag Header Information Disclosure Weakness",
68
+ text: "OpenBSD has released a \"patch\":ftp://ftp.openbsd.org/pub/OpenBSD/patches/3.2/common/008_httpd.patch that fixes this vulnerability. After installing the patch, inode numbers returned from the server are encoded using a private hash to avoid the release of sensitive information.\n\n\n\nCustomers"
90
69
  )
91
-
70
+
92
71
  run_import!
93
72
  end
94
73
 
@@ -143,7 +122,7 @@ module Dradis::Plugins
143
122
  context "when an issue has no RESULT element" do
144
123
  #let(:example_xml) { 'spec/fixtures/files/no_result.xml' }
145
124
 
146
- it "detects an issue without a RESULT element and applies (n/a)" do
125
+ it "detects an issue without a RESULT element and applies (n/a) and strips/replaces formatting tags" do
147
126
  # 1 node should be created:
148
127
  expect_to_create_node_with(label: '10.0.155.160')
149
128
 
@@ -151,7 +130,8 @@ module Dradis::Plugins
151
130
  # - TCP/IP: Sequence number in both hosts
152
131
  # Each one should create 1 issue and 1 evidence
153
132
  expect_to_create_issue_with(
154
- text: "Sequence Number Approximation Based Denial of Service"
133
+ text: "Sequence Number Approximation Based Denial of Service",
134
+ text: "Please first check the results section below for the port number on which this vulnerability was detected. If that port number is known to be used for port-forwarding, then it is the backend host that is really vulnerable.\n\n\n\nVarious implementations and products including Check Point, Cisco, Cray Inc, Hitachi, Internet Initiative Japan, Inc (IIJ), Juniper Networks, NEC, Polycom, and Yamaha are currently undergoing review. Contact the vendors to obtain more information about affected products and fixes. \"NISCC Advisory 236929 - Vulnerability Issues in TCP\":http://packetstormsecurity.org/0404-advisories/246929.html details the vendor patch status as of the time of the advisory, and identifies resolutions and workarounds."
155
135
  )
156
136
 
157
137
  expect_to_create_evidence_with(
@@ -163,28 +143,5 @@ module Dradis::Plugins
163
143
  @importer.import(file: 'spec/fixtures/files/no_result.xml')
164
144
  end
165
145
  end
166
-
167
-
168
- def expect_to_create_node_with(label:)
169
- expect(@content_service).to receive(:create_node).with(
170
- hash_including label: label
171
- ).once
172
- end
173
-
174
- def expect_to_create_issue_with(text:)
175
- expect(@content_service).to receive(:create_issue) do |args|
176
- expect(args[:text]).to include text
177
- OpenStruct.new(args)
178
- end.once
179
- end
180
-
181
- def expect_to_create_evidence_with(content:, issue:, node_label:)
182
- expect(@content_service).to receive(:create_evidence) do |args|
183
- expect(args[:content]).to include content
184
- expect(args[:issue].text).to include issue
185
- expect(args[:node].label).to eq node_label
186
- end.once
187
- end
188
-
189
146
  end
190
147
  end
@@ -0,0 +1,41 @@
1
+ require 'spec_helper'
2
+ require 'ostruct'
3
+
4
+ module Dradis::Plugins
5
+ describe 'Qualys upload plugin' do
6
+ before(:each) do
7
+ # Stub template service
8
+ templates_dir = File.expand_path('../../../../templates', __FILE__)
9
+ expect_any_instance_of(Dradis::Plugins::TemplateService)
10
+ .to receive(:default_templates_dir).and_return(templates_dir)
11
+
12
+ stub_content_service
13
+
14
+ @importer = Dradis::Plugins::Qualys::WAS::Importer.new(
15
+ content_service: @content_service
16
+ )
17
+ end
18
+
19
+ let(:example_xml) { 'spec/fixtures/files/simple_was.xml' }
20
+ let(:run_import!) { @importer.import(file: example_xml) }
21
+
22
+ it 'creates nodes as needed' do
23
+ expect_to_create_node_with(label: 'example.com')
24
+ run_import!
25
+ end
26
+
27
+ it 'creates issues as needed' do
28
+ expect_to_create_issue_with(text: 'DNS Host Name')
29
+ run_import!
30
+ end
31
+
32
+ it 'creates evidence as needed' do
33
+ expect_to_create_evidence_with(
34
+ content: 'http://example.com',
35
+ issue: 'DNS Host Name',
36
+ node_label: 'example.com'
37
+ )
38
+ run_import!
39
+ end
40
+ end
41
+ end
data/spec/spec_helper.rb CHANGED
@@ -4,7 +4,10 @@ require 'nokogiri'
4
4
 
5
5
  require 'combustion'
6
6
 
7
+ Dir[Rails.root.join('spec/support/**/*.rb')].each { |f| require f }
8
+
7
9
  Combustion.initialize!
8
10
 
9
11
  RSpec.configure do |config|
12
+ config.include SpecMacros
10
13
  end
@@ -0,0 +1,50 @@
1
+ module SpecMacros
2
+ extend ActiveSupport::Concern
3
+
4
+ def stub_content_service
5
+ # Init services
6
+ plugin = Dradis::Plugins::Qualys
7
+
8
+ @content_service = Dradis::Plugins::ContentService::Base.new(
9
+ logger: Logger.new(STDOUT),
10
+ plugin: plugin
11
+ )
12
+
13
+ # Stub dradis-plugins methods
14
+ #
15
+ # They return their argument hashes as objects mimicking
16
+ # Nodes, Issues, etc
17
+ allow(@content_service).to receive(:create_node) do |args|
18
+ obj = OpenStruct.new(args)
19
+ obj.define_singleton_method(:set_property) { |_, __| }
20
+ obj
21
+ end
22
+ allow(@content_service).to receive(:create_issue) do |args|
23
+ OpenStruct.new(args)
24
+ end
25
+ allow(@content_service).to receive(:create_evidence) do |args|
26
+ OpenStruct.new(args)
27
+ end
28
+ end
29
+
30
+ def expect_to_create_node_with(label:)
31
+ expect(@content_service).to receive(:create_node).with(
32
+ hash_including label: label
33
+ ).once
34
+ end
35
+
36
+ def expect_to_create_issue_with(text:)
37
+ expect(@content_service).to receive(:create_issue) do |args|
38
+ expect(args[:text]).to include text
39
+ OpenStruct.new(args)
40
+ end.once
41
+ end
42
+
43
+ def expect_to_create_evidence_with(content:, issue:, node_label:)
44
+ expect(@content_service).to receive(:create_evidence) do |args|
45
+ expect(args[:content]).to include content
46
+ expect(args[:issue].text).to include issue
47
+ expect(args[:node].label).to eq node_label
48
+ end.once
49
+ end
50
+ end
@@ -14,3 +14,4 @@ element.consequence
14
14
  element.solution
15
15
  element.compliance
16
16
  element.result
17
+ element.qualys_collection
@@ -33,3 +33,7 @@ Temporal: %element.cvss_temporal%
33
33
 
34
34
  #[CVEList]#
35
35
  %element.cve_id_list%
36
+
37
+
38
+ #[QualysCollection]#
39
+ %element.qualys_collection%
@@ -0,0 +1,6 @@
1
+ was-evidence.access_paths
2
+ was-evidence.ajax
3
+ was-evidence.authentication
4
+ was-evidence.ignored
5
+ was-evidence.potential
6
+ was-evidence.url
@@ -0,0 +1,44 @@
1
+ <VULNERABILITY>
2
+ <UNIQUE_ID>db9bd89e-a8d8-402d-a6ca-8f6ff8be426f</UNIQUE_ID>
3
+ <ID>827065910</ID>
4
+ <DETECTION_ID>20879664</DETECTION_ID>
5
+ <QID>150124</QID>
6
+ <URL>http://demo.hackmebank.net/index.jsp?content=personal_loans.htm</URL>
7
+ <ACCESS_PATH>
8
+ <URL>http://demo.hackmebank.net/index.jsp</URL>
9
+ </ACCESS_PATH>
10
+ <AJAX>false</AJAX>
11
+ <AUTHENTICATION>Not Required</AUTHENTICATION>
12
+ <DETECTION_DATE>11 Oct 2021 07:16PM GMT-0500</DETECTION_DATE>
13
+ <POTENTIAL>false</POTENTIAL>
14
+ <PAYLOADS>
15
+ <PAYLOAD>
16
+ <NUM>1</NUM>
17
+ <PAYLOAD>N/A</PAYLOAD>
18
+ <REQUEST>
19
+ <METHOD>GET</METHOD>
20
+ <URL>http://demo.hackmebank.net/index.jsp?content=business.htm</URL>
21
+ <HEADERS>
22
+ <HEADER>
23
+ <key>Host</key>
24
+ <value><![CDATA[ demo.hackmebank.net
25
+ </HEADER>
26
+ <HEADER>
27
+ <key>User-Agent</key>
28
+ <value><![CDATA[ Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.1.1 Safari/605.1.15
29
+ </HEADER>
30
+ <HEADER>
31
+ <key>Accept</key>
32
+ <value><![CDATA[ */*
33
+ </HEADER>
34
+ </HEADERS>
35
+ <BODY></BODY>
36
+ </REQUEST>
37
+ <RESPONSE>
38
+ <CONTENTS base64="true"><![CDATA[VGhlIFVSSSB3YXMgZnJhbWVkLgo=
39
+ ]]></CONTENTS>
40
+ </RESPONSE>
41
+ </PAYLOAD>
42
+ </PAYLOADS>
43
+ <IGNORED>false</IGNORED>
44
+ </VULNERABILITY>
@@ -0,0 +1,11 @@
1
+ #[Location]#
2
+ %was-evidence.url%
3
+
4
+ #[AccessPaths]#
5
+ %was-evidence.access_paths%
6
+
7
+ #[Flags]#
8
+ Ajax: %was-evidence.ajax%
9
+ Authentication: %was-evidence.authentication%
10
+ Ignored: %was-evidence.ignored%
11
+ Potential: %was-evidence.potential%
@@ -0,0 +1,16 @@
1
+ was-issue.category
2
+ was-issue.cvss_base
3
+ was-issue.cvss_temporal
4
+ was-issue.cvss3_base
5
+ was-issue.cvss3_temporal
6
+ was-issue.cvss3_vector
7
+ was-issue.cwe
8
+ was-issue.description
9
+ was-issue.group
10
+ was-issue.impact
11
+ was-issue.owasp
12
+ was-issue.qid
13
+ was-issue.severity
14
+ was-issue.solution
15
+ was-issue.title
16
+ was-issue.wasc
@@ -0,0 +1,24 @@
1
+ <QID>
2
+ <QID>150001</QID>
3
+ <CATEGORY>Confirmed Vulnerability</CATEGORY>
4
+ <SEVERITY>5</SEVERITY>
5
+ <TITLE>Reflected Cross-Site Scripting (XSS) Vulnerabilities</TITLE>
6
+ <GROUP>XSS</GROUP>
7
+ <OWASP>A7</OWASP>
8
+ <WASC>WASC-8</WASC>
9
+ <CWE>CWE-79</CWE>
10
+ <CVSS_BASE>4.3</CVSS_BASE>
11
+ <CVSS_TEMPORAL>3.9</CVSS_TEMPORAL>
12
+ <CVSS_V3>
13
+ <BASE>6.1</BASE>
14
+ <TEMPORAL>5.8</TEMPORAL>
15
+ <ATTACK_VECTOR>Network</ATTACK_VECTOR>
16
+ </CVSS_V3>
17
+ <DESCRIPTION><![CDATA[XSS vulnerabilities occur when the Web application echoes user-supplied data in an HTML response sent to the Web browser. For example, a Web application might include the user's name as part of a welcome message or display a home address when confirming a shipping destination. If the user-supplied data contain characters that are interpreted as part of an HTML element instead of literal text, then an attacker can modify the HTML that is received by the victim's Web browser.
18
+ <P>
19
+ The XSS payload is echoed in HTML document returned by the request. An XSS payload may consist of HTML, JavaScript or other content that will be rendered by the browser. In order to exploit this vulnerability, a malicious user would need to trick a victim into visiting the URL with the XSS payload.]]></DESCRIPTION>
20
+ <IMPACT>XSS exploits pose a significant threat to a Web application, its users and user data. XSS exploits target the users of a Web application rather than the Web application itself. An exploit can lead to theft of the user's credentials and personal or financial information. Complex exploits and attack scenarios are possible via XSS because it enables an attacker to execute dynamic code. Consequently, any capability or feature available to the Web browser (for example HTML, JavaScript, Flash and Java applets) can be used to as a part of a compromise.</IMPACT>
21
+ <SOLUTION><![CDATA[Filter all data collected from the client including user-supplied content and browser content such as Referrer and User-Agent headers.
22
+ <P>
23
+ Any data collected from the client and displayed in a Web page should be HTML-encoded to ensure the content is rendered as text instead of an HTML element or JavaScript.]]></SOLUTION>
24
+ </QID>
@@ -0,0 +1,28 @@
1
+ #[Title]#
2
+ %was-issue.title%
3
+
4
+ #[Severity]#
5
+ %was-issue.severity%
6
+
7
+ #[Categories]#
8
+ Category: %was-issue.category%
9
+ Group: %was-issue.group%
10
+ OWASP: %was-issue.owasp%
11
+ CWE: %was-issue.cwe%
12
+
13
+ #[CVSSv3.Vector]#
14
+ %was-issue.cvss3_vector%
15
+
16
+ #[CVSSv3.BaseScore]#
17
+ %was-issue.cvss3_base%
18
+
19
+ #[CVSSv3.TemporalScore]#
20
+ %was-issue.cvss3_temporal%
21
+
22
+ #[Description]#
23
+ %was-issue.description%
24
+
25
+ %was-issue.impact%
26
+
27
+ #[Solution]#
28
+ %was-issue.solution%
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dradis-qualys
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.21.0
4
+ version: 4.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Martin
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-02-12 00:00:00.000000000 Z
11
+ date: 2022-02-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dradis-plugins
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '3.6'
19
+ version: '4.0'
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: '3.6'
26
+ version: '4.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: nokogiri
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -107,6 +107,7 @@ files:
107
107
  - ".gitignore"
108
108
  - ".rspec"
109
109
  - CHANGELOG.md
110
+ - CHANGELOG.template
110
111
  - CONTRIBUTING.md
111
112
  - Gemfile
112
113
  - LICENSE
@@ -118,28 +119,40 @@ files:
118
119
  - lib/dradis/plugins/qualys/engine.rb
119
120
  - lib/dradis/plugins/qualys/field_processor.rb
120
121
  - lib/dradis/plugins/qualys/gem_version.rb
121
- - lib/dradis/plugins/qualys/importer.rb
122
122
  - lib/dradis/plugins/qualys/version.rb
123
+ - lib/dradis/plugins/qualys/vuln/importer.rb
124
+ - lib/dradis/plugins/qualys/was/importer.rb
123
125
  - lib/qualys/element.rb
126
+ - lib/qualys/was/qid.rb
127
+ - lib/qualys/was/vulnerability.rb
124
128
  - lib/tasks/thorfile.rb
125
129
  - spec/.keep
126
130
  - spec/fixtures/files/no_result.xml
127
131
  - spec/fixtures/files/simple.xml
132
+ - spec/fixtures/files/simple_was.xml
128
133
  - spec/fixtures/files/two_hosts_common_issue.xml
129
134
  - spec/qualys/element_spec.rb
130
- - spec/qualys/importer_spec.rb
135
+ - spec/qualys/vuln/importer_spec.rb
136
+ - spec/qualys/was/importer_spec.rb
131
137
  - spec/spec_helper.rb
138
+ - spec/support/spec_macros.rb
132
139
  - templates/element.fields
133
140
  - templates/element.sample
134
141
  - templates/element.template
135
142
  - templates/evidence.fields
136
143
  - templates/evidence.sample
137
144
  - templates/evidence.template
145
+ - templates/was-evidence.fields
146
+ - templates/was-evidence.sample
147
+ - templates/was-evidence.template
148
+ - templates/was-issue.fields
149
+ - templates/was-issue.sample
150
+ - templates/was-issue.template
138
151
  homepage: http://dradisframework.org
139
152
  licenses:
140
153
  - GPL-2
141
154
  metadata: {}
142
- post_install_message:
155
+ post_install_message:
143
156
  rdoc_options: []
144
157
  require_paths:
145
158
  - lib
@@ -154,15 +167,18 @@ required_rubygems_version: !ruby/object:Gem::Requirement
154
167
  - !ruby/object:Gem::Version
155
168
  version: '0'
156
169
  requirements: []
157
- rubygems_version: 3.2.4
158
- signing_key:
170
+ rubygems_version: 3.1.4
171
+ signing_key:
159
172
  specification_version: 4
160
173
  summary: Qualys add-on for the Dradis Framework.
161
174
  test_files:
162
175
  - spec/.keep
163
176
  - spec/fixtures/files/no_result.xml
164
177
  - spec/fixtures/files/simple.xml
178
+ - spec/fixtures/files/simple_was.xml
165
179
  - spec/fixtures/files/two_hosts_common_issue.xml
166
180
  - spec/qualys/element_spec.rb
167
- - spec/qualys/importer_spec.rb
181
+ - spec/qualys/vuln/importer_spec.rb
182
+ - spec/qualys/was/importer_spec.rb
168
183
  - spec/spec_helper.rb
184
+ - spec/support/spec_macros.rb