Several flaws in popular WordPress E-Learning plugins LearnPress, LearnDash and LifterLMS could allow for cheating, students gaining teacher privileges and exposure of sensitive personal information.
Background
On April 29, 2020, Check Point researchers Omri Herscovici and Sagi Tzadik published research into three popular WordPress learning management system (LMS) plugins: LifterLMS, LearnDash and LearnPress. These LMS plugins can be used to deliver training programs and educational courses to businesses and educational institutions remotely, a capability that has become essential due to the COVID-19 pandemic.
Check Point highlighted that there were 80,000 active installations of LearnPress, 10,000 active installations of LifterLMS and 33,000 installations of LearnDash at the time their research was published. The vulnerabilities include an arbitrary file write flaw in LifterLMS, an SQL injection flaw in LearnDash, an escalation of privilege and an SQL injection in LearnPress.
Analysis
CVE-2020-6008 is an arbitrary file write vulnerability in LifterLMS versions below 3.37.15. Of all of the LMS plugin vulnerabilities discovered, this ranks as the most serious. The vulnerability exists due to an AJAX request failing to validate a file extension during upload, which allows the creation of PHP files without permissions, resulting in no control over its content in an arbitrary location.
A registered user can check which course ID they are registered to and submit it in the original AJAX request, which will output their name into a PHP file. This user can embed malicious PHP code into the change name option in their profile, which will output into the PHP file that was created. From there, the user can simply navigate to the generated file, execute the code within and achieve remote code execution.
CVE-2020-6009 is an unauthenticated second-order vulnerability in LearnDash versions below 3.1.6. The flaw exists in the learndash_get_course_groups function in the ld-groups.php file, which fails to correctly sanitize the user-supplied data by implementing prepared statements before using it in an SQL query. Exploitation could result in the exfiltration of data, such as usernames, passwords, names, e-mail addresses and other personally identifiable information (PII).
CVE-2020-6010 is an authenticated time-based SQL injection vulnerability in LearnPress versions 3.2.6.7 and below. Check Point noted in their research that this flaw was “very trivial to identify and exploit.” The vulnerability exists in the _get_items method within the LP_Modal_Search_Items class, which fails to correctly sanitize user-supplied data, specifically, the GET/POST parameter current_items before using it in an SQL query. The exploitation of this vulnerability results in the same ramifications as CVE-2020-6009, resulting in the exfiltration of sensitive data and PII.
CVE-2020-11511 is a privilege escalation flaw in LearnPress versions 3.2.6.7 and below. This flaw exists due to the presence of the learn_press_accept_become_a_teacher function. This function can be requested by anyone, as it fails to check the permissions of the requesting user, allowing the elevation of privilege to the teacher role. Access to the teacher role would allow access to course content, tests, and personal information such as grades.
Proof of concept
The researchers at Check Point composed a video demonstrating the exploitation of each of these vulnerabilities:
Solution
LearnPress developer ThimPress has addressed both of its vulnerabilities and users are advised to update to the latest version, 3.2.7. Users of LifterLMS are advised to update to the latest available version, 3.38.0, while LearnDash users are advised to update to version 3.1.6.
Identifying affected systems
A list of Tenable plugins to identify these vulnerabilities will appear here as they’re released.
Get more information
- Check Point Research
- WordPress Plugin Page for LearnPress
- WordPress Plugin Page for LifterLMS
- LearnDash Website
Join Tenable's Security Response Team on the Tenable Community.
Learn more about Tenable, the first Cyber Exposure platform for holistic management of your modern attack surface.
Get a free 30-day trial of Tenable.io Vulnerability Management.