• 33:WEB漏洞逻辑越权之水平垂直越权全解


    思维导图

     知识点

    水平越权,垂直越权,未授权访问
        解释,原理,检测,利用,防御等
    
    水平越权:通过更换的某个ID之类的身份标识,从而使得A账号获取(修改,删除等)B账号的数据。
    垂直越权:通过低权限身份的账号,发送高权限账号才能有的请求,获得其高权限的操作。
    未授权访问:通过删除请求中的认证信息后重放该请求,依旧可以访问或者完成操作。
    
    原理
    1.前端安全造成:界面
    判断用户等级后,代码界面部分进行可选显示
    
    2.后端安全造成:数据库
    user表(管理员和普通用户同表)
    id,username,password,usertype
    1,admin,123456,1
    2,xiaodi,111111,0
    登录用户admin或xiaodi是,代码是如何验证级别?(usertype判断)
    如果在访问网站数据包中有传输用户的编号、用户组编号或类型编号的时候,
    那么尝试对这个值进行修改,就是测试越权漏洞的基本。
    
    修复防御方案
    1.前后端同时对用户输入信息进行校验,双重验证机制
    2.调用功能前验证用户是否有权限调用相关功能
    3.执行关键操作前验证用户身份,验证用户是否具备操作数据的权限
    4.加密资源ID,防止攻击者枚举ID,敏感数据特殊化处理
    5.永远不要相信来自用户的输入,对可控参数进行严格的检查与过滤
    

     

    本课重点:

    • 案例1:pikachu-本地水平垂直越权演示-漏洞成因
    • 案例2:墨者学院-身份认证失效漏洞实战-漏洞成因
    • 案例3:越权检测-小米范越权漏洞检测工具-工具使用
    • 案例4:越权检测-Burpsuite插件Authz安装测试-插件使用
    • 案例5:越权检测-secscan-authcheck安装测试-工具使用

    案例1:pikachu-本地水平垂直越权演示-漏洞成因

    水平越权演示

    <1>kobe登录系统后,点击查看个人信息,可以看到自己的手机,住址,邮箱等敏感信息。

    <2>抓包,将username改为lucy,页面显示lucy的个人信息,成功水平越权。

    原理:登录时判断级别,根据级别不同,显示不同的功能页面。在添加用户时,后台只判断了用户登录状态,并未验证级别,所以存在越权漏洞。

    垂直越权演示

    <1>管理员有查看、添加、删除用户的权限,而普通用户只有查看权限。

    <2>管理员登录系统,添加一个用户,抓包得到添加请求A。

    <3>注销管理员,登录普通用户,得到普通用户的PHPSESSID。

    <4>在请求A中替换PHPSESSID值为普通用户的PHPSESSID,成功添加用户。存在垂直越权。

    在垂直越权实战中,可能我们只有普通用户的权限,没有管理员权限,所以也不知道管理员添加用户的数据包形式,这时我们该什么办呢?

    • 1.普通用户前端有操作界面可以抓取数据包
    • 2.通过网站源码本地搭建自己去模拟抓取(已知源码情况下)
    • 3.盲猜

    案例2:墨者学院-身份认证失效漏洞实战-漏洞成因

    靶场地址:https://www.mozhe.cn/bug/detail/eUM3SktudHdrUVh6eFloU0VERzB4Zz09bW96aGUmozhe

    <1>进入靶场后,界面如下,已知测试账户test/test,需要获取马春生的个人信息。 

    <2>登录test/test后,可以查看test用户的个人信息。

    <3>抓包分析,找到查看个人信息的数据包。修改card_id值的最后2位,相应地会返回不用用户的个人信息。

    <4>查看首页代码,可以找到马春生用户的ID

    <5>修改card_id值为20128880316,成功获取到马春生的的个人信息。

    <6>用户密码是用md5加密的,去加密网站解密,成功得到马春生的密码。

    <7>使用账号m233241/9732343登录,确认是马春生账户,成功拿到本关key。

    <8>还可以使用bp的intruder模块,将card_id值的最后2位改为00-99,可以遍历所有的用户。

    案例3:越权检测-小米范越权漏洞检测工具-工具使用

    privilegechecker下载地址:http://pan.baidu.com/s/1pLjaQKF

    小米范越权漏洞检测工具主要是检测网站越权漏洞的工具。

    此工具请使用Java 1.8以上版本运行。

    检测原理:

    此工具内置了三个浏览器,三个浏览器完全独立,目前采用的是chrome内核,我们可以为三个浏览器使用不同的用户登录目标网站,或者为三个浏览器设置不同的cookie,然后让他们同时去访问同一个url或者发送同样的请求,观察三个浏览器的页面变化。

    假如某个URL本应只有1号浏览器的用户有权限查看,但是2、3号浏览器的用户也正常访问了URL,并获取了不该获取的数据,则可能存在越权漏洞。界面如下:

    目前操作模式主要有两种:

    一、2、3号浏览器与1号浏览器同步。

    这种情况我们只要操作1号浏览器,2、3号浏览器会跟随1号浏览器访问同样的地址,这样我们可以为1号浏览器设置更高权限的用户即可检测垂直越权。为三个浏览器设置同样级别的用户即可检测水平越权。

    二、所有浏览器与表格同步。

    这种情况主要针对ajax、post、手机app等情况,开启代理功能,类似burp,浏览器或者手机app设置代理为此工具,则会抓下所有的请求,然后我们点击表格中的任意请求,三个浏览器会以各自的身份去发送这个请求,同样我们观察页面变化来判断是否存在越权问题。

    另外此工具也可用于检测csrf漏洞。

    操作方法:

    1、在三个浏览器各自的文本输入框输入cookie,点击设置cookie,即可为对应的浏览器设置cookie。

    2、点击三个浏览器上方的清除cookie,即可清除已经设置的cookie。

    3、点击 启动即可启动代理,默认为监听 。0.0.0.0:8088端口。

    4、在搜索框内输入关键字,点击搜索即可对表格内所有记录的请求进行搜索。

    下载地址:http://www.cnblogs.com/SEC-fsq/p/5736675.html 文件名 privilegecheck.jar 目前只做了windows版本。

    案例4:越权检测-Burpsuite插件Authz安装测试-插件使用

    Authz工作原理:将用户认证的HTTP请求头进行修改(Cookie等),然后通过响应长度、响应状态码判断是否存在越权。

    安装:Extender > BApp Store > Authz > install > 安装成功。

    使用前提:同个业务系统中两个测试账号A、B

    使用方法:A账户机进行功能操作,抓包,将待测请求包发送给Authz模块,修改cookie值(或者其他的用户身份凭证请求头)为B账户凭证,运行,当原响应内容长度、响应状态码和被修改后请求的响应内容长度、响应状态码一致则会绿,代表存在越权。

    优缺点

    • 优点:使用简单、省时省力。
    • 缺点:只是适用于检测越权读取类操作,删除编辑类操作还需人工判断。

    bp中还有一个插件AuthMatrix可用来检测越权漏洞,这个插件比Authz更新更好用,但是需要下载Jython,比较麻烦。感兴趣的同学可以试试。

    案例5:越权检测-secscan-authcheck安装测试-工具使用

    下载地址:https://github.com/ztosec/secscan-authcheck

    secscan-authcheck工具比较强大,安装也比较麻烦,需要搭建自己的服务器,将工具安装在服务器上,然后需要在浏览器安装插件,将浏览器访问流量导入自己的服务器上,使用该工具检测是否有越权漏洞。

  • 相关阅读:
    进程、线程和协程的区别(转)
    IO多路复用机制(转)
    防火墙及其功能(转)
    TCP连接的建立和终止。
    TCP和UDP细致刻画,区别。
    typename T和class T区别与联系
    TCP UDP的详解开始 ----UNIX网络编程
    关于UNIX网络编程的的OSI,1.7章的总结
    UNIX网络编程daytime服务端和客户端的实现过程
    linux shell脚本执行错误:bad substitution
  • 原文地址:https://www.cnblogs.com/zhengna/p/15650939.html
Copyright © 2020-2023  润新知