-------------------------------------------------------------- Osclass <= 3.4.2 (ajax.php) Local File Inclusion Vulnerability -------------------------------------------------------------- [-] Software Link: http://osclass.org/ [-] Affected Versions: Version 3.4.2 and probably prior versions. [-] Vulnerability Description: The vulnerable code is located in the /oc-includes/osclass/controller/ajax.php script: 225. case 'custom': // Execute via AJAX custom file 226. if(Params::existParam('route')) { 227. $routes = Rewrite::newInstance()->getRoutes(); 228. $rid = Params::getParam('route'); 229. $file = '../'; 230. if(isset($routes[$rid]) && isset($routes[$rid]['file'])) { 231. $file = $routes[$rid]['file']; 232. } 233. } else { 234. // DEPRECATED: Disclosed path in URL is deprecated, use routes instead 235. // This will be REMOVED in 3.4 236. $file = Params::getParam('ajaxfile'); 237. } 238. 239. if($file == '') { 240. echo json_encode(array('error' => 'no action defined')); 241. break; 242. } 243. 244. // valid file? 245. if( stripos($file, '../') !== false || stripos($file, '/admin/') !== false ) ... 246. echo json_encode(array('error' => 'no valid ajaxFile')); 247. break; 248. } 249. 250. if( !file_exists(osc_plugins_path() . $file) ) { 251. echo json_encode(array('error' => "ajaxFile doesn't exist")); 252. break; 253. } 254. 255. require_once osc_plugins_path() . $file; User input passed through the "ajaxfile" request parameter when handling a "custom" action within the AJAX interface is not properly sanitized being used in a call to the "require_once()" function at line 255. This can be exploited to include arbitrary local files and execute arbitrary PHP code when the application is running on Windows. [-] Solution: Update to version 3.4.3 or later. [-] Disclosure Timeline: [29/09/2014] - Vendor notified [29/09/2014] - Vendor response [09/10/2014] - Version 3.4.3 released: http://blog.osclass.org/2014/10/09/osclass-3-4-3 [09/10/2014] - CVE number requested [11/10/2014] - CVE number assigned [31/12/2014] - Public disclosure [-] CVE Reference: The Common Vulnerabilities and Exposures project (cve.mitre.org) has assigned the name CVE-2014-8084 to this vulnerability. [-] Credits: Vulnerability discovered by Egidio Romano. [-] Original Advisory: http://karmainsecurity.com/KIS-2014-15