五十一.代码审计-PHP 框架 MVC 类上传断点调试挖掘

五十一.代码审计-PHP 框架 MVC 类上传断点调试挖掘

1. 文件上传漏洞挖掘:

  • (1) 关键字搜索(函数、键字、全局变量等):比如 $_FILES,move_uploades_file 等
  • (2) 应该功能抓包:寻找任何可能存在上传的应用功能点,比如前台会员中心,后台新闻添加等。
  • (3) 漏洞举例:逻辑漏洞-先上传文件再判断后缀名,通过 MIME 类型来判断文件类型、前端校验文件类型而服务端未校验。

2.MVC 开发框架类:

  • https://www.cnblogs.com/wsybky/p/8638876.htmlMVC 各部分的职能:
  • 模型 Model – 管理大部分的业务逻辑和所有的数据库逻辑。模型提供了连接和操作数据库的抽象层。
  • 控制器 Controller – 负责响应用户请求、准备数据,以及决定如何展示数据。
  • 视图 View – 负责渲染数据,通过 HTML 方式呈现给用户。
五十一.代码审计-PHP 框架 MVC 类上传断点调试挖掘

3.Thinkphp 框架:http://sites.thinkphp.cn/1556331

  • 了解怎么查找就行
  • http://sites.thinkphp.cn/1556331

4.phpstorm+xdebug 调试:

  • https://blog.csdn.net/yinhangbbbbb/article/details/79247331
  • 调试步骤可参考:
  • https://mp.weixin.qq.com/s/7K8edea8imalZ8_jJp3ODw
  • https://blog.csdn.net/yinhangbbbbb/article/details/79247331

5. 文件上传漏洞挖掘过程

  • 搜索 $_FILES–> 后台中心–> 上传图像–> 跟踪代码–> 逻辑判断
  • 业务功能分析–> 会员中心–> 上传图像–> 跟踪代码–> 逻辑判断
  • 搜索文件上传–> 会员中心–> 上传图像–> 跟踪代码–> 逻辑判断

演示案例

  • PHPStorm+xdebug 断点调试演示
  • Beescms 无框架后台任意文件上传
  • Finecms 基于前台 MVC 任意文件上传
  • Cltphp 基于前台 TP5 框架任意文件上传

PHPStorm+xdebug 断点调试演示

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

参考:代码审计:beescms 后台上传 getshell 复现 _CNwanku 的博客 -CSDN 博客

图片上传

  • 1. 登录后台后,我们寻找可以上传的地方
五十一.代码审计-PHP 框架 MVC 类上传断点调试挖掘

打开 Seay,来到 admin/upload.php 文件,找到上传函数。

五十一.代码审计-PHP 框架 MVC 类上传断点调试挖掘

检查了上传文件是否合法,实际上传用的是 up_img 函数,跟进函数。

五十一.代码审计-PHP 框架 MVC 类上传断点调试挖掘

我们发现判读语句

五十一.代码审计-PHP 框架 MVC 类上传断点调试挖掘

这里检查了上传文件的 type,如果 type 不在白名单里,就直接提示出错,我们可以修改文件类型绕过。

五十一.代码审计-PHP 框架 MVC 类上传断点调试挖掘

这是上传的白名单

五十一.代码审计-PHP 框架 MVC 类上传断点调试挖掘

从上面可以看出,并没有做任何检查就直接取了 $file[‘name’](就是我们上传时候的文件名)的后缀来给新生成的文件。所以我们只要伪造合法的 type 就能上传 shell 文件。

五十一.代码审计-PHP 框架 MVC 类上传断点调试挖掘
  • 然后我们就发现已经上传成功了!

文件上传

  • 打开上传文件的链接
    • sql.tmzo.club/bees/admin/admin_file_upload.php
五十一.代码审计-PHP 框架 MVC 类上传断点调试挖掘

上传 php 文件时候,发现被拦截

五十一.代码审计-PHP 框架 MVC 类上传断点调试挖掘

我们审计代码,

  • 1. 关键字 在 seay 中搜索 上传文件格式不正确
五十一.代码审计-PHP 框架 MVC 类上传断点调试挖掘

1. 关键参数 $_FILES

五十一.代码审计-PHP 框架 MVC 类上传断点调试挖掘

1. 找到参数,指向文件,找代码里是否有过滤函数,双击定位 up_file

五十一.代码审计-PHP 框架 MVC 类上传断点调试挖掘

2. 定位函数

五十一.代码审计-PHP 框架 MVC 类上传断点调试挖掘
五十一.代码审计-PHP 框架 MVC 类上传断点调试挖掘

4. 发现这是后缀白名单判断,很难绕过

五十一.代码审计-PHP 框架 MVC 类上传断点调试挖掘

5. 上传一个 1.php%00.zip

五十一.代码审计-PHP 框架 MVC 类上传断点调试挖掘
  • 6. 发现绕过成功,但没有上传成功,注意 php 版本
  • 7. 因此,这个地方应该没有上传漏洞。

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

五十一.代码审计-PHP 框架 MVC 类上传断点调试挖掘

首先注册一个账号 yy

五十一.代码审计-PHP 框架 MVC 类上传断点调试挖掘
  • 发现有上传图片的地方,于是,我们搜索关键字,搜索 上传失败
  • 但是没有找到判断文件的地方,于是在搜索 图片不存在 试一试,发现找到了判断函数
五十一.代码审计-PHP 框架 MVC 类上传断点调试挖掘

接下来我们继续分析下面的,file_put_contents 函数

五十一.代码审计-PHP 框架 MVC 类上传断点调试挖掘
  • 发现这个函数是最后写入图片的命令。
  • 所以,这个只要有 tx 值,就会先写入缓存,然后在继续后续的判断
  • 这里有 tx 接受值,我们先上传一张图片,抓包
五十一.代码审计-PHP 框架 MVC 类上传断点调试挖掘

发现 tx 的值,接下来,上传一个 php 抓包,竟然发现没有 tx 接受值

五十一.代码审计-PHP 框架 MVC 类上传断点调试挖掘
  • 所以根据代码分析,前端会有判断,我们可以绕过前端,然后就会有 tx 值,这样文件先上传上去
  • 我们先上传一句话木马的图片,bp 抓包
五十一.代码审计-PHP 框架 MVC 类上传断点调试挖掘

然后改成 php,虽然这里会报错提示没上传成功,但实际上是上传成功了的。并且文件名会重命名 0x0.php

五十一.代码审计-PHP 框架 MVC 类上传断点调试挖掘
五十一.代码审计-PHP 框架 MVC 类上传断点调试挖掘

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

  • 无源码

相关链接

© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容