Files
nuclei-templates/http/misconfiguration/cookies-without-secure.yaml
Prince Chaddha ea7a5969c8 Revert "chore: update TemplateMan 🤖"
This reverts commit c31d574176.
2025-05-27 10:39:47 +08:00

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