Pikachu靶场——越权访问漏洞(over permission)

news2024/11/24 1:27:06

文章目录

  • 1. over permission
    • 1.1 水平越权
      • 1.1.1 源代码分析
      • 1.1.2 漏洞防御
    • 1.2 垂直提权
      • 1.2.1 源代码分析
      • 1.2.2 漏洞防御
    • 1.3 越权访问漏洞防御

1. over permission

漏洞描述

越权访问(Broken Access Control,BAC),指应用在检查授权时存在漏洞,使得攻击者在获得低权限用户账号后,利用一些方式绕过权限检查,访问或者操作其他用户或者更高权限的用户。

越权漏洞的成因是因为开发人员在对数据进行增删查改时,对客户端请求的数据过分相信而遗漏了权限的判定,权限验证不当而导致的越权行为。

漏洞原因

通常情况下,一个 Web 程序功能流程是登录 - 提交请求 - 验证权限 - 数据库查询 - 返回结果。如果验证权限不足,便会导致越权。常见的程序都会认为通过登录后即可验证用户的身份,从而不会做下一步验证,最后导致越权。

  • 隐藏URL
  • 直接对象引用
  • 多阶段功能
  • 静态文件
  • 平台配置错误

漏洞分类

  1. 水平越权

    • 水平越权是指攻击者尝试访问与他具有相同权限的用户资源
    • 例如,用户A和用户B属于同一角色,拥有相同的权限等级,他们能获取自己的私有数据(数据A和数据B),但如果系统只验证了能访问数据的角色,而没有对数据做细分或者校验,导致用户A能访问到用户B的数据(数据B),那么用户A访问数据B的行为就叫做水平越权访问。
  2. 垂直越权

    • 垂直越权是指低权限用户尝试访问高权限用户的资源。
    • 由于后台应用没有做权限控制,或仅仅在菜单、按钮上做了权限控制,导致恶意用户只要猜测其他管理页面的URL或者敏感的参数信息,就可以访问或控制其他角色拥有的数据或页面,达到权限提升的目的。

1.1 水平越权

登录lucy用户

image-20230909143944606

然后修改URL中的username的值为kobe。

image-20230909144037268

越权成功。

当然也还可以使用bp抓包的方式修改数据包中URL的参数实现水平越权。

1.1.1 源代码分析

op1_mem.php

用户信息是直接从url中获取的,没有校验当前用户

image-20230916165852439

function.php

查看check_op_login函数,函数只检查了isset($_SESSION[‘op’][‘username’]) && isset($_SESSION[‘op’][‘password’]),也就是用于检查会话变量中是否存在 'op' 数组中的 'username''password' 键。

image-20230916170005917

1.1.2 漏洞防御

op1_mem.php

尝试进行防御,使用session来校验,增加一个if判断url传入的username和当前用户是否匹配,如果匹配则为$username赋值,若不匹配则不赋值。

if($_SESSION['op']['username'] == $_GET['username']){
    $username=escape($link, $_GET['username']);
}

image-20230916170518187

验证:在lucy登录的情况下,在URL路径中修改username的值为lili。

image-20230916170842558

成功防御!

1.2 垂直提权

查看提示信息

image-20230909144304685

提示信息表示admin用户是最高权限的。

先使用pikachu用户登录,显示我们只有查看的权限。

image-20230909144813576

使用admin账户进行登录,显示我们有查看用户,添加用户以及和删除用户的权限。

image-20230909144909852

使用admin用户添加一个用户,并使用bp抓取数据包。(同样删除用户也可以)

image-20230909145319560

image-20230909145407090

然后回到页面中退出管理员登录,再登录pikachu用户,并且使用bp抓取数据包

image-20230909145601423

将pikachu这个普通用户的Cookie信息复制。

Cookie: BkGOp9578O_think_template=default; PHPSESSID=8g9mq8duq1kc55kbmp6t7espq1

在重发器里面,将管理员的Cookie值换成普通用户的Cookie,放包即可。

image-20230909145827705

这里我点击了两次,然后回到页面查看,添加了两个xiaoxue用户。

image-20230909145955575

越权成功。

1.2.1 源代码分析

op2_login.php

image-20230916173328699

说明:如果级别是1,进入amdin.php。如果级别是2,进入user.php。

op2_admin.php

image-20230916173436940

说明:这段代码判断了用户是否登录,是否权限级别为1(也就是admin用户),如果任意一条不满足,就跳转到登录页面。

op2_admin_edit.php

image-20230916173605516

说明:op2_admin_edit.php中只是验证了用户是否登录,如果没登陆就跳转到登录页面,没有验证用户的权限级别等级,但是前端显示添加用户的权限级别为1的用户才能执行的操作。所以这里才会出现垂直越权漏洞。

function.php

image-20230916174319863

1.2.2 漏洞防御

修改op2_admin_edit.php文件,对用户权限等级进行判断,判断用户级别是否为1。现在代码的意思变成,如果用户没登录或者权限等级不为1,则跳转到登录页面。

if(!check_op2_login($link) || $_SESSION['op2']['level']!=1){
    header("location:op2_login.php");
    exit();
}

image-20230916174600262

验证我们的防御措施是否生效,首先登录admin账户后添加一个xiaoha用户

image-20230916175230876

然后使用bp抓取数据包

image-20230916175815406

退出登录后再使用pikachu用户登录,抓包将pikachu用户的Cookie信息替换到指定位置,然后放包即可。

image-20230916180243206

现在发现无论怎么放包都不会在添加用户了。

image-20230916180037831

1.3 越权访问漏洞防御

常见的防御措施:

  1. 验证和授权:在应用程序中实施适当的身份验证和授权机制。确保只有经过身份验证的用户才能访问其具备权限的资源。使用强密码策略、多因素身份验证等增加用户验证的安全性。
  2. 最小化权限原则:遵循最小权限原则,即每个用户只能获得其工作职责所需的最低权限。限制用户访问敏感信息和关键操作,防止未授权的访问。
  3. 输入验证:对于用户提供的输入数据进行充分验证和过滤,以防止恶意用户提交恶意请求。包括对输入数据进行检查、限制或转义,避免常见的安全漏洞如跨站脚本攻击(XSS)和SQL注入。
  4. 安全配置:合理配置应用程序和服务器的安全设置。这包括限制文件和目录的访问权限、禁用不必要的服务和功能、定期更新和修补软件漏洞。
  5. 会话管理:为用户会话实施安全措施,如生成强大且随机的会话标识符、设置会话超时、确保会话仅在安全通道上传输等。防止会话劫持和会话固定攻击。
  6. 访问日志和监控:记录用户活动和访问日志,并定期检查异常活动。使用入侵检测系统(IDS)和入侵防御系统(IPS)来监控网络流量并发现潜在的越权行为。
  7. 定期安全审计:进行定期安全审计,评估应用程序的安全性,并修复发现的漏洞和问题。这可以包括代码审查、渗透测试、安全漏洞扫描等。
  8. 敏感信息保护:对于敏感信息如密码、身份证号等,采取适当的加密手段进行保护。确保敏感数据在存储、传输和处理过程中都得到妥善保护。
  9. 持续安全培训:为开发人员、系统管理员和用户提供定期的安全培训和意识教育,使他们了解常见的安全威胁和最佳实践,以提高整体安全意识。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1057366.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

用python表格初级尝试

Excel,我的野心 当我输入3,2 就表示在第3行第2列。的单元格输入数据input输入表头 (input内除了/,空格 回车 标点符号等 全部作为单元格分隔符)由我设置input输入的是行or列 给选项 1. 行 2. 列默认回车或没输入值是列由我设置起…

SEO效果又慢又差,为什么还会有SEO从业者?

“SEO效果又慢又差,这么还会有SEO从业者?”这句话是我今天在某Q群里看到的,其实这个问题我之前也有写过一篇《你问我,为什么还有人做SEO?》。我文中提到过因为搜索无处不在,有搜索后,搜索引擎就…

JavaScript:从入门到进阶的旅程

JavaScript是一种广泛使用的编程语言,为网页和应用程序提供了交互性和动态性。从初学者到资深开发者,JavaScript都是一项值得掌握的技能。在本文中,我们将探讨JavaScript的基础知识,以及一些进阶的概念和技巧。 一、JavaScript简…

Linux系统编程系列之线程

一、什么是线程 线程(Thread)是计算机中的基本执行单元,是操作系统调度的最小单位。线程是进程内的一个独立执行流程,一个进程可以包含多个线程,这些线程共享进程的资源,但每个线程都有自己的独立栈空间以及…

基于SSM的学生事务处理系统设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

matplotlib从起点出发(9)_Tutorial_9_cycler

0 需求 绘图时有时需要指定几种颜色,或者线型,我们统称为样式,让绘制出的内容在这些样式中循环配置。这时就需要使用到本文所提到的技巧,即cycler. 1 进入教程 本文是自定义属性循环(cycler)设置的演示,用于控制多线…

travel总结:

1、前期准备: 对于项目的大体构成做了一定的了解,然后主要是做后端的数据处理,前期的准备的话创建项目的大体结构,servlet、service、domain、dao、utils的项目结构。以及一些基础的代码的生成,我觉得最主要的是一些基…

leetCode 55.跳跃游戏 贪心算法

给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标,如果可以,返回 true ;否则,返回 false 。 示例 1: 输入…

MySQL的卸载与安装(Linux)

MySQL 前言1. 卸载MySQL1.1 查询与关闭对应MySQL服务1.2 卸载对应安装包 2. 安装MySQL2.1 配置MySQL官方yum源2.2 开始安装MySQL 前言 在这里演示的卸载与安装MySQL都是在Linux的Centos 7.6 环境下,不同环境会有所出入。 为了避免安装和卸载MySQL过程中受到权限的…

CF505B Mr. Kitayuta‘s Colorful Graph

Mr. Kitayuta’s Colorful Graph 题面翻译 给出一个 n n n 个点, m m m 条边的无向图,每条边上是有颜色的。有 q q q 组询问 对于第 i i i 组询问,给出点对 u i , v i u_i,v_i ui​,vi​。求有多少种颜色 c c c 满足:有至…

算法-动态规划/trie树-单词拆分

算法-动态规划/trie树-单词拆分 1 题目概述 1.1 题目出处 https://leetcode.cn/problems/word-break/description/?envTypestudy-plan-v2&envIdtop-interview-150 1.2 题目描述 2 动态规划 2.1 解题思路 dp[i]表示[0, i)字符串可否构建那么dp[i]可构建的条件是&…

基于ssm的互联网废品回收/基于web的废品资源利用系统

摘 要 本毕业设计的内容是设计并且实现一个基于SSM框架的互联网废品回收。它是在Windows下,以MYSQL为数据库开发平台,Tomcat网络信息服务作为应用服务器。互联网废品回收的功能已基本实现,主要包括用户、回收员、物品分类、回收物品、用户下单…

W、X、Y

W z学长的apex 不等于180度的角的个数就是求转折点的个数 而每个y(x)都是一元函数,按照公式每个一元函数的转折点为 s(x)是若干y(x)的叠加,其中一个y(x)有转折点,在对应位置上s(x)也会有转折点 所以所有y(x)函数中不重复的转折点的个数就是…

Java练习题-键盘录入字符串实现大小写转换

✅作者简介:CSDN内容合伙人、阿里云专家博主、51CTO专家博主、新星计划第三季python赛道Top1🏆 📃个人主页:hacker707的csdn博客 🔥系列专栏:Java练习题 💬个人格言:不断的翻越一座又…

【LeetCode热题100】--108.将有序数组转换为二叉搜索树

108.将有序数组转换为二叉搜索树 给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树。 高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。 二叉搜索树的中序遍历是升序…

扩容LVM卷导致lvm元数据丢失的恢复过程

一、问题描述 因某次MySQL binlog占用过高扩容时,是直接对云盘操作,而扩容直接操作了lvm卷而未操作云盘分区,并随后执行了扩容的partprobe,resize2fs卷等操作;最后,显示并未扩容成功,重启系统后…

008:连续跌三天,买第四天上涨的盈利计算

尽管有连续三天跌,第四天上涨的概率>0.5,但是也不意味着一定会盈利。因为还要看涨跌大幅度。所以,我们应该来假设,于连续跌三天的最后时刻买入,而后第四天临近收盘卖出,看这样的最终盈利是多少。假设我们…

网络-SSE

文章目录 前言一、SSE简介1、SSE特点Polyfill 2、SSE原理3、SSE技术实现:4、SSE应用场景:5、EventSource 二、SSE使用1、前端2、后端3、完整代码前端后端 总结 前言 本文主要记录SSE通讯的简介、使用、以及原理和一个ChatGPT返回数据的demo。 一、SSE简…

专业图像处理软件DxO PhotoLab 7 mac中文特点和功能

DxO PhotoLab 7 mac是一款专业的图像处理软件,它为摄影师和摄影爱好者提供了强大而全面的照片处理和编辑功能。 DxO PhotoLab 7 mac软件特点和功能 强大的RAW和JPEG格式处理能力:DxO PhotoLab 7可以处理来自各种相机的RAW格式图像,包括佳能、…

Redis中Hash类的操作

Redis中Hash类型是键值对的形式保存数据,其中键被称为字段(field),值称为字段值(value)。在一个key中,字段不能重复,而值可以重复。无论是字段还是值都是无序的(保存的次…