漏洞分析

关注公众号 jb51net

关闭
网络安全 > 漏洞分析 >

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

  作者:心灵