分享

DedeCMS v5.7 注册用户任意文件删除漏洞

 人生大义 2017-09-12

源码文件:

member\soft_edit.php:


if(empty($dopost))  //如果这里是空也就是直接访问这个文件
{
    //读取归档信息
    $arcQuery = "Select
  #@__channeltype.typename as channelname,
  #@__arcrank.membername as rankname,
  #@__channeltype.arcsta,
  #@__archives.*
  From #@__archives
  left join #@__channeltype on #@__channeltype.id=#@__archives.channel
  left join #@__arcrank on #@__arcrank.rank=#@__archives.arcrank
  where #@__archives.id=''$aid''";
//悲剧了 没有验证MID信息 AID这里就是文章ID 可以自定义!
    $dsql->SetQuery($arcQuery);
    $row = $dsql->GetOne($arcQuery);


//省略一堆验证代码....
include(DEDEMEMBER."/templets/soft_edit.htm"); //载入模板[code]

---------------------------------------------------------------------------------

//soft_edit.htm
//其中一段是
  <input type="hidden" name="idhash" value="<?php echo md5($row[''id''].$cfg_cookie_encode); ?>" />

    //输出了  idhash 这个很重要 
    //这样就得到了要修改文章的idhash

    //然后用修改文章的文件去利用

    看代码:


//archives_edit.php:


if($dopost==''save'')
{
    include(DEDEMEMBER.''/inc/archives_check_edit.php'');  //这里是验证idhash
//省略一堆没用的代码
$upQuery = "Update `#@__archives` set
    ismake=''$ismake'',
    arcrank=''$arcrank'',
    typeid=''$typeid'',
    title=''$title'',
    litpic=''$litpic'',
    description=''$description'',
    keywords=''$keywords'', 
    mtype = ''$mtypesid'',       
    flag=''$flag''
    where id=''$aid'' And mid=''$mid''; ";  //默认的MID是1 也就是ADMIN管理员  aid就是文章ID

 

 

现在看下 archives_check_edit.php 这个文件:

//加入如下代码

$ckhash = md5($aid.$cfg_cookie_encode);
if($ckhash!=$idhash)   //idhash就是这样用的
{
        ShowMsg(''校对码错误,你没权限修改此文档或操作不合法!'',''-1'');
        exit();
}

 

 

    //这样就成功修改文章了

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多