catalog

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

1. 漏洞描述

Dedecms会员中心注入漏洞

Relevant Link:

http://www.wooyun.org/bugs/wooyun-2010-048892

2. 漏洞触发条件

. 打开http://127.0.0.1/dedecms5.7/member/soft_add.php
. 添加软件
. 打开BURP抓包
) 将picnum改成typeid2
) 然后参数写5',1,1,1,@`'`),('-1','',user() , '','', '', ''),(,,'

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

/include/helpers/archive.helper.php

if ( ! function_exists('GetIndexKey'))
{
function GetIndexKey($arcrank, $typeid, $sortrank=, $channelid=, $senddate=, $mid=)
{
//$typeid2来自外部,结合DEDE的本地变量覆盖漏洞即可修改这个变量值
global $dsql,$senddate,$typeid2; if(empty($typeid2)) $typeid2 = ;
if(empty($senddate)) $senddate = time();
if(empty($sortrank)) $sortrank = $senddate; //$typeid2、$senddate未进行有效过滤就带入SQL查询
$iquery = "
INSERT INTO `#@__arctiny` (`arcrank`,`typeid`,`typeid2`,`channel`,`senddate`, `sortrank`, `mid`)
VALUES ('$arcrank','$typeid','$typeid2' , '$channelid','$senddate', '$sortrank', '$mid') "; echo $iquery; $dsql->ExecuteNoneQuery($iquery);
$aid = $dsql->GetLastID();
return $aid;
}
}

/archive.helper.php是一个辅助函数库,是存在漏洞的源头,真正的漏洞攻击向量由调用这个文件的GetIndexKey函数触发
/member/soft_add.php

else if($dopost=='save')
{
$description = '';
include(DEDEMEMBER.'/inc/archives_check.php'); //生成文档ID
$arcID = GetIndexKey($arcrank,$typeid,$sortrank,$channelid,$senddate,$mid);
..

Relevant Link:

http://www.wooyun.org/bugs/wooyun-2010-048892

5. 防御方法

/include/helpers/archive.helper.php

if ( ! function_exists('GetIndexKey'))
{
function GetIndexKey($arcrank, $typeid, $sortrank=, $channelid=, $senddate=, $mid=)
{
//$typeid2来自外部,结合DEDE的本地变量覆盖漏洞即可修改这个变量值
global $dsql,$senddate,$typeid2;
if(empty($typeid2)) $typeid2 = ;
if(empty($senddate)) $senddate = time();
if(empty($sortrank)) $sortrank = $senddate;
/* 过滤 */
$typeid2 = intval($typeid2);
$senddate = intval($senddate);
/* */
$iquery = "
INSERT INTO `#@__arctiny` (`arcrank`,`typeid`,`typeid2`,`channel`,`senddate`, `sortrank`, `mid`)
VALUES ('$arcrank','$typeid','$typeid2' , '$channelid','$senddate', '$sortrank', '$mid') ";
$dsql->ExecuteNoneQuery($iquery);
$aid = $dsql->GetLastID();
return $aid;
}
}

6. 攻防思考

Copyright (c) 2015 LittleHann All rights reserved

最新文章

  1. Linux top命令排序
  2. css3新增属性API
  3. “非常PHP学习网”(www.veryphp.cn)一期上线
  4. Linux 内核同步机制
  5. Oracle database启动过程分析
  6. shrio初体验(2)Realm
  7. easyui datagrid属性和方法
  8. Django 项目搭建(ubuntu系统)
  9. QT中pro文件编写的详细说明
  10. Shell脚本中实现自动补全功能
  11. 浏览器和对象的dom属性
  12. LogisticRegression in MLLib
  13. 在 JDK 9 中更简洁使用 try-with-resources 语句
  14. 学习笔记_J2EE_SSM_01_spring+springMVC+Mybatis整合_XML配置示例
  15. centos安装epel源后,使用报错(Error: Cannot retrieve repository metadata (repomd.xml) for repository: epel. Please verify its path and try again)
  16. 09python之运算
  17. 8.Git撤销修改
  18. burpsuit常用功能
  19. 第199天:js---扩充内置对象功能总结
  20. Replace Pioneer 试用推广

热门文章

  1. react native中的欢迎页(解决首加载白屏)
  2. Jboss EAP:native management API学习
  3. ASP.NET 系列:单元测试之SmtpClient
  4. 项目分享一:在项目中使用 IScroll 所碰到的那些坑
  5. fdisk分区硬盘并shell脚本自动化
  6. 记、基于react-router的单页应用
  7. Android开发自学笔记(Android Studio1.3.1)—3.Android应用结构解析
  8. 无法将分支 master 发布到远程 origin,因为远程存储库中已存在具有同一名称的分支
  9. HDU5892~HDU5901 2016网络赛沈阳
  10. [BZOJ 1997][HNOI2010]Planar(2-SAT)