dradis-burp 4.10.0 → 4.12.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/pull_request_template.md +12 -3
- data/CHANGELOG.md +8 -0
- data/README.md +3 -4
- data/lib/burp/html/issue.rb +1 -1
- data/lib/dradis/plugins/burp/gem_version.rb +1 -1
- data/lib/dradis/plugins/burp/html/importer.rb +6 -6
- data/lib/dradis/plugins/burp/mapping.rb +106 -0
- data/lib/dradis/plugins/burp/xml/importer.rb +5 -5
- data/lib/dradis/plugins/burp.rb +1 -0
- data/templates/xml_issue.sample +23 -0
- metadata +6 -10
- data/templates/evidence.fields +0 -8
- data/templates/evidence.template +0 -20
- data/templates/html_evidence.fields +0 -14
- data/templates/html_evidence.template +0 -50
- data/templates/issue.fields +0 -8
- data/templates/issue.template +0 -30
- /data/templates/{issue.sample → html_issue.sample} +0 -0
- /data/templates/{evidence.sample → xml_evidence.sample} +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1531ccba2803d7f9ca739f542614ba6e0027e1f6e86633fb224846b2fe3c41a9
|
4
|
+
data.tar.gz: f734f7465981b8af0cf5650507b9317f997079bc8d01a668d6df2af6c4f5208b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 066761056c7763e19d5951bf2848aaf34a6b6f5aeef4873c2d349092eb3043cca4bfac434364af22d9f3e3e6ff6dafba4e016c6e2224fc0e2f5a72c48af1a9a8
|
7
|
+
data.tar.gz: f6cfe890151d6dfd507727ebf0900dacdaabbce0e72bc92594ba9b9bf34259483ff0cdf78a3e8dc690a51824685c9ca154c0dd8a7e112a14e95f592454acaec8
|
@@ -1,3 +1,5 @@
|
|
1
|
+
Please review [CONTRIBUTING.md](https://github.com/dradis/dradis-ce/blob/develop/CONTRIBUTING.md) and remove this line.
|
2
|
+
|
1
3
|
### Summary
|
2
4
|
|
3
5
|
Provide a general description of the code changes in your pull
|
@@ -6,6 +8,11 @@ these bugs have open GitHub issues, be sure to tag them here as well,
|
|
6
8
|
to keep the conversation linked together.
|
7
9
|
|
8
10
|
|
11
|
+
### Testing Steps
|
12
|
+
|
13
|
+
Provide steps to test functionality, described in detail for someone not familiar with this part of the application / code base
|
14
|
+
|
15
|
+
|
9
16
|
### Other Information
|
10
17
|
|
11
18
|
If there's anything else that's important and relevant to your pull
|
@@ -26,11 +33,13 @@ products, we must have the copyright associated with the entire
|
|
26
33
|
codebase. Any code you create which is merged must be owned by us.
|
27
34
|
That's not us trying to be a jerks, that's just the way it works.
|
28
35
|
|
29
|
-
Please review the [CONTRIBUTING.md](https://github.com/dradis/dradis-ce/blob/master/CONTRIBUTING.md)
|
30
|
-
file for the details.
|
31
|
-
|
32
36
|
You can delete this section, but the following sentence needs to
|
33
37
|
remain in the PR's description:
|
34
38
|
|
35
39
|
> I assign all rights, including copyright, to any future Dradis
|
36
40
|
> work by myself to Security Roots.
|
41
|
+
|
42
|
+
### Check List
|
43
|
+
|
44
|
+
- [ ] Added a CHANGELOG entry
|
45
|
+
- [ ] Added specs
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
v4.12.0 (May 2024)
|
2
|
+
- Migrate integration to use Mappings Manager
|
3
|
+
- Update Dradis links in README
|
4
|
+
- Update template names to include uploader
|
5
|
+
|
6
|
+
v4.11.0 (January 2024)
|
7
|
+
- Fix compatibility with nokogiri >= 1.15
|
8
|
+
|
1
9
|
v4.10.0 (September 2023)
|
2
10
|
- Update gemspec links
|
3
11
|
|
data/README.md
CHANGED
@@ -5,18 +5,17 @@
|
|
5
5
|
|
6
6
|
Upload Burp Scanner XML export files into Dradis.
|
7
7
|
|
8
|
-
The add-on requires [Dradis CE](https://
|
9
|
-
|
8
|
+
The add-on requires [Dradis CE](https://dradis.com/ce/) > 3.0, or [Dradis Pro](https://dradis.com/).
|
10
9
|
|
11
10
|
|
12
11
|
## More information
|
13
12
|
|
14
|
-
See the Dradis Framework's [README.md](https://github.com/dradis/
|
13
|
+
See the Dradis Framework's [README.md](https://github.com/dradis/dradis-ce/blob/develop/README.md)
|
15
14
|
|
16
15
|
|
17
16
|
## Contributing
|
18
17
|
|
19
|
-
See the Dradis Framework's [CONTRIBUTING.md](https://github.com/dradis/
|
18
|
+
See the Dradis Framework's [CONTRIBUTING.md](https://github.com/dradis/dradis-ce/blob/develop/CONTRIBUTING.md)
|
20
19
|
|
21
20
|
|
22
21
|
## License
|
data/lib/burp/html/issue.rb
CHANGED
@@ -153,7 +153,7 @@ module Burp
|
|
153
153
|
table = h2.next_element
|
154
154
|
|
155
155
|
summary_table_tags.each do |tag|
|
156
|
-
td = table.
|
156
|
+
td = table.xpath("//td[starts-with(.,'#{tag.to_s.capitalize}:')]").first
|
157
157
|
@summary[tag] = td.next_element.text
|
158
158
|
end
|
159
159
|
|
@@ -12,7 +12,7 @@ module Dradis::Plugins::Burp
|
|
12
12
|
|
13
13
|
class Importer < Dradis::Plugins::Upload::Importer
|
14
14
|
def self.templates
|
15
|
-
{ evidence: 'html_evidence', issue: '
|
15
|
+
{ evidence: 'html_evidence', issue: 'html_issue' }
|
16
16
|
end
|
17
17
|
|
18
18
|
def initialize(args={})
|
@@ -56,8 +56,8 @@ module Dradis::Plugins::Burp
|
|
56
56
|
end
|
57
57
|
issue_id = html_issue.attr('id').value
|
58
58
|
issue_text =
|
59
|
-
|
60
|
-
|
59
|
+
mapping_service.apply_mapping(
|
60
|
+
source: 'html_issue',
|
61
61
|
data: html_issue
|
62
62
|
)
|
63
63
|
|
@@ -90,13 +90,13 @@ module Dradis::Plugins::Burp
|
|
90
90
|
evidence_id = html_evidence.attr('id').value
|
91
91
|
logger.info { "Processing evidence #{evidence_id}" }
|
92
92
|
|
93
|
-
host_td = html_evidence.
|
93
|
+
host_td = html_evidence.xpath("//td[starts-with(.,'Host:')]").first
|
94
94
|
host_label = host_td.next_element.text.split('//').last
|
95
95
|
host = content_service.create_node(label: host_label, type: :host)
|
96
96
|
|
97
97
|
evidence_text =
|
98
|
-
|
99
|
-
|
98
|
+
mapping_service.apply_mapping(
|
99
|
+
source: 'html_evidence',
|
100
100
|
data: html_evidence
|
101
101
|
)
|
102
102
|
|
@@ -0,0 +1,106 @@
|
|
1
|
+
module Dradis::Plugins::Burp
|
2
|
+
module Mapping
|
3
|
+
|
4
|
+
DEFAULT_MAPPING = {
|
5
|
+
html_evidence: {
|
6
|
+
'Host' => '{{ burp[issue.host] }}',
|
7
|
+
'Path' => '{{ burp[issue.path] }}',
|
8
|
+
'Location' => '{{ burp[issue.location] }}',
|
9
|
+
'Severity' => '{{ burp[issue.severity] }}',
|
10
|
+
'Confidence' => '{{ burp[issue.confidence] }}',
|
11
|
+
'Request' => 'bc.. {{ burp[issue.request] }}',
|
12
|
+
'Response' => 'bc.. {{ burp[issue.response] }}',
|
13
|
+
'Request 1' => 'bc.. {{ burp[issue.request_1] }}',
|
14
|
+
'Response 1' => 'bc.. {{ burp[issue.response_1] }}',
|
15
|
+
'Request 2' => 'bc.. {{ burp[issue.request_2] }}',
|
16
|
+
'Response 2' => 'bc.. {{ burp[issue.response_2] }}',
|
17
|
+
'Request 3' => 'bc.. {{ burp[issue.request_3] }}',
|
18
|
+
'Response 3' => 'bc.. {{ burp[issue.response_3] }}'
|
19
|
+
},
|
20
|
+
html_issue: {
|
21
|
+
'Title' => '{{ burp[issue.name] }}',
|
22
|
+
'Severity' => '{{ burp[issue.severity] }}',
|
23
|
+
'Background' => '{{ burp[issue.background] }}',
|
24
|
+
'RemediationBackground' => '{{ burp[issue.remediation_background] }}',
|
25
|
+
'Detail' => '{{ burp[issue.detail] }}',
|
26
|
+
'RemediationDetails' => '{{ burp[issue.remediation_detail] }}',
|
27
|
+
'References' => '{{ burp[issue.references] }}',
|
28
|
+
'Classifications' => '{{ burp[issue.vulnerability_classifications] }}'
|
29
|
+
},
|
30
|
+
xml_evidence: {
|
31
|
+
'Host' => '{{ burp[issue.host] }}',
|
32
|
+
'Path' => '{{ burp[issue.path] }}',
|
33
|
+
'Location' => '{{ burp[issue.location] }}',
|
34
|
+
'Severity' => '{{ burp[issue.severity] }}',
|
35
|
+
'Confidence' => '{{ burp[issue.confidence] }}',
|
36
|
+
'Request' => 'bc.. {{ burp[issue.request] }}',
|
37
|
+
'Response' => 'bc.. {{ burp[issue.response] }}',
|
38
|
+
'Request 1' => 'bc.. {{ burp[issue.request_1] }}',
|
39
|
+
'Response 1' => 'bc.. {{ burp[issue.response_1] }}',
|
40
|
+
'Request 2' => 'bc.. {{ burp[issue.request_2] }}',
|
41
|
+
'Response 2' => 'bc.. {{ burp[issue.response_2] }}',
|
42
|
+
'Request 3' => 'bc.. {{ burp[issue.request_3] }}',
|
43
|
+
'Response 3' => 'bc.. {{ burp[issue.response_3] }}'
|
44
|
+
},
|
45
|
+
xml_issue: {
|
46
|
+
'Title' => '{{ burp[issue.name] }}',
|
47
|
+
'Severity' => '{{ burp[issue.severity] }}',
|
48
|
+
'Background' => '{{ burp[issue.background] }}',
|
49
|
+
'RemediationBackground' => '{{ burp[issue.remediation_background] }}',
|
50
|
+
'Detail' => '{{ burp[issue.detail] }}',
|
51
|
+
'RemediationDetails' => '{{ burp[issue.remediation_detail] }}',
|
52
|
+
'References' => '{{ burp[issue.references] }}',
|
53
|
+
'Classifications' => '{{ burp[issue.vulnerability_classifications] }}'
|
54
|
+
}
|
55
|
+
}.freeze
|
56
|
+
|
57
|
+
SOURCE_FIELDS = {
|
58
|
+
html_evidence: [
|
59
|
+
'issue.confidence',
|
60
|
+
'issue.detail',
|
61
|
+
'issue.host',
|
62
|
+
'issue.location',
|
63
|
+
'issue.path',
|
64
|
+
'issue.request',
|
65
|
+
'issue.request_1',
|
66
|
+
'issue.request_2',
|
67
|
+
'issue.request_3',
|
68
|
+
'issue.response',
|
69
|
+
'issue.response_1',
|
70
|
+
'issue.response_2',
|
71
|
+
'issue.response_3',
|
72
|
+
'issue.severity'
|
73
|
+
],
|
74
|
+
html_issue: [
|
75
|
+
'issue.background',
|
76
|
+
'issue.detail',
|
77
|
+
'issue.name',
|
78
|
+
'issue.references',
|
79
|
+
'issue.remediation_background',
|
80
|
+
'issue.remediation_detail',
|
81
|
+
'issue.severity',
|
82
|
+
'issue.vulnerability_classifications'
|
83
|
+
],
|
84
|
+
xml_evidence: [
|
85
|
+
'issue.host',
|
86
|
+
'issue.path',
|
87
|
+
'issue.location',
|
88
|
+
'issue.severity',
|
89
|
+
'issue.confidence',
|
90
|
+
'issue.request',
|
91
|
+
'issue.response',
|
92
|
+
'issue.detail'
|
93
|
+
],
|
94
|
+
xml_issue: [
|
95
|
+
'issue.background',
|
96
|
+
'issue.detail',
|
97
|
+
'issue.name',
|
98
|
+
'issue.references',
|
99
|
+
'issue.remediation_background',
|
100
|
+
'issue.remediation_detail',
|
101
|
+
'issue.severity',
|
102
|
+
'issue.vulnerability_classifications'
|
103
|
+
]
|
104
|
+
}.freeze
|
105
|
+
end
|
106
|
+
end
|
@@ -16,7 +16,7 @@ module Dradis::Plugins::Burp
|
|
16
16
|
BURP_SEVERITIES = ['Information', 'Low', 'Medium', 'High'].freeze
|
17
17
|
|
18
18
|
def self.templates
|
19
|
-
{ evidence: '
|
19
|
+
{ evidence: 'xml_evidence', issue: 'xml_issue' }
|
20
20
|
end
|
21
21
|
|
22
22
|
def initialize(args={})
|
@@ -75,8 +75,8 @@ module Dradis::Plugins::Burp
|
|
75
75
|
xml_issue.at('severity').content = BURP_SEVERITIES[@severities[id]]
|
76
76
|
|
77
77
|
issue_text =
|
78
|
-
|
79
|
-
|
78
|
+
mapping_service.apply_mapping(
|
79
|
+
source: 'xml_issue',
|
80
80
|
data: xml_issue
|
81
81
|
)
|
82
82
|
|
@@ -94,8 +94,8 @@ module Dradis::Plugins::Burp
|
|
94
94
|
end
|
95
95
|
|
96
96
|
evidence_text =
|
97
|
-
|
98
|
-
|
97
|
+
mapping_service.apply_mapping(
|
98
|
+
source: 'xml_evidence',
|
99
99
|
data: xml_evidence
|
100
100
|
)
|
101
101
|
|
data/lib/dradis/plugins/burp.rb
CHANGED
@@ -0,0 +1,23 @@
|
|
1
|
+
<issue>
|
2
|
+
<serialNumber>5863488220648493056</serialNumber>
|
3
|
+
<type>16777984</type>
|
4
|
+
<name><![CDATA[Strict transport security not enforced]]></name>
|
5
|
+
<host ip="192.168.1.1">https://this.is.a.url</host>
|
6
|
+
<path><![CDATA[/]]></path>
|
7
|
+
<location><![CDATA[/]]></location>
|
8
|
+
<severity>Low</severity>
|
9
|
+
<confidence>Certain</confidence>
|
10
|
+
<issueBackground><![CDATA[<p> The application fails to prevent users from connecting to it over unencrypted connections. An attacker able to modify a legitimate user's network traffic could bypass the application's use of SSL/TLS encryption, and use the application as a platform for attacks against its users. This attack is performed by rewriting HTTPS links as HTTP, so that if a targeted user follows a link to the site from an HTTP page, their browser never attempts to use an encrypted connection. The sslstrip tool automates this process. </p>
|
11
|
+
<p>
|
12
|
+
To exploit this vulnerability, an attacker must be suitably positioned to intercept and modify the victim's network traffic.This scenario typically occurs when a client communicates with the server over an insecure connection such as public Wi-Fi, or a corporate or home network that is shared with a compromised computer. Common defenses such as switched networks are not sufficient to prevent this. An attacker situated in the user's ISP or the application's hosting infrastructure could also perform this attack. Note that an advanced adversary could potentially target any connection made over the Internet's core infrastructure. </p>]]></issueBackground>
|
13
|
+
<remediationBackground><![CDATA[<p>The application should instruct web browsers to only access the application using HTTPS. To do this, enable HTTP Strict Transport Security (HSTS) by adding a response header with the name 'Strict-Transport-Security' and the value 'max-age=expireTime', where expireTime is the time in seconds that browsers should remember that the site should only be accessed using HTTPS. Consider adding the 'includeSubDomains' flag if appropriate.</p>
|
14
|
+
<p>Note that because HSTS is a "trust on first use" (TOFU) protocol, a user who has never accessed the application will never have seen the HSTS header, and will therefore still be vulnerable to SSL stripping attacks. To mitigate this risk, you can optionally add the 'preload' flag to the HSTS header, and submit the domain for review by browser vendors.</p>]]></remediationBackground>
|
15
|
+
<references><![CDATA[<ul>
|
16
|
+
<li><a href="https://developer.mozilla.org/en-US/docs/Web/Security/HTTP_strict_transport_security">HTTP Strict Transport Security</a></li>
|
17
|
+
<li><a href="http://www.thoughtcrime.org/software/sslstrip/">sslstrip</a></li>
|
18
|
+
<li><a href="https://hstspreload.appspot.com/">HSTS Preload Form</a></li>
|
19
|
+
</ul>]]></references>
|
20
|
+
<vulnerabilityClassifications><![CDATA[<ul>
|
21
|
+
<li><a href="https://cwe.mitre.org/data/definitions/523.html">CWE-523: Unprotected Transport of Credentials</a></li>
|
22
|
+
</ul>]]></vulnerabilityClassifications>
|
23
|
+
</issue>
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dradis-burp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.
|
4
|
+
version: 4.12.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel Martin
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-05-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: dradis-plugins
|
@@ -122,6 +122,7 @@ files:
|
|
122
122
|
- lib/dradis/plugins/burp/field_processor.rb
|
123
123
|
- lib/dradis/plugins/burp/gem_version.rb
|
124
124
|
- lib/dradis/plugins/burp/html/importer.rb
|
125
|
+
- lib/dradis/plugins/burp/mapping.rb
|
125
126
|
- lib/dradis/plugins/burp/version.rb
|
126
127
|
- lib/dradis/plugins/burp/xml/importer.rb
|
127
128
|
- lib/tasks/thorfile.rb
|
@@ -132,15 +133,10 @@ files:
|
|
132
133
|
- spec/fixtures/files/invalid-utf-issue.xml
|
133
134
|
- spec/fixtures/files/without-base64.xml
|
134
135
|
- spec/spec_helper.rb
|
135
|
-
- templates/evidence.fields
|
136
|
-
- templates/evidence.sample
|
137
|
-
- templates/evidence.template
|
138
|
-
- templates/html_evidence.fields
|
139
136
|
- templates/html_evidence.sample
|
140
|
-
- templates/
|
141
|
-
- templates/
|
142
|
-
- templates/
|
143
|
-
- templates/issue.template
|
137
|
+
- templates/html_issue.sample
|
138
|
+
- templates/xml_evidence.sample
|
139
|
+
- templates/xml_issue.sample
|
144
140
|
homepage: https://dradis.com/integrations/burp.html
|
145
141
|
licenses:
|
146
142
|
- GPL-2
|
data/templates/evidence.fields
DELETED
data/templates/evidence.template
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
#[Host]#
|
2
|
-
%issue.host%
|
3
|
-
|
4
|
-
#[Path]#
|
5
|
-
%issue.path%
|
6
|
-
|
7
|
-
#[Location]#
|
8
|
-
%issue.location%
|
9
|
-
|
10
|
-
#[Severity]#
|
11
|
-
%issue.severity%
|
12
|
-
|
13
|
-
#[Confidence]#
|
14
|
-
%issue.confidence%
|
15
|
-
|
16
|
-
#[Request]#
|
17
|
-
bc.. %issue.request%
|
18
|
-
|
19
|
-
#[Response]#
|
20
|
-
bc.. %issue.response%
|
@@ -1,50 +0,0 @@
|
|
1
|
-
#[Host]#
|
2
|
-
%issue.host%
|
3
|
-
|
4
|
-
|
5
|
-
#[Path]#
|
6
|
-
%issue.path%
|
7
|
-
|
8
|
-
|
9
|
-
#[Location]#
|
10
|
-
%issue.location%
|
11
|
-
|
12
|
-
|
13
|
-
#[Severity]#
|
14
|
-
%issue.severity%
|
15
|
-
|
16
|
-
|
17
|
-
#[Confidence]#
|
18
|
-
%issue.confidence%
|
19
|
-
|
20
|
-
|
21
|
-
#[Request]#
|
22
|
-
bc.. %issue.request%
|
23
|
-
|
24
|
-
|
25
|
-
#[Response]#
|
26
|
-
bc.. %issue.response%
|
27
|
-
|
28
|
-
|
29
|
-
#[Request 1]#
|
30
|
-
bc.. %issue.request_1%
|
31
|
-
|
32
|
-
|
33
|
-
#[Response 1]#
|
34
|
-
bc.. %issue.response_1%
|
35
|
-
|
36
|
-
|
37
|
-
#[Request 2]#
|
38
|
-
bc.. %issue.request_2%
|
39
|
-
|
40
|
-
|
41
|
-
#[Response 2]#
|
42
|
-
bc.. %issue.response_2%
|
43
|
-
|
44
|
-
|
45
|
-
#[Request 3]#
|
46
|
-
bc.. %issue.request_3%
|
47
|
-
|
48
|
-
|
49
|
-
#[Response 3]#
|
50
|
-
bc.. %issue.response_3%
|
data/templates/issue.fields
DELETED
data/templates/issue.template
DELETED
@@ -1,30 +0,0 @@
|
|
1
|
-
#[Title]#
|
2
|
-
%issue.name%
|
3
|
-
|
4
|
-
|
5
|
-
#[Severity]#
|
6
|
-
%issue.severity%
|
7
|
-
|
8
|
-
|
9
|
-
#[Background]#
|
10
|
-
%issue.background%
|
11
|
-
|
12
|
-
|
13
|
-
#[RemediationBackground]#
|
14
|
-
%issue.remediation_background%
|
15
|
-
|
16
|
-
|
17
|
-
#[Detail]#
|
18
|
-
%issue.detail%
|
19
|
-
|
20
|
-
|
21
|
-
#[RemediationDetails]#
|
22
|
-
%issue.remediation_detail%
|
23
|
-
|
24
|
-
|
25
|
-
#[References]#
|
26
|
-
%issue.references%
|
27
|
-
|
28
|
-
|
29
|
-
#[Classifications]#
|
30
|
-
%issue.vulnerability_classifications%
|
File without changes
|
File without changes
|