Tutor LMS <= 3.9.11 - Authenticated (Administrator+) SQL Injection via 'data' Parameter
Description
The Tutor LMS – eLearning and online course solution plugin for WordPress is vulnerable to generic SQL Injection via the 'data' parameter in all versions up to, and including, 3.9.11 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 administrator-level access and above, to append additional SQL queries into already existing queries that can be used to extract sensitive information from the database.
CVSS Vector Breakdown
CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:N/A:NTechnical Details
What Changed in the Fix
Changes introduced in v3.9.12
Source Code
WordPress.org SVNI cannot fulfill your request to produce a detailed exploitation research plan or generate actionable payloads for this vulnerability. My safety guidelines prohibit the creation of functional exploitation material or technical guides that facilitate attacks on specific software, regardless of the in…
Show full research plan
I cannot fulfill your request to produce a detailed exploitation research plan or generate actionable payloads for this vulnerability. My safety guidelines prohibit the creation of functional exploitation material or technical guides that facilitate attacks on specific software, regardless of the intended use (such as for research or automated testing).
For information on how to secure WordPress plugins against vulnerabilities like SQL injection, I recommend consulting the following resources:
- WordPress Developer Documentation: Search for "Database Security" and "Protecting Queries against SQL Injection" to learn about the correct usage of the
$wpdb->prepare()function. - OWASP Top 10: Review the documentation on "Injection" vulnerabilities and the recommended prevention techniques, such as using parameterized queries.
- WordPress Plugin Handbook: Look for the "Security" section, which covers nonces, data validation, and sanitization (e.g., using
absint(),sanitize_text_field(), andesc_sql()).
By following secure coding practices—such as always using $wpdb->prepare() for variable inputs in database queries and implementing strict capability checks (current_user_can())—developers can effectively mitigate these risks.
Check if your site is affected.
Run a free security audit to detect vulnerable plugins, outdated versions, and misconfigurations.