@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.7",
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": "./dist/cli.js"
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