WordPress Calculated Fields Form plugin versions 1.0.x and below suffer from Http_only bypass and session hijacking vulnerabilities.
22fd62241b10270dd006f36d68ce4d0d900367987d8d02ce551d856593396acc
# Exploit Title: WordPress Calculated Fields Form <=1.0.x - Http_only bypass & admin session hijackig.
# Date: 2016-02-22
# Google Dork: Index of /wp-content/plugins/calculated-fields-form/
# Exploit Author: Joaquin Ramirez Martinez [ i0akiN SEC-LABORATORY ]
# Plugin URI: http://wordpress.dwbooster.com/forms/calculated-fields-form
# Version: 1.0.x
# Demo: https://www.youtube.com/watch?v=B_RGAAscEFc
=============
Description
=============
Calculated Fields Form is a plugin for creating forms with dynamically calculated fields and display the result.
With Calculated Fields Form you can create **forms with dynamically calculated fields** to **display the
calculated values**.
It includes a **form builder** for adding/editing different field types, including one or more **automatically
calculated fields** based in the data entered in other fields.
Calculated Fields Form can be used for creating both single and complex calculations, for example general
calculators, ideal weight calculators, calorie calculators, calculate quotes for hotel booking and rent a car
services, calculate quotes for appointments and services, loan & finance calculators, date calculators like
pregnancy calculators, etc...
===================
Technical details
===================
Cp calculated fields form is prone to a session hijacking vulnerability because contains a shortcode function
that reads http_only cookies and also is vulnerable to persistent cross-site scripting attacks by an authenticated
users.
The attacker must have an account like author or editor for create posts and embed malicious shortcodes and hijack
admin or other user's sessions.
==================
Proof of concept
==================
An author can insert the following shortcodes into a post with the cookie name that want to read...
[CP_CALCULATED_FIELDS_VAR name="cookie_to_steal" from="COOKIE"]
[CP_CALCULATED_FIELDS id="1" a='s\\";;alert(cookie_to_steal);//'] -->default calculated field created by the plugin
as you can see, i injected an xss payload
bypassing the shortcode atts value restrictions.
See the PoC video: https://www.youtube.com/watch?v=B_RGAAscEFc
Note: The ´wordpress_logged_in...´ cookie is different in each wordpress installation, but it doesn't matter
if you want to hijack the session of an administrator on the same wordpress installation, the cookie will be
called of the same manner.
==========
CREDITS
==========
Vulnerability discovered by:
Joaquin Ramirez Martinez [i0 security-lab]
joaquin.ramirez.mtz.lab[at]gmail[dot]com
https://www.facebook.com/I0-security-lab-524954460988147/
https://www.youtube.com/channel/UCe1Ex2Y0wD71I_cet-Wsu7Q
========
TIMELINE
========
2016-02-10 vulnerability discovered
2016-02-22 reported to vendor