目录
知识点:
1、PHP审计-动态调试-未授权安全2、PHP审计-文件对比-未授权安全
3、PHP审计-未授权访问-三种形态
动态调试优点:
环境配置:https://mp.weixin.qq.com/s/7K8edea8imalZ8_jJp3ODw
- 实时跟踪代码执行流程
- 实时获取变量接受数据
- 实时分析指定文件动态
未授权安全挖掘问题
- 找鉴权看引用-未引用鉴权逻辑,没有鉴权
- 找鉴权看脆弱-脆弱的鉴权逻辑,鉴权逻辑可绕过
- 找鉴权看逻辑-不严谨的鉴权逻辑
- 先功能操作,再鉴权,逻辑错误
- 先验证鉴权(成功进入功能操作,失败就让其重新鉴权),后功能操作
鉴权,没有exit(),就是第二种情况
案例1-Xhcms-动态调试-脆弱的鉴权逻辑
测试:直接在操作功能下断点发包测试(已登录)
找到鉴权文件进行代码分析(能绕过和不能绕过)
配置动态分析的环境
与 php.ini 对应
前两个不用管
开始分析
newz.php 是后台功能文件
通过包含文件,发现鉴权的逻辑
下断点,开始调试
查看被包含的文件
这样就分析到哪个文件是用来鉴权的,在Cookie里给User一个值即可绕过鉴权
案例2-Cwcms-动态调试-未引用鉴权逻辑
测试:直接在操作功能下断点发包测试(未登录)
断点获取到说明执行有未授权,获取不到没执行没未授权
重复上面的方法,找到鉴权的文件
发现该文件未包含
尝试访问
通过找到鉴权文件,看谁没引用就有问题
直接下断点到功能文件,直接执行功能那就有问题
案例3-Bosscms-动态调试-不严谨的鉴权逻辑
https://www.cnvd.org.cn/flaw/show/CNVD-2022-19247
1、文件对比找入口鉴权文件:
/system/basic/class/admin.class.php
功能文件:
/system/admin/safe/backup.class.php
判断未登录时通过header进行页面跳转,
但是没有exit()或者die()终止程序运行
2、动态调试未授权操作
直接在操作功能下断点发包测试(已登录和未登录)
断点获取到说明执行有未授权,获取不到没执行没未授权
1.1版本-只判断是不是文件,鉴权跳转
1.3版本-判断文件外加匹配文件名,鉴权跳转加验证
不存在前两种情况
鉴权完后,没有退出,也就是后面代码仍然可以执行
尝试删除文件
文件删除成功!