DEDECMS任意修改文章漏洞(exp)


    这个漏洞不足以得到马儿 但能修改任何文章 也算是一个严重的漏洞!
    废话不说
    经典对白 看代码!
    member\soft_edit.php
    01if(empty($dopost)) //如果这里是空也就是直接访问这个文件
    02{
    03 //读取归档信息
    04 $arcQuery= "Select
    05 dede_channeltype.typename aschannelname,
    06 dede_arcrank.membername asrankname,
    07 dede_channeltype.arcsta ,
    08 dede_archives .*
    09 From dede_archives
    10 left join dede_channeltype on dede_channeltype.id=dede_archives.channel
    11 left join dede_arcrank on dede_arcrank.rank=dede_archives.arcrank
    12 where dede_archives.id='$aid' ";
    13//悲剧了 没有验证MID信息 AID这里就是文章ID 可以自定义!
    14 $dsql->SetQuery($arcQuery);
    15 $row= $dsql->GetOne($arcQuery);
    16
    17//省略一堆验证代码....
    18include(DEDEMEMBER."/templets/soft_edit.htm"); //载入模板[code]
    19//再看这个soft_edit.htm 的代码
    20//其中一段是
    21
    //输出了 idhash 这个很重要
    //这样就得到了要修改文章的idhash
    //然后用修改文章的文件去利用
    看代码
    archives_edit.php
    01if($dopost=='save')
    02{
    03 include(DEDEMEMBER.'/inc/archives_check_edit.php'); //这里是验证idhash
    04//省略一堆没用的代码
    05$upQuery= "Update `dede_archives ` set
    06 ismake='$ismake',
    07 arcrank='$arcrank',
    08 typeid='$typeid',
    09 title='$title',
    10 litpic='$litpic',
    11 description='$description',
    12 keywords='$keywords',
    13 mtype = '$mtypesid',
    14 flag='$flag'
    15 where id='$aid'And mid='$mid'; "; //默认的MID是1 也就是ADMIN管理员 aid就是文章ID
    现在看下archives_check_edit.php这个文件
    1$ckhash= md5($aid.$cfg_cookie_encode);
    2if($ckhash!=$idhash) //idhash就是这样用的
    3{
    4 ShowMsg('校对码错误,你没权限修改此文档或操作不合法!','-1');
    5 exit();
    6}
    //这样就成功修改文章了
    利用EXP:
    
 

     //这里是文章ID 自己在plus/view.php里找
     //发布人的MID 默认ADMIN是1
     // 栏目ID 不知道的就自己新发表一篇然后看源代码找到可以发布的ID
     //文章标题
     //文章内容
     //idhash 在第一步里说了怎么获取了
     //验证码。。新发布文章就能获取
     
    
    转自:T00ls
    作者:心灵