id: laravel-env

info:
  name: Laravel - Sensitive Information Disclosure
  author: pxmme1337,dwisiswant0,geeknik,emenalf,adrianmf
  severity: high
  description: |
    A Laravel .env file was discovered, which stores sensitive information like database credentials and tokens. It should not be publicly accessible.
  reference:
    - https://laravel.com/docs/master/configuration#environment-configuration
    - https://stackoverflow.com/questions/38331397/how-to-protect-env-file-in-laravel
  classification:
    cvss-metrics: CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:L
    cvss-score: 8.3
    cwe-id: CWE-522
  metadata:
    max-request: 22
  tags: config,exposure,laravel,vuln

http:
  - method: GET
    path:
      - "{{BaseURL}}{{paths}}"
    payloads:
      paths:
        - "/.env"
        - "/.env.bak"
        - "/.env.dev"
        - "/.env.dev.local"
        - "/.env.development.local"
        - "/.env.prod"
        - "/.env.prod.local"
        - "/.env.production"
        - "/.env.production.local"
        - "/.env.local"
        - "/.env.example"
        - "/.env.stage"
        - "/.env.live"
        - "/.env.backup"
        - "/.env.save"
        - "/.env.old"
        - "/.env.www"
        - "/.env_1"
        - "/.env_sample"
        - "/.env.{{DN}}"
        - "/.env.{{SD}}"
        - "/api/.env"

    matchers-condition: and
    matchers:
      - type: regex
        part: body
        regex:
          - "(?mi)^APP_(NAME|ENV|KEY|DEBUG|URL|PASSWORD)="
          - "(?mi)^DB_(HOST|PASSWORD|DATABASE)="
        condition: or

      - type: dsl
        dsl:
          - "!contains(tolower(content_type), 'text/html')"

      - type: status
        status:
          - 200
# digest: 4a0a0047304502201fe182bc5b716fb15cc168d7ca597178c6dd0bba60f826aae4f3490d6b566044022100f50021648bb38e51bdaff1a5d18e5f18edf95d280604b77da04d368e08fa9579:922c64590222798bb761d5b6d8e72950