失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > PHP代码审计--百家CMS4.1.4项目实战(下)

PHP代码审计--百家CMS4.1.4项目实战(下)

时间:2021-08-10 20:38:05

相关推荐

PHP代码审计--百家CMS4.1.4项目实战(下)

PHP代码审计--百家CMS4.1.4项目实战(下)

这是百家cms的第二部分-代码审计

关于百家cms的安装配置及黑盒测试,可以参考上一篇文章:

PHP代码审计--百家CMS4.1.4项目实战(上)_HEAVM的博客-CSDN博客

四、百家CMS代码审计

4.1路由分析

通过渗透测试观察目录结构,发现该系统的所有功能点都放在system目录下,二每个功能点都对应两个文件夹class、template。class下存放的是每个功能的后端代码,template下是前端代码。由于是商城系统,该系统分为网页端和手机端,所以class、template目录下分别有mobile手机端代码、web网页端代码。

在此项目中,大佬已经把获取的参数过滤掉了

4.2、XSS漏洞代码审计

这里的act参数代表system文件夹下某个功能点,do代表功能点下具体的PHP文件,op则代表文件走哪个分支

如XSS漏洞存在url为:index.php?mod=site&act=manager&do=store&op=post&beid=1

代码位置则为下方位置:system文件夹下store.php文件里面post分支

在post分支里面看到snme、website、isclose等参数通过前端传入

在分析我们可以看到文中并没有对传入参数做任何的过滤,就直接插入到数据库了

而在前端展示数据的代码文件中(store_display.php),插入的数据也是没有经过任何的过滤就通过页面渲染在前端通过echo进行输出了,从而造成XSS漏洞

4.3、SQL注入代码审计

发现sql注入的漏洞目录位于:

/index.php?mod=site&act=manager&do=store&op=display&beid=1

使用burp确认sql查询的传入参数为sname

在store.php文件display分支中发现传入的sql查询参数sname没有经过任何过滤就直接拼接到了mysqld_selectall这个查询函数中,造成了sql注入漏洞。

4.4、任意删除漏洞

进入数据备份页面,点击删除,使用burp抓包,发现删除功能的url为

/index.php?mod=site&act=manager&do=database&op=delete&id=MTY1NTI3NTUwNl9teU4zRDVKVg%3D%3D&beid=1

所以删除功能的代码在manager目录下的database.php文件的delete分支中,且删除文件名的参数为:id

由下图代码可看到,$_GP['id']函数接收前端的文件名参数后,仅仅只是把文件名base64解密了一下,就直接拼接到删除文件路径下了,没有做任何的过滤限制操作,造成了任意文件删除漏洞。

Ps:这里的is_dir()函数判断了是否是目录,如果是目录就执行删除,这样就解释了为什么只能删除目录。

文件删除2

文件删除漏洞代码审计第一种方法就是黑盒找到漏洞的位置,然后再在代码中找到漏洞

第二种是直接全局搜索unlink()函数,因为php删除文件只有unlink()这一个函数

在phpstrom按ctrl+shif+f 启动全局搜索unlink( ,

发现baijiacms\common.inc.php文件中的file_delete函数有unlink()方法,可以利用

然后在全局搜索“file_delete( ”, 查看那里调用了此函数,并且使用此函数执行了可控制参数。

最终找到了文件baijiacms-master/system/eshop/core/mobile/util/uploader.php

进入uploader.php文件,发现确实使用$_GPC['file']调用了可控参数。

再回去看看file_delete()函数利用unlink删除文件的的条件,发现是必须使$settings['system_isnetattach']不为空

全局搜索system_isnetattach发现该参数是从

baijiacms-master/system/manager/class/web/netattach.php文件中接收的

我们通过该目录路径,可以构造成其url为:

http://127.0.0.1:8081/baijiacms-master/index.php?mod=site&act=manager&do=netattach

http://127.0.0.1:8081/baijiacms-master/index.php?mod=site&act=manager&do=netattach

对应的功能点就是“附件设置”,`system_isnetattach`就是设置图片压缩比例,这里只要随意设置不为空就可以了。

由于此处文件删除是需要手动创建对应的前端页面,为了方便我们通过访问路由来实现文件删除。

在根目录下建一个test.txt,构造url访问

由于利用的函数在baijiacms-master/system/eshop/core/mobile/util/uploader.php文件的upload分支下,参数名为file.

url:

http://127.0.0.1:8081/baijiacms-master/index.php?mod=mobile&act=uploader&op=post&do=util&m=eshop&op=remove&file=../test.txt

ps:说实话,我有点没有搞懂这个url是怎么出来的。

成功删除文件

4.5、任意文件写入

在功能框上传文件使用burp抓包,获取文件路由位置为:

/baijiacms-master/index.php?mod=site&do=file&act=public&op=fetch&beid=1&url=234

由路由找到代码的位置,发现使用了fetch_net_file_upload()函数去读取写入文件,查看一下fetch_net_file_upload()函数详细信息。s

在baijiacms-master\includes\baijiacms\common.inc.php文件下找到了

fetch_net_file_upload()函数,发现在此函数中使用了file_get_contents()函数获取文件,并且没有对文件的路径进行任何过滤

4.6、命令执行漏洞

使用burp抓包,查看命令执行漏洞的目录路由为:

/baijiacms-master/index.php?mod=site&act=weixin&do=setting&beid=1

传入的文件参数名称为:weixin_verify_file

传入的文件参数名称为:weixin_verify_file

根据路由找到了代码发现使用在此函数中传入了文件:$file=$_FILES['weixin_verify_file'];

然后判断一下文件后缀名是否为txt格式,就是用file_save()函数处理文件,并且file_save()函数中参数:$file['name']的值就是上传文件名字:&whoami&.txt

然后我们查看一下file_save()这个函数,

跟进file_save()函数,该函数中传递过来五个参数

而在system函数中,$file_full_path参数拼接了我们上传的文件的文件名($file['name']的值)到执行路径中,所以我们通过&分割,就造成了命令执行漏洞。

我们再回头看看file_save()函数,要执行system命令,还需要判断

$settings['image_compress_openscale']参数不能为空,

这个参数,就是附件设置模块中的,图片压缩比例不能为空。

一般快速查找命令执行漏洞的代码审计方法

白盒就是搜索几个危险函数: exec()、system()、popen()、passthru()、proc_open()、pcntl_exec()、shell_exec()

黑盒就是不断测试可弄输入参数,一般来说命令执行漏洞还是白盒测试比较方便,就是查找这几个危险函数,然后看函数里面有没有可以控制参数,参数有没有被过滤。

参考链接:

PHP代码审计之百家CMS4.1.4版本实战(下)之代码审计中的SQL注入&RCE&任意文件写入&任意文件删除等

/t/10678

https://mp./s?__biz=Mzg3MDU1MjgwNA==&mid=2247484280&idx=1&sn=9867290b6640418534318049899281be&chksm=ce8d46f3f9facfe57afb58b2c7ea286a25ee1dc7e8e225907035c28f72f365c084c8bab04781&scene=21#wechat_redirect

声明:

本文仅限于大家技术交流和学习,严禁读者利用本博客的所有知识点进行非法操作。如果你利用文章中介绍的技术对他人造成损失,后果由您自行承担,感谢您的配合,

作者创作不容易,请大家点赞收藏支持一下。谢谢各位读者大老爷。

如果觉得《PHP代码审计--百家CMS4.1.4项目实战(下)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。