PHPcms漏洞修复指南

2019-02-11 14:41:07 | 查看: | 来源:PS教程网

您目前的位置:首页 > PS学习资讯 > 知识要点 > 正文
  • 职校排名
  • 专业TOP10
  • 职校TOP10
  • 春季招生
  • 秋季招生
  • 在线报名
  • 以下是“PHPcms漏洞修复指南”的详细介绍,现在由PS教程网网小编带你一起了解详细的内容,正文如下:

    1、宽字节注入漏洞

    /phpcms/modules/pay/respond.php 位置约16行

    原来代码

    $payment = $this->get_by_code($_GET['code']);

    替换为

    $payment = $this->get_by_code(mysql_real_escape_string($_GET['code']));



    2、phpcms注入漏洞

    /phpcms/modules/poster/poster.php 位置约221行


    if ($_GET['group']) {


    之后加上

    $_GET['group'] = preg_replace('#`#', '', $_GET['group']);




    3、phpcms前台注入导致任意文件读取漏洞补丁

    /phpcms/modules/content/down.php

    (1)位置约17行

    parse_str($a_k);


    替换为

    $a_k = safe_replace($a_k); parse_str($a_k);


    (2)位置约89行

    parse_str($a_k);


    替换为

    $a_k = safe_replace($a_k); parse_str($a_k);


    (3)位置约120行

    $filename = date('Ymd_his').random(3).'.'.$ext;


    之后加上

    $fileurl = str_replace(array('<','>'), '',$fileurl);



    4、phpcms注入漏洞

    /phpcms/modules/member/index.php 位置约615行

    原来代码:

    $password = isset($_POST['password']) && trim($_POST['password']) ? trim($_POST['password']) : showmessage(L('password_empty'),HTTP_REFERER);


    替换为:


    $password = isset($_POST['password']) && trim($_POST['password']) ? addslashes(urldecode(trim($_POST['password']))) : showmessage(L('password_empty'), HTTP_REFERER);




    5、PHPCMS V9.6.2 SQL注入漏洞

    (1)phpcms/libs/classes/param.class.php 位置约109行

    原来代码

    $value = isset($_COOKIE[$var]) ? sys_auth($_COOKIE[$var], 'DECODE') : $default;


    替换为

    $value = isset($_COOKIE[$var])?addslashes(sys_auth($_COOKIE[$var],'DECODE')):$default;


    (2)/phpsso_server/phpcms/libs/classes/param.class.php 位置约108行

    原来代码

    return isset($_COOKIE[$var]) ? sys_auth($_COOKIE[$var], 'DECODE') : $default;


    替换为

    return isset($_COOKIE[$var]) ? addslashes(sys_auth($_COOKIE[$var],'DECODE')) : $default;

    网友回复:
    如果不是9.6.2,不用改第5条,否则后台登录成功之后直接就退出了。还有就是修改这个attachment后台添加文章显示0的问题,(网友补充:attachment这个,删除exit(0)前面的分号“;”)



    6、phpcms某处逻辑问题导致getshell

    /phpcms/libs/classes/attachment.class.php 位置约143行


    function download($field, $value,$watermark = '0',$ext = 'gif|jpg|jpeg|bmp|png', $absurl = '', $basehref = ''){


    之后加上

     $extArray=explode('|',$ext);
         if(!empty($extArray) && is_array($extArray)){
             foreach($extArray as $k => $v){
               if(!in_array(strtolower($v), array('gif','jpg','jpeg','bmp','png'))); exit('0');//循环判断如果有一个不符合,直接返回 0
             }
          }


    这样,加入一个判断,如果允许的文件格式是'gif','jpg','jpeg','bmp','png'这些,就继续,不然就跳出,当然这里的格式可以根据需要增多几个。

    网友回复:
    第六条修改参考:
    $extarr = explode('|',strtolower($ext)); $allow_extarr = array('gif','jpg','jpeg','bmp','png'); foreach ($extarr as $theext) { if(!in_array(strtolower($theext),$allow_extarr)){ exit('the file ext is not allowed'); exit(0); } }



    7、phpcms注入漏洞
    /api/phpsso.php 位置约128行
    原来代码

    $arr['uid'] = intval($arr['uid']);
    $phpssouid = $arr['uid'];


    替换为,二合一代码

    $phpssouid = intval($arr['uid']); 


    8、phpcms authkey生成算法问题导致authkey泄露
    照着下面的函数重新生成一下key值,然后找caches/configs/system.php 里面把两个参数替换一下就ok了

    网友回复:
    感谢lz分享,除了第5条不可取外,第8条直接改key即可,其它都完美解决了问题,暂时没发现有其它衍生问题。


    漏洞描述:


    9、跨站脚本攻击漏洞。

    1.跨站脚本攻击就是指恶意攻击者向网页中插入一段恶意代码,当用户浏览该网页时,嵌入到网页中的恶意代码就会被执行。
    2.由于PHPCMS的api.php中对多个参数未作处理,导致XSS漏洞。

    危害:
    恶意用户可以使用该漏洞来盗取用户账户信息、模拟其他用户身份登录,更甚至可以修改网页呈现给其他用户的内容。(这次客户的网站就是被挂了很多垃圾页面)
    解决方案:
    请打上官方最新补丁:http://bbs.phpcms.cn/thread-854157-1-1.html,另外官方补丁不完整,还需修改下面一处:

    找到api/map.php,将270行


    echo $city;


    改成:

    echo htmlspecialchars($city);


    具体方如图:


    10、阿里云提示phpcms某处逻辑问题导致getshell

    phpcms的/phpcms/libs/classes/attachment.class.php中,对输入参数$ext未进行类型限制,导致逻辑漏洞的产生。

    170行

    $filename = fileext($file);


    改为:

    $filename = fileext($file); if(!preg_match("/($ext)/i", $filename)) continue;

     

    11、修改根目录文件:crossdomain.xml

       这里的 * 修改为“你自己的网址”
     

    12、phpcms v9全系列 利用篡改模板路径生成任意文件的漏洞

    修复方法:

    phpcms\libs\functions\global.func.php

    在template方法开始(约481行)加入以下代码:

    if(strpos($template, '..') !== false) {
        showmessage('Template filename illegality.');
    }



    13、base.php文件的修改,防XSS漏洞


     

    点击阅读全部
  • 标签:PHPcms漏洞 
  • 发布时间:2019-02-11 14:41:07
  • 知识要点相关信息

    • win10无法右键发送到桌面的完美解决方法
    • win10无法右键发送到桌面的完美解决方法

      最近不少人发现系统升级到windows 10操作系统之后很多功能发生了变化,而在使用过程中,我还发现需要之前有的功能消失不见了,比如原先我

      标签:   | 更新时间:2019-04-11

    热门设计培训课程 更多>>

    设计论坛 | 学习问答 | 培训课程 | 视频教程 | 资料下载 | 站点地图
    ©2005-2020 兽猫教育 旗下平台 PS教程网 互联网ICP备案:渝ICP备17008327号

    地址:重庆市 · 重庆市沙坪坝区大学城南路23号 客服电话:400-879-2201 商务咨询QQ:785669963 渝公网安备 31011502002407号