新闻中心
dedecms 5.7版本利用guestbook.php来对sql注射漏洞-漏洞预警
作者 / 无忧主机 时间 2014-10-08 00:29:39
dedecms程序漏洞问题困扰了很多的站长,在今天有个用户因流量超出找过来,经过对无忧主机php空间网站日志的分析,发现一个漏洞引发的可怕问题,在日志中体现到,如下图:
从这个日志来看,这个文件是很不正常的,但是很多站长不知道这个是漏洞在注射漏洞,这个影响的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=off
2、漏洞文件: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.51php.com/dedecms/16942.html
上一篇: 数据库导入常见四种报错
下一篇: 修改ecshop填写分类名不能超过20个字符限制


