id: mixed-passive-content

info:
  name: Mixed Passive Content
  author: Liwermor
  severity: info
  description: |
    This check detects if there are any passive content being loaded over HTTP instead of HTTPS.
  reference:
    - https://developer.mozilla.org/en-US/docs/Web/Security/Mixed_content
    - https://portswigger.net/kb/issues/01000400_mixed-content
    - https://resources.infosecinstitute.com/topics/vulnerabilities/https-mixed-content-vulnerability/
    - https://docs.gitlab.com/ee/user/application_security/dast/checks/319.1.html
  metadata:
    max-request: 1
  tags: misconfig

http:
  - method: GET
    path:
      - "{{BaseURL}}"

    host-redirects: true
    max-redirects: 3
    matchers-condition: or
    matchers:
      - type: regex
        part: body
        name: img
        regex:
          - "<img[^>]*src=['\"]http://[^'\">]+['\"]"

      - type: regex
        part: body
        name: audio
        regex:
          - "<audio[^>]*src=['\"]http://[^'\">]+['\"]"

      - type: regex
        part: body
        name: video
        regex:
          - "<video[^>]*src=['\"]http://[^'\">]+['\"]"

    extractors:
      - type: regex
        group: 1
        part: body
        regex:
          - "<img[^>]*src=['\"](http[^s'\">][^'\">]*)['\"]"
          - "<audio[^>]*src=['\"](http[^s'\">][^'\">]*)['\"]"
          - "<video[^>]*src=['\"](http[^s'\">][^'\">]*)['\"]"
# digest: 490a004630440220153ae7ea039ff6f25704864569661bef3606155b89b15cdb33f83d0f4b842a6d02201ba93516a995369335dd8e40a1675c7d04c04b418a209f1cd940b1983ac28521:922c64590222798bb761d5b6d8e72950