@voidagency/web-scanner 0.0.7 → 0.0.8
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.
package/dist/cli.js
CHANGED
|
File without changes
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@voidagency/web-scanner",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.8",
|
|
4
4
|
"description": "Security scanning CLI with authentication support - orchestrating ZAP, Nuclei, and testssl.sh",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/cli.js",
|
|
7
7
|
"bin": {
|
|
8
|
-
"voidsec": "
|
|
8
|
+
"voidsec": "dist/cli.js"
|
|
9
9
|
},
|
|
10
10
|
"files": [
|
|
11
11
|
"dist",
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
id: drupal-api-unpublished-document-exposed
|
|
2
|
+
|
|
3
|
+
info:
|
|
4
|
+
name: Drupal JSON:API Unpublished Documents Exposed
|
|
5
|
+
author: voidsec
|
|
6
|
+
severity: high
|
|
7
|
+
description: |
|
|
8
|
+
Unauthenticated JSON:API access to unpublished file--document entities was detected.
|
|
9
|
+
Anonymous users can list draft files via ?filter[status]=0, exposing filenames and URIs.
|
|
10
|
+
This typically indicates the Anonymous role has "Bypass file access controls" or overly
|
|
11
|
+
broad view permissions on file entities — not merely a filter misconfiguration.
|
|
12
|
+
A secure site returns data:[] with omitted access-denied entries while meta.count > 0.
|
|
13
|
+
remediation: |
|
|
14
|
+
Remove "Bypass file access controls" from the Anonymous role.
|
|
15
|
+
Restrict view permissions on file--document and related entity types.
|
|
16
|
+
Review JSON:API / jsonapi_extras exposure settings.
|
|
17
|
+
reference:
|
|
18
|
+
- https://www.drupal.org/docs/8/modules/json-api/filtering#filters-access-control
|
|
19
|
+
- https://www.drupal.org/docs/core-modules-and-themes/core-modules/jsonapi-module/security-considerations
|
|
20
|
+
classification:
|
|
21
|
+
cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
|
|
22
|
+
cvss-score: 7.5
|
|
23
|
+
cwe-id: CWE-200
|
|
24
|
+
metadata:
|
|
25
|
+
verified: true
|
|
26
|
+
max-request: 2
|
|
27
|
+
vendor: drupal
|
|
28
|
+
product: drupal
|
|
29
|
+
tags: drupal,exposure,api,jsonapi,file,draft,misconfig,high
|
|
30
|
+
|
|
31
|
+
http:
|
|
32
|
+
- method: GET
|
|
33
|
+
path:
|
|
34
|
+
- "{{BaseURL}}/api/file/document?filter[status]=0"
|
|
35
|
+
- "{{BaseURL}}/jsonapi/file/document?filter[status]=0"
|
|
36
|
+
|
|
37
|
+
stop-at-first-match: true
|
|
38
|
+
|
|
39
|
+
headers:
|
|
40
|
+
Accept: application/vnd.api+json
|
|
41
|
+
|
|
42
|
+
matchers-condition: and
|
|
43
|
+
matchers:
|
|
44
|
+
- type: status
|
|
45
|
+
status:
|
|
46
|
+
- 200
|
|
47
|
+
|
|
48
|
+
- type: word
|
|
49
|
+
part: header
|
|
50
|
+
words:
|
|
51
|
+
- "application/json"
|
|
52
|
+
- "application/vnd.api+json"
|
|
53
|
+
condition: or
|
|
54
|
+
|
|
55
|
+
- type: regex
|
|
56
|
+
part: body
|
|
57
|
+
regex:
|
|
58
|
+
- '"data"\s*:\s*\[\s*\{'
|
|
59
|
+
|
|
60
|
+
- type: word
|
|
61
|
+
part: body
|
|
62
|
+
words:
|
|
63
|
+
- '"file--document"'
|
|
64
|
+
- '"status":false'
|
|
65
|
+
condition: and
|
|
66
|
+
|
|
67
|
+
- type: word
|
|
68
|
+
part: body
|
|
69
|
+
words:
|
|
70
|
+
- '"errors"'
|
|
71
|
+
- '"data":[]'
|
|
72
|
+
negative: true
|
|
73
|
+
condition: or
|
|
74
|
+
|
|
75
|
+
extractors:
|
|
76
|
+
- type: json
|
|
77
|
+
name: draft_filenames
|
|
78
|
+
json:
|
|
79
|
+
- '.data[].attributes.filename'
|
|
80
|
+
|
|
81
|
+
- type: json
|
|
82
|
+
name: draft_uris
|
|
83
|
+
json:
|
|
84
|
+
- '.data[].attributes.uri.url'
|
package/zap.yaml
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
env:
|
|
2
|
-
contexts:
|
|
3
|
-
- excludePaths: []
|
|
4
|
-
name: baseline
|
|
5
|
-
urls:
|
|
6
|
-
- https://backend-agr.leserveurdetest.com/fr
|
|
7
|
-
- https://backend-agr.leserveurdetest.com/
|
|
8
|
-
parameters:
|
|
9
|
-
failOnError: true
|
|
10
|
-
progressToStdout: false
|
|
11
|
-
jobs:
|
|
12
|
-
- parameters:
|
|
13
|
-
enableTags: false
|
|
14
|
-
maxAlertsPerRule: 10
|
|
15
|
-
type: passiveScan-config
|
|
16
|
-
- parameters:
|
|
17
|
-
maxDuration: 1
|
|
18
|
-
url: https://backend-agr.leserveurdetest.com/
|
|
19
|
-
type: spider
|
|
20
|
-
- parameters:
|
|
21
|
-
maxDuration: 0
|
|
22
|
-
type: passiveScan-wait
|
|
23
|
-
- parameters:
|
|
24
|
-
format: Long
|
|
25
|
-
summaryFile: /home/zap/zap_out.json
|
|
26
|
-
rules: []
|
|
27
|
-
type: outputSummary
|
|
28
|
-
- parameters:
|
|
29
|
-
reportDescription: ''
|
|
30
|
-
reportDir: /zap/wrk/
|
|
31
|
-
reportFile: zap-report.json
|
|
32
|
-
reportTitle: ZAP Scanning Report
|
|
33
|
-
template: traditional-json
|
|
34
|
-
type: report
|