设为首页 - 加入收藏 PHP编程网 - PHP站长网 (http://www.52php.cn)- 电商,百科,编程,业界,移动互联,5G,云计算,站长网!
热搜: 娱乐 服务 专业 百度
当前位置: 首页 > 大数据 > 正文

Disucz 插件漏洞挖掘

发布时间:2021-01-16 13:30 所属栏目:[大数据] 来源:网络整理
导读:前言 Discuz 是北京康盛新创科技有限责任公司推出的一套通用的社区论坛软件系统。自2001年6月面世以来,Discuz!已拥有15年以上的应用历史和200多万网站用户案例,是全球成熟度最高、覆盖率最大的论坛软件系统之一。 来自第三方漏洞平台Discuz的查询结果:

Disucz 插件漏洞挖掘

前言

Discuz 是北京康盛新创科技有限责任公司推出的一套通用的社区论坛软件系统。自2001年6月面世以来,Discuz!已拥有15年以上的应用历史和200多万网站用户案例,是全球成熟度最高、覆盖率最大的论坛软件系统之一。


来自第三方漏洞平台Discuz的查询结果:


Disucz 插件漏洞挖掘


不完全统计总数: 549


接下来本文主要从五个方面来阐述Disucz 插件漏洞的挖掘技巧;


希望能给大家带来一些思路和灵感!

本文包含以下内容

  1. 基本函数的了解

  2. 基本变量的了解

  3. 插件的调用方法

  4. 几个漏洞实例

  5. 漏洞Exp的构造




1.基本函数的了解

在Discuz中存在如下几个重要的函数


$Result=DB::query("select 1");//用来执行sql语句?


DB::result($Result); //用来获取执行SQL语句的之后的结果?


DB::fetch ( $query2 );// 也用来获取执行SQL语句的之后的结果?


showmessage(); //用来输出discuz的提示信息,并且输出完之后会退出?


DB::table ( 'ques_user' ); //用来根据自定义的表前缀生成出带有表前缀的表名(discuz就算sql语句报错输出的时候也会自动将表前缀隐)?


include template ( 'nds_up_ques:ques_stats' ); //template会返回nds_up_ques插件目录下template目录中的ques_stats.html,用来包含使用模版

2.基本变量的了解

在discuz中比较重要的几个变量如下


$_G ['gp_orderby'];//前面的gp代表get和post,表示从get和post方式获取orderby参数。?


$_G ['cache'] ['plugin'] ['nds_up_ques']['creditmax']; //表示读取data目录下cache目录里面nds_up_ques文件下面的creditmax,一般不可控?


$_G ['adminid'];// 管理员ID的标志位,普通用户登录的话就为空?


$_G ['uid']; ? ?// 用户ID的标志位,普通用户登录则存在的当前用户的ID,未登录则为空?


IN_DISCUZ,IN_ADMINCP //俩个宏,一个是判断是否在dz的代码调用,一个是判断是否是后台调用,IN_DISCUZ是用来判断是否是直接访问的,若直接访问则不给予执行;一般ADMINCP用来判断是否后台调用也就///是判断是否是管理员使用,也代表该插件只能在后台调用

3.插件的调用方法

在discuz中大部分插件都是通过plugin.php文件来调用的


并且通过id参数来指明所需调用的插件,例如如下url


http://www.discuz.net/plugin.php?id=dc_mall


最终调用的文件将是


?/source/plugins/dc_mall/dc_mall.inc.php


如果url是


http://www.discuz.net/plugin.php?id=dc_mall:dc_mallaction ?


最终调用的文件将是


/source/plugins/dc_mall/dc_mallaction.inc.php


比如我们挖某一个插件中的dc_mallaction.inc.php存在漏洞就可以同过如上的方法调用到该文件


plugin.php的id参数只允许包含Inc.php后缀的文件名,若发现dc_mallaction.php存在漏洞,是无法直接通过plugin.php调用的

4.几个漏洞实例

我们在官方应用市场随机抽取了几个插件来测试


(1)注入


某打赏插件


#漏洞文件 reward.class.php


Disucz 插件漏洞挖掘

public function viewthread_useraction(){

?? ? ? ? ? ? ? ? global $_G;

?? ? ? ? ? ? ? ? $tid = $_G['tid'];

?? ? ? ? ? ? ? ? $fid = $_G['fid'];

?? ? ? ? ? ? ? ? $groupid = $_G['groupid'];

?? ? ? ? ? ? ? ? $sql = 'SELECT tid FROM '.DB::table('huoniao_dashang').' WHERE tid='.$tid;

?? ? ? ? ? ? ? ? $count = DB::num_rows(DB::query($sql)); ? ? ? ? ? ? ? ? //直接带入查询


【免责声明】本站内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

推荐文章
热点阅读