Day108:代码审计-PHP模型开发篇MVC层动态调试未授权脆弱鉴权未引用错误逻辑

本文主要是介绍Day108:代码审计-PHP模型开发篇MVC层动态调试未授权脆弱鉴权未引用错误逻辑,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

案例1-Xhcms-动态调试-脆弱的鉴权逻辑

案例2-Cwcms-动态调试-未引用鉴权逻辑

案例3-Bosscms-动态调试-不严谨的鉴权逻辑


知识点:

1、PHP审计-动态调试-未授权安全

2、PHP审计-文件对比-未授权安全

3、PHP审计-未授权访问-三种形态

动态调试优点:

环境配置:https://mp.weixin.qq.com/s/7K8edea8imalZ8_jJp3ODw

  1. 实时跟踪代码执行流程
  2. 实时获取变量接受数据
  3. 实时分析指定文件动态

未授权安全挖掘问题

  1. 找鉴权看引用-未引用鉴权逻辑,没有鉴权
  2. 找鉴权看脆弱-脆弱的鉴权逻辑,鉴权逻辑可绕过
  3. 找鉴权看逻辑-不严谨的鉴权逻辑
    1. 先功能操作,再鉴权,逻辑错误
    2. 先验证鉴权(成功进入功能操作,失败就让其重新鉴权),后功能操作

鉴权,没有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版本-判断文件外加匹配文件名,鉴权跳转加验证

不存在前两种情况

鉴权完后,没有退出,也就是后面代码仍然可以执行

尝试删除文件

文件删除成功!

这篇关于Day108:代码审计-PHP模型开发篇MVC层动态调试未授权脆弱鉴权未引用错误逻辑的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/885793

相关文章

Go标准库常见错误分析和解决办法

《Go标准库常见错误分析和解决办法》Go语言的标准库为开发者提供了丰富且高效的工具,涵盖了从网络编程到文件操作等各个方面,然而,标准库虽好,使用不当却可能适得其反,正所谓工欲善其事,必先利其器,本文将... 目录1. 使用了错误的time.Duration2. time.After导致的内存泄漏3. jsO

springboot循环依赖问题案例代码及解决办法

《springboot循环依赖问题案例代码及解决办法》在SpringBoot中,如果两个或多个Bean之间存在循环依赖(即BeanA依赖BeanB,而BeanB又依赖BeanA),会导致Spring的... 目录1. 什么是循环依赖?2. 循环依赖的场景案例3. 解决循环依赖的常见方法方法 1:使用 @La

使用C#代码在PDF文档中添加、删除和替换图片

《使用C#代码在PDF文档中添加、删除和替换图片》在当今数字化文档处理场景中,动态操作PDF文档中的图像已成为企业级应用开发的核心需求之一,本文将介绍如何在.NET平台使用C#代码在PDF文档中添加、... 目录引言用C#添加图片到PDF文档用C#删除PDF文档中的图片用C#替换PDF文档中的图片引言在当

C#使用SQLite进行大数据量高效处理的代码示例

《C#使用SQLite进行大数据量高效处理的代码示例》在软件开发中,高效处理大数据量是一个常见且具有挑战性的任务,SQLite因其零配置、嵌入式、跨平台的特性,成为许多开发者的首选数据库,本文将深入探... 目录前言准备工作数据实体核心技术批量插入:从乌龟到猎豹的蜕变分页查询:加载百万数据异步处理:拒绝界面

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

C#如何动态创建Label,及动态label事件

《C#如何动态创建Label,及动态label事件》:本文主要介绍C#如何动态创建Label,及动态label事件,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C#如何动态创建Label,及动态label事件第一点:switch中的生成我们的label事件接着,

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

SpringCloud动态配置注解@RefreshScope与@Component的深度解析

《SpringCloud动态配置注解@RefreshScope与@Component的深度解析》在现代微服务架构中,动态配置管理是一个关键需求,本文将为大家介绍SpringCloud中相关的注解@Re... 目录引言1. @RefreshScope 的作用与原理1.1 什么是 @RefreshScope1.

MyBatis 动态 SQL 优化之标签的实战与技巧(常见用法)

《MyBatis动态SQL优化之标签的实战与技巧(常见用法)》本文通过详细的示例和实际应用场景,介绍了如何有效利用这些标签来优化MyBatis配置,提升开发效率,确保SQL的高效执行和安全性,感... 目录动态SQL详解一、动态SQL的核心概念1.1 什么是动态SQL?1.2 动态SQL的优点1.3 动态S

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优