catalog

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

1. 漏洞描述

Dedecms 5.3版本下的member/uploads_edit.php中的未限制文件上传漏洞允许远程攻击者通过上传一个有两个扩展的文件名的文件,然后借助未知向量访问该文件而执行任意代码。这已经通过带.jpg.php的文件名所证实

Relevant Link:

http://cve.scap.org.cn/CVE-2009-2270.html
http://www.cnnvd.org.cn/vulnerability/show/cv_id/2009070008

2. 漏洞触发条件

0x1: POC

<form id="frmUpload" enctype="multipart/form-data" action="http://127.0.0.1/dedecms5.5/member/uploads_edit.php?dopost=save&title=ss&oldurl=1'.php" method="post">
<!-- oldurl是注入点 -->
<input type="file" name="addonfile" id="addonfile" size=""><br>
<input name="mode" type="hidden" value="">
<input id="btnUpload" type="submit" value="Upload">
</form>

Relevant Link:

http://www.wooyun.org/bug.php?action=view&id=48894
http://www.2cto.com/Article/201012/80026.html

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

/member/uploads_edit.php

else if($dopost=='save')
{
$title = HtmlReplace($title,);
if($mediatype==) $utype = 'image';
else if($mediatype==)
{
$utype = 'flash';
}
else if($mediatype==)
{
$utype = 'media';
}
else
{
$utype = 'addon';
}
$title = HtmlReplace($title,);
//获取"."前面的文件名
$exname = ereg_replace("(.*)/","",$oldurl);
//获取"."之外的扩展名
$exname = ereg_replace("\.(.*)$","",$exname);
//返回上传的文件名
$filename = MemberUploads('addonfile',$oldurl,$cfg_ml->M_ID,$utype,$exname,-,-,true);
//$filename带入函数查询
SaveUploadInfo($title,$filename,$mediatype);
ShowMsg("成功修改文件!","uploads_edit.php?aid=$aid");
}

\member\inc\inc_archives_functions.php

function SaveUploadInfo($title,$filename,$medaitype=,$addinfos='')
{
global $dsql,$cfg_ml,$cfg_basedir;
if($filename=='')
{
return false;
}
if(!is_array($addinfos))
{
$addinfos[] = $addinfos[] = $addinfos[] = ;
}
if($medaitype==)
{
$info = '';
$addinfos = GetImageSize($cfg_basedir.$filename,$info);
}
$addinfos[] = @filesize($cfg_basedir.$filename);
$row = $dsql->GetOne("Select aid,title,url From `#@__uploads` where url like '$filename' And mid='".$cfg_ml->M_ID."'; ");
$uptime = time();
if(is_array($row))
{
$query = "Update `#@__uploads` set title='$title',mediatype='$medaitype',
width='{$addinfos[0]}',height='{$addinfos[1]}',filesize='{$addinfos[2]}',uptime='$uptime'
where aid='{$row['aid']}'; ";
$dsql->ExecuteNoneQuery($query);
}
else
{
//$filename未进行过滤就带入SQL查询,造成SQL注入
$inquery = "INSERT INTO `#@__uploads`(title,url,mediatype,width,height,playtime,filesize,uptime,mid)
VALUES ('$title','$filename','$medaitype','".$addinfos[0]."','".$addinfos[1]."','','".$addinfos[2]."','$uptime','".$cfg_ml->M_ID."'); ";
$dsql->ExecuteNoneQuery($inquery);
}
return true;
}

5. 防御方法

/member/uploads_edit.php

else if($dopost=='save')
{
$title = HtmlReplace($title,);
if($mediatype==) $utype = 'image';
else if($mediatype==)
{
$utype = 'flash';
}
else if($mediatype==)
{
$utype = 'media';
}
else
{
$utype = 'addon';
}
$title = HtmlReplace($title, );
/* 对$oldurl进行有效过滤 */
$oldurl = HtmlReplace($oldurl);
/* */
$exname = preg_replace("#(.*)/#", "", $oldurl);
$exname = preg_replace("#\.(.*)$#", "", $exname);
$filename = MemberUploads('addonfile', $oldurl, $cfg_ml->M_ID, $utype,$exname, -, -, TRUE);
SaveUploadInfo($title, $filename, $mediatype);
ShowMsg("成功修改文件!", "uploads_edit.php?aid=$aid");
}

6. 攻防思考

Copyright (c) 2015 LittleHann All rights reserved

dedecms /member/uploads_edit.php SQL Injection Vul的更多相关文章

  1. dedecms /member/flink_main.php SQL Injection Vul

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  9. dedecms /plus/feedback.php SQL Injection Vul

    catalog . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 . Dedecms v5.7的plus\feedback.php SQL ...

随机推荐

  1. 整合Apache与PHP教程

    Apache下载安装完成后,PHP下载解压后,最重要的是如何将他们连接起来,就是整合到一起,让它们之间有联系,笔者根据自己多次配的经验和帮学弟学妹配时他们的理解程度整理了一个比较详细易理解的版本,下面 ...

  2. <实训|第五天>通过搭建NFS,FTP实现共享文件附Vim脚本游戏

    先说个事情:我周末是不更新这个系列教程的,不过其他内容的会更新,我周末就整理这一周的各种内容到我的微信公众号中,提供给大家! 期待已久的linux运维.oracle"培训班"终于开 ...

  3. 用RxJava处理复杂表单验证问题

    用RxJava处理复杂表单验证问题 无论是简单的登录页面,还是复杂的订单提交页面,表单的前端验证(比如登录名和密码都符合基本要求才能点亮登录按钮)都是必不可少的步骤.本文展示了如何用RxJava来方便 ...

  4. 告别编译运行 ---- Android Studio 2.0 Preview发布Instant Run功能

    以往的Android开发有一个头疼的且拖慢速度的问题,就是你每改一行代码要想看到结果必须要编译运行到手机或者模拟器上,而且需要从头(可能是登录界面)一直点击到你修改的界面为止.开发一个完整的Andro ...

  5. java并发:阻塞队列

    第一节 阻塞队列 1.1 初识阻塞队列 队列以一种先进先出的方式管理数据,阻塞队列(BlockingQueue)是一个支持两个附加操作的队列,这两个附加的操作是:在队列为空时,获取元素的线程会等待队列 ...

  6. [译]用AngularJS构建大型ASP.NET单页应用(三)

    原文地址:http://www.codeproject.com/Articles/808213/Developing-a-Large-Scale-Application-with-a-Single A ...

  7. Html.BeginForm

    该方法用于构建一个From表单的开始,他的构造方法为: Html.BeginForm("ActionName","ControllerName",FormMet ...

  8. [转]扩展RBAC用户角色权限设计方案

    原文地址:http://www.iteye.com/topic/930648 RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地 ...

  9. 【BZOJ 2818】gcd 欧拉筛

    枚举小于n的质数,然后再枚举小于n/这个质数的Φ的和,乘2再加1即可.乘2是因为xy互换是另一组解,加1是x==y==1时的一组解.至于求和我们只需处理前缀和就可以啦,注意Φ(1)的值不能包含在前缀和 ...

  10. 查看本机ip

    视窗+R  然后输入cmd, enter 后再黑色窗口里输入  ipconfig