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.01621 epss-percentile: 0.86175 cpe: cpe:2.3:a:piwigo:piwigo:*:*:*:*:*:*:*:* metadata: verified: true max-request: 2 vendor: piwigo product: piwigo shodan-query: http.favicon.hash:540706145 tags: cve2023,cve,piwigo,sqli,authenticated 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 # digest: 490a00463044022008b98c50259984aac531d4812c005be599db235324a444c7a125dcc0fab0925002200fec9d238e01e18c9a70223ed7e68eea8945c5628b7149aebded1e9259cf169e:922c64590222798bb761d5b6d8e72950