PHP代码审计之百家CMS4.1.4版本实战(上)

admin 2022年6月1日23:01:50评论241 views字数 2058阅读6分51秒阅读模式

前言:

PHP代码审计之百家CMS从黑盒测试和代码审计两个部分讲解。本次先将黑盒测试,对于不懂PHP代码审计的朋友可以先从黑盒测试入手。在下半部分讲解代码审计分析时可以配合着黑盒测试理解思考。


文末可以获取本次练习CMS环境。


一、环境搭建

1.项目介绍

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

2.项目部署
2.1 工具及源码介绍
工具名称 具体版本
phpStudy_64 phpStudy v8.1
phpstorm PhpStorm 2021.2.1
baijiacms-master baijiacms-master V 4.1.4
2.2 部署流程

下载安装完成以后,配置好相应的mysql密码即可。

PHP代码审计之百家CMS4.1.4版本实战(上)

因为本次我们审计的第一套系统是baijiaCMS的一套电商系统,我们在安装前要大概看一下项目中的README.md文件,他所需的环境版本要求是什么,有时候如果版本太低或者太高的话会导致在安装的过程中因为php版本中函数弃用,导致在安装的时候报一些错误。

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

PHP代码审计之百家CMS4.1.4版本实战(上)

这里phpstudy选择运行根目录的时候一般要选择index.php所在的目录,因为index.php文件一般是默认执行的,也可在phpstudy中自定义。

PHP代码审计之百家CMS4.1.4版本实战(上)

PHP代码审计之百家CMS4.1.4版本实战(上)

通过上面phpstudy创建好的网站,我们直接访问刚才我们填写的域名就可以直接跳转到安装界面,这里需要注意的是第三步,几乎所有PHP项目的安装都需要填下面的内容。上面的数据库地址就是我们的本地地址,数据库密码也是我们刚才phpstudy中mysql设置的密码,这里的数据库需要注意,有的PHP项目需要自己在数据库中创建数据库,这时候我们就应该进入mysql中自己创建一个数据库,本次的项目不用自己创建数据库,因为他的安装代码里写了如果没有创建你填写的数据库名在数据库中没有创建的话就会自动帮你创建好,所以在数据库名这块大家稍微注意一下。

PHP代码审计之百家CMS4.1.4版本实战(上)

这样百家CMS环境就搭建完成了。

PHP代码审计之百家CMS4.1.4版本实战(上)


二、黑盒测试

在新手进行代码审计时,我建议大家使用黑盒+审计的方式,在黑盒测试的同时根据路由查看相关代码进行源码审计。
1.XSS

点击添加店铺=>在店铺名称、绑定域名处插入xss payload进行测试

PHP代码审计之百家CMS4.1.4版本实战(上)

payload

<img src=1 onerror=alert(1)>

PHP代码审计之百家CMS4.1.4版本实战(上)

测试时由于后端没有对特殊字符<>进行过滤造成xss,多台存在多处XSS,大家可以自行测试。

PHP代码审计之百家CMS4.1.4版本实战(上)

2.SQL注入

在店铺名称处我们抓包进行SQL注入测试

PHP代码审计之百家CMS4.1.4版本实战(上)

这里我们使用sleep(5)发现页面延时,判断存在SQL注入

PHP代码审计之百家CMS4.1.4版本实战(上)

然后可以使用盲注进一步跑出数据

’ and ASCII(substr(DATABASE(),1,1))=98 and sleep(2.5) #

PHP代码审计之百家CMS4.1.4版本实战(上)

3.任意文件夹删除

在备份与还原处我们删除备份文件并进行抓包测试

PHP代码审计之百家CMS4.1.4版本实战(上)

这里发现id参数为备份数据库的名称,既然先从黑盒入手我们就在该参数加入../试着删除其他文件。

PHP代码审计之百家CMS4.1.4版本实战(上)

为了方便测试,我们在根目录创建名为123的文件夹,然后将../../../123base64编码为Li4vLi4vLi4vMTIz然后burp发包进行删除。

PHP代码审计之百家CMS4.1.4版本实战(上)

PHP代码审计之百家CMS4.1.4版本实战(上)

123文件夹被删除,此处文件删除漏洞只能删除文件夹以及文件下下的文件,不可直接删除文件,具体分析请看第三部分的代码审计

PHP代码审计之百家CMS4.1.4版本实战(上)

4.任意文件写入

在后台商城设置中有很多地方都用到提取网络图片的一个功能

PHP代码审计之百家CMS4.1.4版本实战(上)

PHP代码审计之百家CMS4.1.4版本实战(上)

这里需要配合VPS,在VPS上使用python开启一个简单的Web服务,我们抓包将url参数传入我们VPS的远程文件

python -m SimpleHTTPServer 9001

PHP代码审计之百家CMS4.1.4版本实战(上)

我们抓包将url参数传入我们VPS上的远程文件

PHP代码审计之百家CMS4.1.4版本实战(上)

PHP代码审计之百家CMS4.1.4版本实战(上)


5.命令执行

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

PHP代码审计之百家CMS4.1.4版本实战(上)

这里上传一个后缀为.txt的文件并使用Burp抓包

PHP代码审计之百家CMS4.1.4版本实战(上)

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

PHP代码审计之百家CMS4.1.4版本实战(上)



我将PHP代码审计学习过程

整理成了下面七个阶段

如果你对PHP代码审计感兴趣

可以点击下方了解一下

前几天PHP代码审计直播课录屏,实战某CMS代码审计讲解,文末领福利。

(本次CMS练习环境也在上面链接文末处

不用百度云也可以直接下载)


炼石计划@PHP代码审计知识星球优惠券

只剩20几个了,过后就回调至129元了

赶紧扫描领取加入吧

加入后务必看置顶文章【使用手册】

PHP代码审计之百家CMS4.1.4版本实战(上)

如果你对Java代码审计感兴趣

欢迎了解

炼石计划@Java代码审计知识星球

PHP代码审计之百家CMS4.1.4版本实战(上)



原文始发于微信公众号(闪石星曜CyberSecurity):PHP代码审计之百家CMS4.1.4版本实战(上)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年6月1日23:01:50
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   PHP代码审计之百家CMS4.1.4版本实战(上)http://cn-sec.com/archives/1075245.html

发表评论

匿名网友 填写信息