Description
The Animated Number Counters plugin for WordPress is vulnerable to generic SQL Injection via the 'counterid' parameter in all versions up to, and including, 3.0 due to insufficient escaping on the user supplied parameter and lack of sufficient preparation on the existing SQL query. This makes it possible for authenticated attackers, with editor-level access and above, to append additional SQL queries into already existing queries that can be used to extract sensitive information from the database. This is a second-order SQL injection: the write path correctly uses $wpdb->prepare(), but that protection is not carried forward to the read path, where the retrieved value is concatenated unsanitized into unprepared queries in both a single-quoted string context and a bare numeric context.
References10
- plugins.trac.wordpress.org/browser/animated-number-counters/tag…
- plugins.trac.wordpress.org/browser/animated-number-counters/tag…
- plugins.trac.wordpress.org/browser/animated-number-counters/tag…
- plugins.trac.wordpress.org/browser/animated-number-counters/tag…
- plugins.trac.wordpress.org/browser/animated-number-counters/tag…
- plugins.trac.wordpress.org/browser/animated-number-counters/tag…
- plugins.trac.wordpress.org/browser/animated-number-counters/tag…
- plugins.trac.wordpress.org/browser/animated-number-counters/tag…
- plugins.trac.wordpress.org/changeset/3603796/animated-number-co…
- wordpress.org/plugins/animated-number-counters
Metrics
- CVSS 3.1
-
4.9
MEDIUM
Score source: CNA
CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:N/A:N - EPSS — exploit probability
- 0% percentile: 30 · as of 11 November 2026
- CWE
- CWE-89
Could this be exploited in your environment?
A patch closes the known hole. A penetration test shows what an attacker can still reach — with proof.