一次某info开源系统漏洞挖掘

admin 2025年5月8日09:16:55评论11 views字数 1232阅读4分6秒阅读模式

审计过程:在入口文件admin/index.php中:

一次某info开源系统漏洞挖掘

用户可以通过m,c,a等参数控制加载的文件和方法,在app/system/entrance.php中存在重点代码:

一次某info开源系统漏洞挖掘

M_TYPE == 'system'并且M_MODULE == 'include'会设置常量PATH_OWN_FILEPATH_APP.M_TYPE.'/'.M_MODULE.'/module/'

也就是路径/app/system/include/module 这个文件夹这个点非常重要

M_MODULE的值在入口文件中,通过参数传递,导致我们可以控制:

一次某info开源系统漏洞挖掘

M_TYPE的值如下图所示:

一次某info开源系统漏洞挖掘

这里M_NAME的值是由我们输入的,只要不赋值即可让M_TYPE的值为system。

所以通过对参数m的控制可以设置常量PATH_OWN_FILE为/app/system/include/module 这个点非常重要,后续会用到。

继续往后会执行load::module()方法:

一次某info开源系统漏洞挖掘
一次某info开源系统漏洞挖掘

当module方法不传递任何参数时,会使用默认的参数值,也就是$path = '',所以这里也就会将$path 的值设置为PATH_OWN_FILE,也就是路径:/app/system/include/module

后续的$modulename,$action变量的值也就是我们开头的通过参数a,c控制的值。

一次某info开源系统漏洞挖掘

后续进行self::_load_class($path, $modulename, $action);参数的实现如下:

一次某info开源系统漏洞挖掘

该方法就是将文件进行加载进来,并且new出该类的对象后,通过call_user_func进行方法的调用。

我们可以在/app/system/include/module目录下寻找到符合xxx.class.php的文件,如:/app/system/include/module/loadtemp.class.php 在给文件中存在doviewHtml方法是我们可以通过web进行调用的:

一次某info开源系统漏洞挖掘

该自研框架通过$_M['form']['path'];等方式获取到用户的输入等同于$_POST['path']

最后一路执行会来到$view->dofetch的地方:

一次某info开源系统漏洞挖掘

这里我们完全可控$file参数:

一次某info开源系统漏洞挖掘

继续跟进fetch方法:

一次某info开源系统漏洞挖掘

跟进display方法:

一次某info开源系统漏洞挖掘
一次某info开源系统漏洞挖掘

重点关注$this->compile();//执行编译:

一次某info开源系统漏洞挖掘
一次某info开源系统漏洞挖掘
一次某info开源系统漏洞挖掘

在执行编译中,将我们输入的文件路径进行了内容读取,将读取后的内容写入到了$this->view->compileFile文件中,返回到开始的display方法中:

一次某info开源系统漏洞挖掘

通过include编译文件造成了任意代码执行漏洞。

文件上传处

/app/system/include/module/uploadify.class.php 文件中的doupfile方法:

一次某info开源系统漏洞挖掘
一次某info开源系统漏洞挖掘
一次某info开源系统漏洞挖掘

可以直接上传白名单内的文件,配合上面的文件包含,造成任意代码执行漏洞。

漏洞复现:

一次某info开源系统漏洞挖掘

修复建议:官网已经发布补丁,请及时更新补丁升级版本。

一次某info开源系统漏洞挖掘

原文始发于微信公众号(进击安全):一次某info开源系统漏洞挖掘

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年5月8日09:16:55
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   一次某info开源系统漏洞挖掘https://cn-sec.com/archives/4039911.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息