xml地图|网站地图|网站标签 [设为首页] [加入收藏]

通行证整合,织梦dedecms漏洞修复大全

来源:http://www.ccidsi.com 作者:呼叫中心培训课程 人气:128 发布时间:2019-08-28
摘要:整合discuz的通行证:利用discuz自带通行证整合dede的章程以及文件下载 化解办法: 第一步: 到dz的数据库表cdb_settings 找到上边这几行修改为 其次步: 删除dz安装目录/forumdata/cache/cache_setti

整合discuz的通行证:利用discuz自带通行证整合dede的章程以及文件下载

化解办法:
第一步: 到dz的数据库表cdb_settings 找到上边这几行修改为
图片 1
其次步: 删除dz安装目录/forumdata/cache/cache_settings.php
其三步: 重新访问论坛

众五人说dedecms不佳,因为用的人多了,找漏洞的人也多了,那么只要大家能修复的话,这个都小难点.

第一感激柏拉图提供这样好的无需付费程序
在论坛上看到大家多多都想整合discuz。小编想Plato鲜明会弄叁个百般完美的dede的通行证。
在未曾出去从前大家就用discuz自带的通行证吧。个人看了一晃照旧要命不利的。
一:前提盘算以及版本:
dede版本:3.1 lit版,3.1标准版上测量试验都经过
discuz版本。用的是时尚的5.0本子
二:首要涉嫌多少个文件
1:dede:
(1)include/config_passport.php
第一是通行证私有密匙。这一个跟安全相关,必需多个系列装置同一本领畅行无碍
在这里根本是 $cfg_pp_encode。假如设置为 $cfg_pp_encode = 'UfJDq4089S'
(2)member/index_do.php首要处理与discuz同步登录、同步注册、同步退出
至于会员的一路修改(主倘诺密码和email)在一块儿登录的时候利用通行证机制已经成功了。所以咱们不用再问密码同步怎么做
(3)新加盟文件zxwpassport.php
其间根本是安装同步discuz按钮、以及一齐的连带管理函数
留神:这里相关的跳转地址依据大家测量检验大概实际上地址来修改
比如:Location:
改成你的 Location:
$forward     = '';
改成你的
$forward     = '';

登入和登记整合流程
顾客从登入或注册表单提交帐号密码音信 ==>
主站程序核准顾客登入或注册,成功(注册供给生成新客商)则 ==>
设置主站本人的cookie或session    ==>
url传递 重临地址forward和编码后的客商新闻和其余消息到dz/api/passport.php

 

2:discuz
(1)首要在系统后台管理设置discuz的直通证如图所示
  在扩充设置-》通行证设置那里安装

重组从前请先留意阅读官方passport本事文书档案:
<?php
//该文书档案保存为login.php
//首先将接口本事文书档案里的加密解密函数拷贝
//为了不让代码太乱,小编拷贝到文书档案的结尾处
//假若本身的客商数据库表里客商名字段为UserName, 密码字段为Pwd, Email字段为 Email
//注册页完成格局好些个,可机关达成,疑问加笔者QQ:2666556

      好,大家来一个七个修复。修复方法都以下载目录下该公文,然后替换或抬高部分代码,保存后上传覆盖(记得先备份),那样的补益是防范用懒人包上传之后因为UTF8和GBK不相同产生乱码,或然涂改过那多少个文本,然后径直退换的有的被沟通掉,那此前就白改了,找起来也极其的分神。倘若您追寻不到,看行数,找周边的,然后将自个儿标识黄绿的一部分复制到对应地点。

图片 2
在意这里是安装dede的会员登录、会员注册、会员退出的地方
最重若是安装好通行证私有密匙 记住跟dede的要一致 参谋dede的include/config_passport.php的布署。这里倘使是UfJDq4089S

$act=(isset($_GET['act']))?$_GET['act']:"login";
if(function_exists($act)) $act();else login();       

      轻松文件上传漏洞修复

好了把那些看了解之后。我们把zxwpassport.php和修改后的index_do.php下载。放到
member/目录下就ok了。这里index_do.php只是投入了discuz同步的管理其实很粗大略
譬喻。同步登录一般都是步向如下的讲话就足以。唯有在登入的时候加了一个email提取

function login()
{       
        $ErrMsg=UserCheck();
        if($ErrMsg!="")echo $ErrMsg;       
        //前边加上展现你的登入表单的代码 如
?>
<form action=login.php?act=login method=post>
用户名:<input name=username>
密码:<input name=password>
<input name=submit type=submit value=登陆></form>
<?php

      一、/include/dialog/select_soft_post.php文件,找寻(大约在72行的典范)
      $fullfilename = $cfg_basedir.$activepath.'/'.$filename;
      修改为
      if (preg_match('#.(php|pl|cgi|asp|aspx|jsp|php5|php4|php3|shtm|shtml)[^a-zA-Z0-9] $#i', trim($filename))) { ShowMsg("你内定的文件名被系统禁止!",'javascript:;'); exit(); } $fullfilename = $cfg_basedir.$activepath.'/'.$filename;;

CODE:

}//end function

  二、后台文件专擅上传漏洞

    $row = $dsql->GetOne("select email from dede_member where ID='".$cfg_ml->M_ID."'");
    $dedeemail = $row['email'];    
    $dsql->Close();
    //与discuz论坛协助进行登入早先
    if ($cfg_discuz==1)
    {
      discuzlogin($userid,$pwd,$dedeemail);  
    }//$cfg_discuz==1 结束
    //与disuz论坛协办登录结束  

function logout()//登出
{
        $passportkey="1234567890";//这里换来你论坛通行证设置的passportkey
        $auth=$_COOKIE['auth'];
        setcookie("auth", "",time() - 3600);
        $forward=$_GET['forward'];
        if($forward=="")$forward="../../index.php";//这里换到你的主页相对地址或相对地址                                       
        $verify = md5('logout'.$auth.$forward.$passportkey);
        $auth=rawurlencode($auth);
        $forward=rawurlencode($forward);
        header("Location: bbs/api/passport.php?action=logout&auth=$auth&forward=$forward&verify=$verify");
}

      /dede/media_add.php大概/你的后台名字/media_add.php

[Copy to clipboard]

function UserCheck()
{       
        $passportkey="1234567890";//这里换来你论坛通行证设置的passportkey

   搜索$fullfilename = $cfg_basedir.$filename;(大概在69行左右)
      替换成      
      if (preg_match('#.(php|pl|cgi|asp|aspx|jsp|php5|php4|php3|shtm|shtml)[^a-zA-Z0-9] $#i', trim($filename))) { ShowMsg("你钦点的文书名被系统禁止!",'javascript:;'); exit(); } $fullfilename = $cfg_basedir.$filename;

 
说起底记住在zxwpassport.php函数处理中。设置好自个儿的扭转地址:
Location:
$forward     = '';

        //===========验证输入=====================
        if(!isset($_POST['submit'])) return; // login表单的开关须求与此同名
        $usnm=$_POST['username'];//username换到你登入表单里的客户名域                       
        $pwd=$_POST['password'];//password换来你登录表单里的密码域                       
        if($usnm=="") return "请输入客户名!";
        if($pwd=="") return "请输入密码!";

     三、 /include/uploadsafe.inc.php (有2个地方:)

本来也能够写到配置文件中。不过懒得写了。大家本人弄呢。很简短的

        //=========数据库管理==========================
        $db=mysql_connect("localhost", "root", "");
        mysql_select_db("your_db_name");
$sql="Select * from `user` where UserName='".$usnm."' Limit 1";       
        $rs = mysql_query($sql,$db)        ;
        $row = mysql_fetch_array($rs);
        if(!$row)return "该客商不真实";
        if($row["Pwd"]!=md5($pwd))return "密码错误";
        mysql_free_result($rs);       

  1、搜索 ${$_key.'_size'} = @filesize($$_key);
      }
      (大概在42,43行左右)
      替换成    
      ${$_key.'_size'} = @filesize($$_key); 
      } $imtypes = array("image/pjpeg", "image/jpeg", "image/gif", "image/png", "image/xpng", "image/wbmp", "image/bmp"); if(in_array(strtolower(trim(${$_key.'_type'})), $imtypes)) { $image_dd = @getimagesize($$_key); if($image_dd == false){ continue; } if (!is_array($image_dd)) { exit('Upload filetype not allow !'); } }
      要是改造后出现小说页面空白页,请紧凑翻看代码是不是多了恐怕少了大括号},本文件44行是空的,未有代码,请当心。

zxwpassport.php和index_do.php文件打包成passport.rar文件了
图片 3 下载此文件

        //==============header到bbs=====================       
        $member = array
        (
                        'time'     => time(),
                        'username' => $row["UserName"],
                        'password' => $row["Pwd"],
                        'email'    => $row["Email"]
        );
        $auth = passport_encrypt(passport_encode($member), $passportkey);
        setcookie("auth",$auth,($_POST["Cookie"]? time() (int)$_POST["Cookie"] :0));
        $forward=$_POST['forward'];
        if($forward=="")$forward="../../index.php";                                       
        $verify = md5('login'.$auth.$forward.$passportkey);
        $auth=rawurlencode($auth);
        $forward=rawurlencode($forward);
        header("Location: bbs/api/passport.php?action=login&auth=$auth&forward=$forward&verify=$verify");                       

      2、搜索 $image_dd = @getimagesize($$_key);(大概在53行左右)
      替换成     
      $image_dd = @getimagesize($$_key); if($image_dd == false){ continue; }

}

     老规矩大翠绿地点标志了改换的地点,然后保留,接着备份原来的文章件,例如文件名变为uploadsafe.inc.php.16.08.09.bak。然后上传修改好的文书就可以。

//=============================================================
//=============以下为拷贝过来的函数============================
function passport_encrypt($txt, $key) {
        srand((double)microtime() * 1000000);
        $encrypt_key = md5(rand(0, 32000));       
        $ctr = 0;
        $tmp = '';
        for($i = 0; $i < strlen($txt); $i ) {
                        $ctr = $ctr == strlen($encrypt_key) ? 0 : $ctr;
                        $tmp .= $encrypt_key[$ctr].($txt[$i] ^ $encrypt_key[$ctr ]);
        }
        return base64_encode(passport_key($tmp, $key));
}

     (SQL)注入漏洞修复

function passport_decrypt($txt, $key) {
        $txt = passport_key(base64_decode($txt), $key);
        $tmp = '';
        for ($i = 0; $i < strlen($txt); $i ) {
                 $tmp .= $txt[$i] ^ $txt[ $i];
        }
        return $tmp;
}

     一、 /include/filter.inc.php文件,搜索(大致在46行的典范)
      return $svar;
      修改为
      return addslashes($svar);

function passport_key($txt, $encrypt_key) {
        $encrypt_key = md5($encrypt_key);
        $ctr = 0;
        $tmp = '';
        for($i = 0; $i < strlen($txt); $i ) {
                        $ctr = $ctr == strlen($encrypt_key) ? 0 : $ctr;
                        $tmp .= $txt[$i] ^ $encrypt_key[$ctr ];
        }
        return $tmp;
}

      二、/member/mtypes.php文件,搜索(大概在71行的金科玉律)
      $query = "UPDATE `dede_mtypes` SET mtypename='$name' WHERE mtypeid='$id' AND mid='$cfg_ml->M_ID'";
      修改为
      $id = intval($id); $query = "UPDATE `dede_mtypes` SET mtypename='$name' WHERE mtypeid='$id' AND mid='$cfg_ml->M_ID'";

function passport_encode($array) {
        $arrayenc = array();
        foreach($array as $key => $val) {
                   $arrayenc[] = $key.'='.urlencode($val);
        }
        return implode('&', $arrayenc);

      三、 /member/pm.php文件,搜索(大约在65行的样子)
      $row = $dsql->GetOne("SELECT * FROM `dede_member_pms` WHERE id='$id' AND (fromid='{$cfg_ml->M_ID}' OR toid='{$cfg_ml->M_ID}')");
      修改为
      $id = intval($id); $row = $dsql->GetOne("SELECT * FROM `dede_member_pms` WHERE id='$id' AND (fromid='{$cfg_ml->M_ID}' OR toid='{$cfg_ml->M_ID}')");

}
//=========================================================================
//===========================拷贝停止======================================
?>

      四、 /plus/guestbook/edit.inc.php文件,寻觅(大致在55行的指南)
      $dsql->ExecuteNoneQuery("UPDATE `dede_guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");
      修改为
      $msg = addslashes($msg); $dsql->ExecuteNoneQuery("UPDATE `dede_guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");;

第二篇:php168 v3.5与discuz v4.10的整合
168整站 与 discuz的passport整合

      五、 /plus/search.php文件,找寻(大约在109行的旗帜)
      $keyword = addslashes(cn_substr($keyword,30));
      修改为
      $typeid = intval($typeid); $keyword = addslashes(cn_substr($keyword,30));

php168整站v3.5与discuz v4.1.0的整合(带视频)

  六、/member/soft_add.php   搜索(大概在154行左右)

利用表明
请留神自个儿所用的次第的本子号
login.php 登入和剥离的组成
register.php 注册的咬合

      搜索$urls .= "{dede:link islocal='1' text='{$servermsg1}'} $softurl1 {/dede:link}rn";
      替换成      
      if (preg_match("#}(.*?){/dede:link}{dede:#sim", $servermsg1) != 1) { $urls .= "{dede:link islocal='1' text='{$servermsg1}'} $softurl1 {/dede:link}rn"; }

结合前请先审查批准一下你采纳的php168的login.php 和 register.php 是不是和 整合文件.rar中[原文件] 文件夹下的公文一律
一经不一致..请不要整合

     七、cookies泄漏导致SQL漏洞修复

(一)希图工作
1.下载php168 v3.5
2.下载discuz bbs v4.1.0

  1、/member/article_add.php文件,寻找(大约在83行的规范)
      if (empty($dede_fieldshash) || $dede_fieldshash != md5($dede_addonfields.$cfg_cookie_encode))
      修改为
      if (empty($dede_fieldshash) || ( $dede_fieldshash != md5($dede_addonfields . $cfg_cookie_encode) && $dede_fieldshash != md5($dede_addonfields . 'anythingelse' . $cfg_cookie_encode))) 

(二)安装和整合 (请参谋录制安装)

  2、/member/inc/inc_archives_functions.php文件,寻找(大致在239行的样子)
      echo "<input type="hidden" name="dede_fieldshash" value="".md5($dede_addonfields.$cfg_cookie_encode)."" />";
      修改为
      echo "<input type="hidden" name="dede_fieldshash" value="". md5($dede_addonfields . 'anythingelse' .$cfg_cookie_encode) ."" />";

1.设置php168 v3.5 (如已安装 到第2步) (怎么着设置请参见php168的装置表达)
2.进来php168的后台管理分界面关闭168的论坛组成职能 (新装置可跳过)
3.在php168的设置目录下树立名字为bbs的文本夹
4.下载安装discuz bbs v4.1.0的upload/下的富有文件拷贝到bbs文件夹下
5.运维discuz bbs的install.php 进行安装
6.到discuz的后台管理设置开启通行证
切切实实参数如下
启用通行证:       是
应用程序 U凯雷德L 地址: 遵照具体意况设置
通行证私有密匙:   1234567890 (倘使这里改了..三个组成文件中的$passportkey的值也亟须改成一样的值)
验证字串保质期(秒): 3600
应用程序注册地址:   register.php
应用程序登陆地址:   login.php
应用程序退出地址:   login.php?action=quit
积分同步选项:     不联合积分
7.将结合收缩包中的login.php 和 register.php替换 php168下同名的文书
设置到位

    SESSION变量覆盖导致SQL注入漏洞

/请保留以下新闻,以福利别的网上亲密的朋友在整合时遇到难题得以获取越来越多扶助
//整合进献者: huozhe3136 疑问请加作者qq: 2666556 (提供组成职能的亲自过问)
//录制进献: 一热情网上朋友
//关于整合的更加多内容请访问

      include/common.inc.php文件,寻觅(差相当少在68行的轨范)

次第打包下载地址:
录像演示下载地址:
apmserv5.12 下载地址:
图片 4/tech/uploadfile/200702/20070227023513192.rar

   if( strlen($svar)>0 && preg_match('#^(cfg_|GLOBALS|_GET|_POST|_COOKIE)#',$svar) )
      修改为
      if( strlen($svar)>0 && preg_match('#^(cfg_|GLOBALS|_GET|_POST|_COOKIE|_SESSION)#',$svar) )

本文由68399皇家赌场发布于呼叫中心培训课程,转载请注明出处:通行证整合,织梦dedecms漏洞修复大全

关键词: 68399皇家赌场 php

最火资讯