gongfuxiang / shopxo

ShopXO企业级免费开源商城系统,可视化DIY拖拽装修、包含PC、H5、多端小程序(微信+支付宝+百度+头条&抖音+QQ+快手)、APP、多仓库、多商户、多门店、IM客服,进销存遵循MIT开源协议发布、基于ThinkPHP8框架研发
https://shopxo.net
MIT License
2.64k stars 799 forks source link

支付插件上传存在rce #68

Open azraelxuemo opened 2 years ago

azraelxuemo commented 2 years ago

这里我选用的是最新的2.3.0的cms image 编写测试php代码,打包成zip image 进入后台,选择网站管理->支付方式,上传对应的zip image image 漏洞点在于这里的GetPaymentConfig image GetpaymentConfig里的class_exists会去尝试寻找文件,然后会进入load_class,Findfile会找到对应的上传文件,这里相当于是把临时文件先cp到extend目录下,然后会自动include image 这里如果我们没有按照要求写插件,会报错,然后删除文件, image ,但由于include的原因,我们的代码也被执行了 这里会报错,然后显示代码执行的结果 image

gongfuxiang commented 2 years ago

您好,感谢您的反馈与建议,这个上传支付插件本身就是需要上传指定格式有效的文件,自己去主动上传非法文件肯定是有问题的。

azraelxuemo commented 2 years ago

如果你这样说,那我们可以认为所有漏洞都是不存在的,都是用户的非法输入,那要不明天就把cve官方关闭了??

azraelxuemo commented 2 years ago

我看了你这里,确实不好修,但你最少别直接把代码执行的结果返回给用户,返回给插件错误也行啊

azraelxuemo commented 2 years ago

如果认为不是漏洞,那我就直接公开了

gongfuxiang commented 2 years ago

如果认为不是漏洞,那我就直接公开了

本身就是要上传php文件代码的,最终的解决办法就是要检查文件中是否存在漏洞代码。 主要是我目前还没想到用什么方法来检查一个文件中是否包含php漏洞代码,如果您这边有这样php相关的技术方案可以提供一份我参考一下。

azraelxuemo commented 2 years ago

这确实不太好解决,不过感觉尽量建议用户实际开disable_functions,这里确实比较敏感,然后建议返回结果就只写个插件异常

qwe1433223 commented 5 months ago

这不算漏洞,解决方法就是上waf