2021-07-28 14:40:20 +02:00
|
|
|
id: http-missing-security-headers
|
|
|
|
|
|
|
|
|
|
info:
|
|
|
|
|
name: HTTP Missing Security Headers
|
2022-05-17 23:49:08 +03:00
|
|
|
author: socketz,geeknik,G4L1T0,convisoappsec,kurohost,dawid-czarnecki,forgedhallpass
|
2021-07-28 14:40:20 +02:00
|
|
|
severity: info
|
2022-05-20 17:38:52 -04:00
|
|
|
description: |
|
|
|
|
|
This template searches for missing HTTP security headers. The impact of these missing headers can vary.
|
2022-10-24 20:12:57 +05:30
|
|
|
tags: misconfig,headers,generic
|
2021-07-28 14:40:20 +02:00
|
|
|
|
|
|
|
|
requests:
|
|
|
|
|
- method: GET
|
|
|
|
|
path:
|
|
|
|
|
- "{{BaseURL}}"
|
2021-09-03 22:24:11 +05:30
|
|
|
|
2022-10-08 02:57:25 +05:30
|
|
|
host-redirects: true
|
2021-07-28 14:40:20 +02:00
|
|
|
max-redirects: 3
|
|
|
|
|
matchers-condition: or
|
|
|
|
|
matchers:
|
2022-05-17 23:49:08 +03:00
|
|
|
- type: dsl
|
2021-09-03 22:24:11 +05:30
|
|
|
name: strict-transport-security
|
2022-05-17 23:49:08 +03:00
|
|
|
dsl:
|
|
|
|
|
- "!regex('(?i)strict-transport-security', all_headers)"
|
|
|
|
|
- "status_code != 301 && status_code != 302"
|
|
|
|
|
condition: and
|
2021-09-03 22:24:11 +05:30
|
|
|
|
2022-05-17 23:49:08 +03:00
|
|
|
- type: dsl
|
2021-09-03 22:24:11 +05:30
|
|
|
name: content-security-policy
|
2022-05-17 23:49:08 +03:00
|
|
|
dsl:
|
|
|
|
|
- "!regex('(?i)content-security-policy', all_headers)"
|
|
|
|
|
- "status_code != 301 && status_code != 302"
|
|
|
|
|
condition: and
|
2021-09-03 22:24:11 +05:30
|
|
|
|
2022-05-17 23:49:08 +03:00
|
|
|
- type: dsl
|
2022-09-23 13:56:33 +03:00
|
|
|
name: permissions-policy
|
2022-05-17 23:49:08 +03:00
|
|
|
dsl:
|
2022-09-23 13:56:33 +03:00
|
|
|
- "!regex('(?i)permissions-policy', all_headers)"
|
2022-05-17 23:49:08 +03:00
|
|
|
- "status_code != 301 && status_code != 302"
|
|
|
|
|
condition: and
|
2021-12-29 09:36:58 -05:00
|
|
|
|
2022-05-17 23:49:08 +03:00
|
|
|
- type: dsl
|
2021-09-03 22:24:11 +05:30
|
|
|
name: x-frame-options
|
2022-05-17 23:49:08 +03:00
|
|
|
dsl:
|
|
|
|
|
- "!regex('(?i)x-frame-options', all_headers)"
|
|
|
|
|
- "status_code != 301 && status_code != 302"
|
|
|
|
|
condition: and
|
2021-09-03 22:24:11 +05:30
|
|
|
|
2022-05-17 23:49:08 +03:00
|
|
|
- type: dsl
|
2021-09-03 22:24:11 +05:30
|
|
|
name: x-content-type-options
|
2022-05-17 23:49:08 +03:00
|
|
|
dsl:
|
|
|
|
|
- "!regex('(?i)x-content-type-options', all_headers)"
|
|
|
|
|
- "status_code != 301 && status_code != 302"
|
|
|
|
|
condition: and
|
2021-09-03 22:24:11 +05:30
|
|
|
|
2022-05-17 23:49:08 +03:00
|
|
|
- type: dsl
|
2021-09-03 22:24:11 +05:30
|
|
|
name: x-permitted-cross-domain-policies
|
2022-05-17 23:49:08 +03:00
|
|
|
dsl:
|
|
|
|
|
- "!regex('(?i)x-permitted-cross-domain-policies', all_headers)"
|
|
|
|
|
- "status_code != 301 && status_code != 302"
|
|
|
|
|
condition: and
|
2021-09-03 22:24:11 +05:30
|
|
|
|
2022-05-17 23:49:08 +03:00
|
|
|
- type: dsl
|
2021-09-03 22:24:11 +05:30
|
|
|
name: referrer-policy
|
2022-05-17 23:49:08 +03:00
|
|
|
dsl:
|
|
|
|
|
- "!regex('(?i)referrer-policy', all_headers)"
|
|
|
|
|
- "status_code != 301 && status_code != 302"
|
|
|
|
|
condition: and
|
2021-09-03 22:24:11 +05:30
|
|
|
|
2022-05-17 23:49:08 +03:00
|
|
|
- type: dsl
|
2021-09-03 22:24:11 +05:30
|
|
|
name: clear-site-data
|
2022-05-17 23:49:08 +03:00
|
|
|
dsl:
|
|
|
|
|
- "!regex('(?i)clear-site-data', all_headers)"
|
|
|
|
|
- "status_code != 301 && status_code != 302"
|
|
|
|
|
condition: and
|
2021-09-03 22:24:11 +05:30
|
|
|
|
2022-05-17 23:49:08 +03:00
|
|
|
- type: dsl
|
2021-09-03 22:24:11 +05:30
|
|
|
name: cross-origin-embedder-policy
|
2022-05-17 23:49:08 +03:00
|
|
|
dsl:
|
|
|
|
|
- "!regex('(?i)cross-origin-embedder-policy', all_headers)"
|
|
|
|
|
- "status_code != 301 && status_code != 302"
|
|
|
|
|
condition: and
|
2021-09-03 22:24:11 +05:30
|
|
|
|
2022-05-17 23:49:08 +03:00
|
|
|
- type: dsl
|
2021-09-03 22:24:11 +05:30
|
|
|
name: cross-origin-opener-policy
|
2022-05-17 23:49:08 +03:00
|
|
|
dsl:
|
|
|
|
|
- "!regex('(?i)cross-origin-opener-policy', all_headers)"
|
|
|
|
|
- "status_code != 301 && status_code != 302"
|
|
|
|
|
condition: and
|
2021-09-03 22:24:11 +05:30
|
|
|
|
2022-05-17 23:49:08 +03:00
|
|
|
- type: dsl
|
2021-09-03 22:24:11 +05:30
|
|
|
name: cross-origin-resource-policy
|
2022-05-17 23:49:08 +03:00
|
|
|
dsl:
|
|
|
|
|
- "!regex('(?i)cross-origin-resource-policy', all_headers)"
|
|
|
|
|
- "status_code != 301 && status_code != 302"
|
|
|
|
|
condition: and
|
2021-09-03 22:24:11 +05:30
|
|
|
|
2022-05-17 23:49:08 +03:00
|
|
|
- type: dsl
|
2021-09-03 22:24:11 +05:30
|
|
|
name: access-control-allow-origin
|
2022-05-17 23:49:08 +03:00
|
|
|
dsl:
|
|
|
|
|
- "!regex('(?i)access-control-allow-origin', all_headers)"
|
|
|
|
|
- "status_code != 301 && status_code != 302"
|
|
|
|
|
condition: and
|
2021-09-03 22:24:11 +05:30
|
|
|
|
2022-05-17 23:49:08 +03:00
|
|
|
- type: dsl
|
2021-09-03 22:24:11 +05:30
|
|
|
name: access-control-allow-credentials
|
2022-05-17 23:49:08 +03:00
|
|
|
dsl:
|
|
|
|
|
- "!regex('(?i)access-control-allow-credentials', all_headers)"
|
|
|
|
|
- "status_code != 301 && status_code != 302"
|
|
|
|
|
condition: and
|
2021-09-03 22:24:11 +05:30
|
|
|
|
2022-05-17 23:49:08 +03:00
|
|
|
- type: dsl
|
2021-09-03 22:24:11 +05:30
|
|
|
name: access-control-expose-headers
|
2022-05-17 23:49:08 +03:00
|
|
|
dsl:
|
|
|
|
|
- "!regex('(?i)access-control-expose-headers', all_headers)"
|
|
|
|
|
- "status_code != 301 && status_code != 302"
|
|
|
|
|
condition: and
|
2021-09-03 22:24:11 +05:30
|
|
|
|
2022-05-17 23:49:08 +03:00
|
|
|
- type: dsl
|
2021-09-03 22:24:11 +05:30
|
|
|
name: access-control-max-age
|
2022-05-17 23:49:08 +03:00
|
|
|
dsl:
|
|
|
|
|
- "!regex('(?i)access-control-max-age', all_headers)"
|
|
|
|
|
- "status_code != 301 && status_code != 302"
|
|
|
|
|
condition: and
|
2021-09-03 22:24:11 +05:30
|
|
|
|
2022-05-17 23:49:08 +03:00
|
|
|
- type: dsl
|
2021-09-03 22:24:11 +05:30
|
|
|
name: access-control-allow-methods
|
2022-05-17 23:49:08 +03:00
|
|
|
dsl:
|
|
|
|
|
- "!regex('(?i)access-control-allow-methods', all_headers)"
|
|
|
|
|
- "status_code != 301 && status_code != 302"
|
|
|
|
|
condition: and
|
2021-09-03 22:24:11 +05:30
|
|
|
|
2022-05-17 23:49:08 +03:00
|
|
|
- type: dsl
|
2021-09-03 22:24:11 +05:30
|
|
|
name: access-control-allow-headers
|
2022-05-17 23:49:08 +03:00
|
|
|
dsl:
|
|
|
|
|
- "!regex('(?i)access-control-allow-headers', all_headers)"
|
|
|
|
|
- "status_code != 301 && status_code != 302"
|
|
|
|
|
condition: and
|