Discuz! moderation.inc.php 数据库’注射’ bug 's

admin 2017年4月30日10:16:00评论288 views字数 1151阅读3分50秒阅读模式
摘要

由于Discuz!d的include/moderation.inc.php存在一个’二次攻击’导致数据库’注射’的bug
author: 80vul-B
team:http://www.80vul.com

由于Discuz!d的include/moderation.inc.php存在一个’二次攻击’导致数据库’注射’的bug
author: 80vul-B
team:http://www.80vul.com

一 分析

在文件include/moderation.inc.php里代码:

$threadlist = $loglist = array(); if($tids = implodeids($moderate)) { $query = $db->query("SELECT * FROM {$tablepre}threads WHERE tid IN ($tids) AND fid='$fid' AND displayorder>='0' AND digest>='0' LIMIT $tpp"); while($thread = $db->fetch_array($query)) { ... $threadlist[$thread['tid']] = $thread; ... foreach($threadlist as $tid => $thread) { ... if($type == 'redirect') { $db->query("INSERT INTO {$tablepre}threads (fid, readperm, iconid, author, authorid, subject, dateline, lastpost, lastposter, views, replies, displayorder, digest, closed, special, attachment) VALUES ('$thread[fid]', '$thread[readperm]', '$thread[iconid]', '".addslashes($thread['author'])."', '$thread[authorid]', '".addslashes($thread['subject'])."', '$thread[dateline]', '$thread[dblastpost]', '$thread[lastposter]', '0', '0', '0', '0', '$thread[tid]', '0', '0')");

这个比较明显,从数据库查询出的值$thread[lastposter]直接带入了insert语句中,导致了注射:)
这个看上去比上面的那个用处大些,其实有很多的限制.首先$thread[lastposter]是从数据库中查询出来的值,有字数限制[不能大于15个字符];其次,这个地方需要版主权限才能操作.

二 利用

注册新用户,用户名为80vul’,发表新回复,然后用拥有版主权限的账号将此帖转移,移动方式选为[移动主题并在原来的版块中保留转向],和上面的效果一样,执行时数据库报错了:)

三 补丁[fix]
等待官方补丁.

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2017年4月30日10:16:00
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Discuz! moderation.inc.php 数据库’注射’ bug 'shttps://cn-sec.com/archives/45766.html

发表评论

匿名网友 填写信息