dedecms /member/flink_main.php SQL Injection Vul

时间:2023-03-08 18:22:19

catalog

. 漏洞描述
. 漏洞触发条件
. 漏洞影响范围
. 漏洞代码分析
. 防御方法
. 攻防思考

1. 漏洞描述

会员模块中存在的SQL注入

Relevant Link

http://www.cnseay.com/1959/

2. 漏洞触发条件

. 打开 http://127.0.0.1/dedecms/member/flink_main.php#
. 在连接网址里面写入 http://sss2'),(8,1,@`'`),(8,(select user()),'33333
/*
连接名称随意
这里的8 是你的用户ID 想要查看必须得知道自己的用户id,通过查看cookie里面有一个DedeUserID,就是自己的用户id
*/

Relevant Link:

http://www.wooyun.org/bugs/wooyun-2014-048878

3. 漏洞影响范围
4. 漏洞代码分析

/member/flink_main.php

if($dopost=="addnew")
{
AjaxHead();
$row = $dsql->GetOne("Select count(*) as dd From `#@__member_flink` where mid='".$cfg_ml->M_ID."' ");
if($row['dd']>=)
{
echo "<font color='red'>增加网址失败,因为已经达到五十个网址的上限!</font>";
GetLinkList($dsql);
exit();
}
//如果前面有http就不过滤了
if(!eregi("^http://",$url))
{
$url = "http://".HtmlReplace($url, );
}
$title = HtmlReplace($title);
//$url未经过过滤就带入SQL查询
$inquery = "INSERT INTO `#@__member_flink`(mid,title,url) VALUES(".$cfg_ml->M_ID.",'$title','$url'); ";
$dsql->ExecuteNoneQuery($inquery);
echo "<font color='red'>成功增加一链接!</font>";
GetLinkList($dsql);
exit();
}

5. 防御方法

/member/flink_main.php

if($dopost=="addnew")
{
AjaxHead();
$row = $dsql->GetOne("Select count(*) as dd From `#@__member_flink` where mid='".$cfg_ml->M_ID."' ");
if($row['dd']>=)
{
echo "<font color='red'>增加网址失败,因为已经达到五十个网址的上限!</font>";
GetLinkList($dsql);
exit();
}
//如果前面有http就不过滤了
if(!eregi("^http://",$url))
{
$url = "http://".HtmlReplace($url, );
}
$title = HtmlReplace($title);
/* $url过滤 */
$url = HtmlReplace($url);
/**/ $inquery = "INSERT INTO `#@__member_flink`(mid,title,url) VALUES(".$cfg_ml->M_ID.",'$title','$url'); ";
$dsql->ExecuteNoneQuery($inquery);
echo "<font color='red'>成功增加一链接!</font>";
GetLinkList($dsql);
exit();
}

6. 攻防思考

Copyright (c) 2015 LittleHann All rights reserved