dedecms 5.7版本利用guestbook.php来对sql注射漏洞-漏洞预警

dedecms程序漏洞问题困扰了很多的站长,在今天有个用户因流量超出找过来,经过对高速度 主机php空间网站日志的分析,发现一个漏洞引发的可怕问题,在日志中体现到,如下图:dedecms 5.7版本利用guestbook.php来对sql注射漏洞-漏洞预警从这个日志来看,这个文件是很不正常的,但是很多站长不知道这个是漏洞在注射漏洞,这个影响的5.7版本的,该如何解决呢,找了很多资料发现还是有解决办法的。漏洞文件edit.inc.php具体代码:

<?php/** * @version        $Id: edit.inc.php 1 10:06 2010-11-10 tianya $ * @package        DedeCMS.Site * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc. * @license        http://help.dedecms.com/usersguide/license.html * @link           http://www.dedecms.com */if(!defined('DEDEINC')) exit('Request Error!');if(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS'];else $GUEST_BOOK_POS = "guestbook.php";$id = intval($id);if(empty($job)) $job='view';if($job=='del' && $g_isadmin){    $dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' ");    ShowMsg("成功删除一条留言!", $GUEST_BOOK_POS);    exit();}else if($job=='check' && $g_isadmin){    $dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' ");    ShowMsg("成功审核一条留言!", $GUEST_BOOK_POS);    exit();}else if($job=='editok'){    $remsg = trim($remsg);    if($remsg!='')    {        //管理员回复不过滤HTML        if($g_isadmin)        {            $msg = "<div class=\'rebox\'>".$msg."</div>n".$remsg;             //$remsg <br><font color=red>管理员回复:</font>        }        else        {            $row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' ");            $oldmsg = "<div class=\'rebox\'>".addslashes($row['msg'])."</div>n";            $remsg = trimMsg(cn_substrR($remsg, 1024), 1);            $msg = $oldmsg.$remsg;        }    }    $dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");    ShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS);    exit();}if($g_isadmin){    $row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'");    require_once(DEDETEMPLATE.'/plus/guestbook-admin.htm');}else{    $row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'");    require_once(DEDETEMPLATE.'/plus/guestbook-user.htm');}
注射漏洞成功需要条件如下:1、php magic_quotes_gpc=off2、漏洞文件:plus/guestbook.php 在数据库中:dede_guestbook也需要存在该如何判断是否存在漏洞呢,请看下面测试,首先打开:域名/plus/guestbook.php把鼠标放在 [回复/编辑] 上可以看到访问者留言的ID。则记下ID,访问:域名/plus/guestbook.php?action=admin&job=editok&msg=errs.cc’&id=存在的留言ID提交后,如果是dede5.7版本的话,会出现 “成功更改或回复一条留言” 那就证明修改成功了。再返回到:域名/plus/guestbook.php 看下您所改的那条留言ID是否变为了 errs.cc’ 如果是的话,那就证明此漏洞无法再利用应为他开启:php magic_quotes_gpc=off如果没有修改成功,那留言ID的内容还是以前的,那就证明漏洞可以利用。那么再次访问:域名/plus/guestbook.php?action=admin&job=editok&id=存在的留言ID&msg=’,msg=user(),email=’然后返回,那条留言ID的内容就直接修改成了mysql 的user().高速度 主机相关文章推荐阅读:DEDECMS 常见错误总结DEDECMS如何去掉文章RUL中的日期分享一个DEDECMS删除所有待审核稿件SQL的语句DEDECMS标题、关键词、描述变量名被修改导致网站无收录的解决方法

本文地址:https://www.gaosudu.com/dedecms/16942.html