mirror of
https://github.com/projectdiscovery/nuclei-templates.git
synced 2026-02-13 22:23:23 +08:00
51 lines
1.7 KiB
YAML
51 lines
1.7 KiB
YAML
id: cookies-without-secure
|
|
|
|
info:
|
|
name: Cookies without Secure attribute - Detect
|
|
author: vthiery,RJ Coleman
|
|
severity: info
|
|
description: |
|
|
Checks whether cookies in the HTTP response contain the Secure attribute. If the Secure flag is set, it means that the cookie can only be transmitted over HTTPS
|
|
impact: |
|
|
Lack of Secure flag on cookies allows the cookie to be sent over unsecure HTTP, making it vulnerable to man-in-the-middle (MITM) attacks.
|
|
remediation: |
|
|
Ensure that all cookies are set with the Secure attribute to prevent MITM attacks.
|
|
reference:
|
|
- https://owasp.org/www-community/controls/SecureCookieAttribute
|
|
classification:
|
|
cvss-metrics: CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:N
|
|
cvss-score: 0
|
|
metadata:
|
|
verified: true
|
|
max-request: 1
|
|
tags: misconfig,http,cookie,generic
|
|
|
|
flow: |
|
|
http()
|
|
javascript()
|
|
|
|
http:
|
|
- method: GET
|
|
path:
|
|
- "{{BaseURL}}"
|
|
host-redirects: true
|
|
max-redirects: 2
|
|
|
|
javascript:
|
|
- code: |
|
|
content = template.http_all_headers
|
|
const setCookieLines = content
|
|
.split(/\r\n/)
|
|
.filter(line => line.trim().toLowerCase().startsWith('set-cookie:'));
|
|
const nonSecureCookies = setCookieLines.filter(line => !line.toLowerCase().includes('secure'));
|
|
const cookieNames = nonSecureCookies.map(line => {
|
|
const match = line.match(/set-cookie:\s*([^=]+)=/i);
|
|
return match ? match[1] : null;
|
|
}).filter(Boolean);
|
|
cookieNames
|
|
|
|
extractors:
|
|
- type: regex
|
|
regex:
|
|
- '[a-zA-Z0-9_-]+'
|
|
# digest: 490a0046304402203c40f31794d6d2667d13faa55d201451ba8eee9cf390a4fe6c7d62b06031880b02205d896a6a3cab707c824d7092f7a346e8c38e30fcac61e935c09eb26e40cdad94:922c64590222798bb761d5b6d8e72950 |