【招投标代理源码网站模板】【ssm intellij 源码】【notepad 源码编译】discuz源码解读

时间:2024-12-24 07:22:32 编辑:lockfree 源码 来源:vb源码 排列

1.discuzԴ?源码???
2.Discuz!ML 3.x任意代码执行漏洞之大佬分析之后我分析
3.discuz 发帖的源代码是哪个文件

discuz源码解读

discuzԴ????

       内核说明:

       本站提供的discuz3.2精仿仿魔客吧整站源代码(GBK,带数据)基于Discuz X3.2系统设计,完全复制了魔客吧官网站点的解读功能,确保了系统的源码稳定性和实用性。

       模板特效采用css3和html5技术,解读使整个网站显得简洁大气,源码具有高端感。解读招投标代理源码网站模板

       用途及功能:此模板适用于素材下载、源码分享或建站资源下载网站。解读站长可以利用Discuz的源码出售商品功能搭建销售系统,或采用金币收费模式。解读会员中心集成了推广赚金币、源码签到送积分、解读ssm intellij 源码金币充值、源码VIP购买以及商品买卖赚金币等功能,解读具体操作可下载后自行研究。源码

       安装说明:

       1)将文件复制到网站根目录,完成后将XXXXXX/install/中的XXXXXX替换为你的域名,填写数据库信息进行安装。

       2)安装完成后,登录后台,打开XXXXXX/data/restore.php进行数据库恢复。恢复完成后,刷新后台页面,notepad 源码编译登录后台账号和密码均为admin。登录后台后,在工具中更新缓存,包括数据、模板和DIY,点击确定更新缓存,更新完成后刷新首页即可完成安装。

       下载地址:discuz整站源代码|discuz3.2精仿仿魔客吧整站源代码(GBK,带数据)

Discuz!ML 3.x任意代码执行漏洞之大佬分析之后我分析

       首先附上米斯特安全大佬们文章的链接,刚开始有些东西我没看的太懂,于是我就再添了点东西,希望像我一样的115的源码小白也能看懂。

       一、漏洞综述

       漏洞类型:代码执行漏洞

       影响系统及版本:Discuz!ML V3.2-3.4

       漏洞原因:Discuz!ML 系统对cookie中的l接收的language参数内容未过滤,导致字符串拼接,从而执行php代码。

       二、漏洞分析

       根据米斯特大佬们提供的报错界面,我对其中的三个报错点一一进行了分析,三个报错点如下图所示(还有米斯特大佬们的水印)。

       2.1 报错点一分析

       发现首先是portal.php函数出错,把这张图放大看,发现是ugui源码赏析对cookie中的language参数进行拼接而导致的报错,根据这个参数的语义判断应该是调用语言模板的时候因为找不到相应的模板而发生的错误,那么先定位portal.php报错的第行,该文件路径:

       紧接着定位libfile函数,文件加载路径函数。

       函数介绍:

       libfile($libname, $folder = ”),包含2个参数:$libname 和 $folder,该函数读取source目录下的$folder子目录作为基础部分。

       libfile函数源代码如下图所示:

       DISCUZ_ROOT为定义网站根目录的常量,realpath函数为返回绝对路径函数,到此处第一个报错就已经分析完毕,原因是系统因为找不到一个php文件而报的错。

       2.2 报错点二分析

       还是先根据错误定位到引用函数文件,文件路径source/module/portal/portal_index.php,然后定位到源函数所在的文件,引用的地方好定位,位置在/source/function/function_core.php,直接上图

       然后这个函数写的还贼长,哎,没得办法,这个时候只能靠运气了,搏一搏,单车变摩托,首先百度,这个函数的作用也就是个调用模板的函数。

       然而这个函数写了行代码,找个大表哥的写的代码注释吧,先扔个参考链接 discuz.net/thread-...

       此时我发现了思路有些繁琐,然后就去找第三个错误的提示内容,为了找到是哪里出了问题,我把这段代码放到了txt文件中,根据第三个错误提示的信息开始了全文搜索,终于,根据关键字tpl.php值搜索到一处与language这个函数语义有关的东西DISCUZ_LANG。

       既然是语言参数出了问题,还是个常量,那就去找找常量定义的地方,全局搜DISCUZ_LANG,跟踪到/source/class/discuz/discuz_application.php

       可以看到,将$lng的值给了DISCUZ_LANG,追踪$lng在何处定义,全局搜索$lng,找到了定义$lng的地方(图中第一个箭头)

       到此为止,又出现个var,这是个啥,我只知道var[‘cookie’][‘language’]的意思就是cookie中的language的值。

       以上可以分析出,从获取language到DISCUZ_LANG拿到值的过程中,并没有对其进行过滤。

       那么现在必须确定报错问题是怎么出现的了,看下图:

       出现了这样的代码,直接拼接,然后RCE

       拼接单引号和'.phpinfo().'

       按理来说可以RCE

       总结下大概流程从cookie中获取了language的值,然后给了$lng,接着$lng又给了DISCUZ_LANG,系统通过template函数调用模板文件,template函数执行,执行到$cachefile的时候,执行构造的代码。

       三、漏洞复现

       访问站点www.***.com/forum.php,刷新页面抓包

       *本文作者:xxx,转载请注明来自 FreeBuf.COM在language参数处'.phpinfo().'

       返回内容:

       复现成功。

       看起来复现大佬们的漏洞还是挺有意思的,开心。

discuz 发帖的源代码是哪个文件

       程序判断文件:

       include/newthread.inc.php

       include/newreply.inc.php

       模板文件

       templates/default/中所有post_开头的文件