PHP框架MVC类上传断点调试挖掘

3ad5b2ff0be8c5e5b52630b856f649f4

1
2
首先是关键字搜索:可以从函数,关键字,或者全局变量等等,函数可以是有upload关键字的,关键字可以和上章一样select之类的,全局变量就是$_GET或者$_POST或者$_FILES,之类的
还可以通过浏览网站功能点,来发现漏洞,比如会员中心,新闻管理(添加,删除)等等

Beescms无框架后台任意文件上传

首页:

Snipaste_2023-06-08_10-01-39

后台:

Snipaste_2023-06-08_10-01-52

phpstorm和xdebug

首先我安装的是phpstorm2022.3的版本,然后php的版本是5.6.9,xdebug的版本是:php_xdebug-2.5.5-5.6-vc11-nts-x86_64

Snipaste_2023-06-09_13-53-44

下载这个插件到这个F:\phpstudy\phpStudy_64\phpstudy_pro\Extensions\php\php5.6.9nts\ext目录(每个人的目录情况不一样)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[xdebug]
;加载xdebug库文件
xdebug.profiler_append = 0
;效能监测的设置开关
xdebug.profiler_enable = 1
xdebug.profiler_enable_trigger = 0
;profiler_enable设置为1的时候,效能监测信息写入文件所在的目录
xdebug.profiler_output_dir="D:\BaiduNetdiskDownload\phpstudy\tmp\xdebug"
;设置的函数调用监测信息的输出路径
xdebug.trace_output_dir="D:\BaiduNetdiskDownload\phpstudy\tmp\xdebug"
;生成的效能监测文件的名字
xdebug.profiler_output_name ="cache.out.%t-%s"
; IDE与XDebug协作
xdebug.remote_enable = 1
xdebug.remote_handler = "dbgp"
xdebug.remote_host = "127.0.0.1"
xdebug.remote_port = 9000
xdebug.idekey = PHPSTORM
;.dll文件的路径
zend_extension = "F:\phpstudy\phpStudy_64\phpstudy_pro\Extensions\php\php5.6.9nts\ext\php_xdebug-2.5.5-5.6-vc11-nts-x86_64.dll"

粘贴到对应PHP版本的php.ini文件中:

Snipaste_2023-06-09_13-56-33

配置phpstorm

Snipaste_2023-06-09_13-58-29

Snipaste_2023-06-09_13-59-09

Snipaste_2023-06-09_14-00-10

Snipaste_2023-06-09_14-00-50

Snipaste_2023-06-09_14-01-07

Snipaste_2023-06-09_14-01-35

Snipaste_2023-06-09_14-01-44

Snipaste_2023-06-09_14-02-20

Snipaste_2023-06-09_14-02-43

Snipaste_2023-06-09_14-03-30

Snipaste_2023-06-09_14-03-59

这里推荐几篇关于这个玩意的博客:

1
2
3
https://developer.aliyun.com/article/1158081
https://paper.seebug.org/308/
https://xuanxuanblingbling.github.io/ctf/tools/2019/08/14/php/

Snipaste_2023-06-09_14-47-13

开始审计,首先找有没有上传点,直接搜索关键字:上传,然后发现出现的结果太多了,所以改成搜全局变量:$_FILES

Snipaste_2023-06-09_14-50-05

首先一个一个来看:

/admin/admin_file_upload.php

Snipaste_2023-06-09_15-08-59

在网站中访问这个路径。得到一个上传页面。

Snipaste_2023-06-09_15-10-08

Snipaste_2023-06-09_15-11-29

使用定位函数,发现这个函数:

Snipaste_2023-06-09_15-17-27

上图有一个地方说错了,就是类型需要符合的是$type中的类型,而不是$file_type

所以关键就是绕过pathinfo函数,然后跑一个在线网站:

Snipaste_2023-06-09_15-30-58

可以看到,这个函数会一直取最后一个点的最后的结果

抓包这个页面的数据包,进行00截断发现不行(如果服务器是linux的可以考虑解析漏洞),所以这里绕不过

更换一个$_FILES函数存在的文件(admin_pic_upload.php)

Snipaste_2023-06-12_08-13-04

这里是可以通过MIME的类型进行绕过,下面先说利用过程:

Snipaste_2023-06-12_08-13-45

Snipaste_2023-06-12_08-13-58

其实返回包中就返回了上传路径,或者可以像视频中说的一样,使用这个格式是通过时间戳加随机数生成的,可以通过burp进行爆破就行了,返回200,基本上就是那个文件名,而且如果仔细看这里,上传一个php文件,不仅会上传一个php而且会上传一个同名的jpeg,也就是说你可以到,图片管理的界面,复制图片链接,然后把后缀改为php就行

Snipaste_2023-06-12_08-14-30

原理:

处理图片上传的函数是up_img(),还传递了一个数组,因该是允许上传文件的格式,定点查询这里函数

Snipaste_2023-06-12_08-27-29

判断传过来的type的值是否,在前面设置的数组中的值一致,一致就可以上传了,由此漏洞就有了

Finecms 基于前台 MVC 任意文件上传

Snipaste_2023-06-12_15-14-33

对头像上传进行抓包分析(上传test.jpg文件,这是一个基于MVC的框架的网站),s对应目录,c对应文件名,m对应方法

在MVC框架内的controller中,查找member目录,文件名为account,函数为upload(一般核心代码都在控制器里面)

Snipaste_2023-06-12_15-34-02

Snipaste_2023-06-12_15-34-38

Snipaste_2023-06-12_15-35-01

Snipaste_2023-06-12_15-35-32

Snipaste_2023-06-12_15-33-07

如果还是使用前面的方式的话,全局搜索或者断点都是可以找到这个上传验证代码的,全局搜索的话就是搜出来的结果太多了影响效率

Snipaste_2023-06-12_16-01-40

Snipaste_2023-06-12_16-09-49

Snipaste_2023-06-12_16-13-41

后面的才是上传图片的验证代码,这里是一个也算一个逻辑错误,因为这里是先上传然后在验证,也就是说我上传一个php文件,虽然会告诉我格式错误,但是我的php文件还是已经上传成功了

下面就是复现:

Snipaste_2023-06-12_16-16-18

Snipaste_2023-06-12_16-16-55

Snipaste_2023-06-12_16-17-18

Snipaste_2023-06-12_16-17-25

Snipaste_2023-06-12_16-17-43

Snipaste_2023-06-12_16-17-51

Cltphp基于前台 TP5 框架任意文件上传

1
2
https://www.cltphp.com/
https://download.csdn.net/download/weixin_38657835/13190726?spm=1003.2122.3001.6634.2 //可以去淘宝直接买

新版已经没有这个漏洞了

花费0.88买了这cms

搭建的话,我这边用新版的小皮一直没有搭建成功,就算搭建成功,上传文件的时候也是请求异常,是在不想折腾了, 然后用虚拟机搭建了一个小皮2018的,就可以了,将网站的根目录设置成源码下的public,然后数据库名啊密码之类的,在app目录下有一个database.php的文件,进行配置就行了,然后访问的时候直接用ip进行访问就行了。上传成功之后,由于是虚拟机,所以这里需要绝对路径,才能访问成功:

Snipaste_2023-06-12_18-56-30

Snipaste_2023-06-12_18-56-40

Snipaste_2023-06-12_18-57-39

thinkphp的框架很安全,但是开发者的写法如果不按照标准规定来,那么验证的时候很可能就是自己的代码验证,从而产生了安全漏洞

资源

1
https://blog.1997sty.com/cos/uploads/20220407/20f03be8393a226641f1462126a10d76.rar ---> finecms_v5.0.6.rar