某php商城系统简单的审计

前言
春节期间,又拉了一个没见过的源码看了看,挺小众的,找到了几个简单的提交了CNVD。
正文
源码结构如下,

20220206220128-4760fc4a-8755-1

经过我的一番菜鸡分析,application下,admin是admin后台,index是首页的方法,api是用户后台,还有一个wxapi好像是微信小程序的用户后台(因为这个环境我本地没有实现)。
首先是找上传,一般后台的都是这样直奔主题,找到图片管理处

20220207081550-1b38eb04-87ab-1

先直接上传个php,发现没有反应,也没报错什么的,感觉没戏,但是文件监控发现点东西

20220207090333-c567590c-87b1-1

发现上传成功了,于是到源码中删除这个文件,又重新上传了一下,结果

20220207090506-fce43b34-87b1-1

确实返回了json,

20220207090537-0f69f53c-87b2-1

离谱啊,找到对应源码处,application/admin/controller/File.php

20220207090744-5b4f177a-87b2-1

没有进行过滤,为什么php没有显示因为在调用图片管理时读取限定了后缀,

20220207095645-344c0dc0-87b9-1

$files = glob($folder.’*.{jpg,jpeg,png,gif,JPG,JPEG,PNG,GIF}’, GLOB_BRACE)
突然想到会不会用户的对应功能点也有同样的问题,找到用户上传,

20220207090953-a809905e-87b2-1

发现用$file->validate($this->rules)进行了后缀验证,而$rules = [‘ext’ => ‘jpeg,jpg,png’, ‘size’ => 1024 * 1024 * 4],没戏。
然后在wxapi接口中,

20220207091202-f521183a-87b2-1

这里是没有验证的,那么普通用户就有上传(我本地没有复现成功,有师傅会的教教我)
删除的话也没有限制,导致任意文件删除,尝试删除logo:

20220207091730-b8576e6c-87b3-1
20220207091739-bde01866-87b3-1

抓包修改,

20220207091744-c0b9ab56-87b3-1
20220207091746-c210eea6-87b3-1

原因也是直接拼接了value,

20220207091752-c56a8166-87b3-1

不过作用不大,但是这个站也是install.lock,要是有重装写shell那当我没说。
另外一个就是逻辑上的问题,在站点系统设置中,

20220207093535-3ef4d16a-87b6-1

输入个’就报错了,

20220207093945-d447275e-87b6-1

一些绝对路径啊什么的都有,
分析一下,application/admin/controller/Set.php中

20220207094100-00c2b97e-87b7-1

跟进updatesystem

20220207094149-1dd60fca-87b7-1

再跟setupdatesystem

20220207094217-2ee34cb0-87b7-1

以上流程将我们传入的post 数据写入在config/readfile 下新生成的system.php 中
通过json_encode($array, 1)
会将我们传入的” 转义成” ,但是’无法转义,因此可以传入’从而导致报错

20220207094328-5942e592-87b7-1

在加载应用的时候会include(config/app.php)
config/app.php 会判断是否存在system.php

存在就include,进而导致报错。
后面也想到了闭合’,但是return一个字符串,之后的就无法执行了,有师傅懂搞的教教我
结语
太菜了,菜到想哭~~~

本文转载自https://xz.aliyun.com/t/10950,只做本站测试使用,本文观点不代表安强科技社区立场。

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022年3月15日 下午2:25
下一篇 2022年3月15日 下午2:39

相关推荐

发表回复

您的电子邮箱地址不会被公开。