越权漏洞检测工具 secscan-authcheck

  • A+
所属分类:安全工具

越权漏洞检测工具 secscan-authcheck

概念:

    越权,顾名思义,就是超出了权限或权力范围。多数WEB应用都具备权限划分和控制,但是如果权限控制功能设计存在缺陷,那么攻击者就可以通过这些缺陷来访问未经授权的功能或数据,这就是我们通常说的越权漏洞。攻击者越权后就可以进行一些操作,例如查看敏感信息、进行一些增删改查的操作等等。

检测:

   而目前,针对越权漏洞常见的检测方式大致如下:

1、水平越权

通过更换请求中的某个ID之类的身份标识,从而使A账号获取(修改、删除等)B账号数据。

2、垂直越权

使用低权限身份的账号,发送高权限账号才能有的请求,获得其高权限的操作。

3、未授权访问

通过删除请求中的认证信息后重放该请求,依旧可以访问或者完成操作。

为了能够快速地进行越权漏洞检测,我们开发了一款半自动化的工具来辅助,下面介绍这款工具的设计思路。

设计思路:

为了实现越权漏洞的检测,我们将整个越权漏洞的检测分为三个步骤:系统认证、流量获取、越权判断,通过尽可能地对这三步进行自动化以达到辅助检测越权漏洞的功能。

判断:

    无论是垂直越权还是水平越权,我们想要的实际是以某个身份发送不属于该身份的请求。通过上述的第一步可以得到不同身份下的认证信息,第二步中得到该站点下待测的请求,但是还缺少这些请求与权限策略的对应关系。在这一步里,根据请求抓取方式的不同,可以考虑不同的判断依据:

  • 使用无界面浏览器对站点进行动态的爬取

对于垂直越权,若可以成功抓取到请求,只需要再对不同身份下的请求做个减法便可以得到不属于该身份的请求。但是对于一些公共接口还是需要通过手动判断或者通过关键字白名单的方式进行过滤。

对于水平越权,相对于垂直越权来说较难以判断。对于一些简单的站点可以根据表单中的禁止编辑属性以及隐藏表单等属性来得到判断依据,但是对于复杂的前端框架,还未找到比较好的方法,如果有较好的方法还希望可以分享和指教。

  • 通过流量网关,获取测试/生产中所有的流量

通过流量网关获取到的流量只是单纯的流量,还需要对获取到每个请求进行进一步的处理后重放,例如修改认证信息等,通过对比重放前后的返回信息内容进行判断是否存在越权。

  • 通过代理或插件等形式,被动的获取流量

在此方案中,流量的来源就是在测试系统点击界面时交互所获取到的,所以可以直接通过测试人员的对返回信息的对比进行判断是否存在越权问题。

 

项目地址

GitHub github.com/ztosec/secscan-authcheck

越权检测工具使用

  • 启动服务

cd authcheck
docker-compose up -d
  • 启动示例站点

cd example
# 需要将 docker-compose.yml 中的 your-ip 替换为当前机器的ip,以便访问
docker-compose up -d

流量捕获

可通过burp插件、浏览器插件、代理服务器等方式向越权检测服务器传输流量

traffic文件中包含了burp插件和chrome扩展两个示例

①burp插件加载后,输入越权检测服务器的地址,在浏览器中打开任意页面登陆后,点击开始扫描即可

越权漏洞检测工具 secscan-authcheck

②chrome扩展加载后,输入越权检测服务器的地址,打开任意页面,登录即可

越权漏洞检测工具 secscan-authcheck

登录

目前工具内置的两个账号,如下:(默认端口8888)

  • 管理员admin:     admin123

  • 普通用户normal:     normal123

正式使用时可接入自己公司内部的认证体系,以便标识使用者身份

examples中带了两个示例站点(默认端口8000、8001)和一个sso认证站点(默认端口 7373)

  • 管理员admin:     admin123

  • 普通用户normal:     normal123

在使用时,如果发现登陆了examples中的站点会导致越权检测工具的登陆状态失效,可考虑使用隐私窗口打开待测站点

预配置

工具支持两种类型系统的检测,sso认证和手动录入认证信息,sso认证以examples下的站点作为演示,如果要适配自己公司内部的sso,可修改相关认证逻辑


录入账号

先录入一些账号信息以便自动登陆sso,这里简单的录入账号密码作为演示(若要录入空账号,可将用户名设置为 – )

越权漏洞检测工具 secscan-authcheck


工作空间


在测试前,需要为待测站点创建一个工作空间,创建后根据要测试的系统来选择不同的认证逻辑。对于接入统一认证的系统,只需要输入首页url后点击解析按钮,并选择要使用的账号即可

越权漏洞检测工具 secscan-authcheck

当然,自动认证的逻辑还是要自己实现,这里只是用examples中的站点做个示例对于一些不方便实现自动认证的系统,可以选择手动录入认证信息

越权漏洞检测工具 secscan-authcheck

越权漏洞检测


流程如下,burp插件/chrome扩展 会将流量实时发送至越权检测服务器中,测试人员可在流量明细界面实时监听

扫描的请求会对完全相同的请求进行去重,点击右上角的清空按钮后,可将工作空间内的流量清空,同时去重规则也会清空。如果需要再查看已被清空的流量的话,可选中左上角的“全量”按钮

测试中的可能存在问题的请求会高亮标识,选中左上角的”可疑“按钮,将会只查看可能存在的请求

上方的表单可以进行一定的筛选,筛选规则为包含/不包含 ,若有多个,可以 | 进行分隔

每个请求包上都会有两个按钮,屏蔽和重放。点击屏蔽,可在上方的表单中添加对应的屏蔽规则,在重新查询或者监听时,不会再展示在屏蔽规则内的流量(只是不展示了,实际还存在的)。点击重放按钮,即可对该条请求进行重放,这在复测的时候比较好用

同时每次打开流量明细的窗口时,都会刷新对应工作空间的session信息(手动录入认证信息的工作空间不会刷新)


操作示意


越权漏洞检测工具 secscan-authcheck


开发指南


若系统没有接入统一认证或无法大批量实现自动认证,可直接部署好后,为每个工作空间手动录入认证信息

若可以实现待测系统的自动认证,可参考下面的内容来定制化工具


代码结构

越权漏洞检测工具 secscan-authcheck

越权漏洞检测工具 secscan-authcheck


越权漏洞检测工具 secscan-authcheck


主要改写流程

  • 确定自动认证的流程需要哪些信息,并在 app/model/po.py 中添加相应的模型

  • app/templates/ 下修改页面

  • app/lib/identify 下添加自己的认证流程,配置等


目前工具中放入了一个简单的自动认证sso的示例,可参考修改


注:文章来源于网络收集。如有侵权,请及时联系,谢谢!


关于我们:

北京路劲科技有限公司(Beijing Lujin Technology Co. , Ltd.)成立于2019年1月4日,是一家提供全面系统集成与信息安全解决方案的专业IT技术服务公司。公司秉承“为网络安全保驾护航”的企业愿景及“提升国家整体安全”的使命,依据风险评估模型和等级保护标准,采用大数据等技术手段,开展网络安全相关业务。公司致力于为各个行业的业务信息化提供软件和通用解决方案、系统架构,系统管理和数据安全服务、以及IT咨询规划、系统集成与系统服务等专业化服务。公司立足北京,走向全国,始终坚持“换位、细节、感恩”的核心价值观,以“共赢、共享、共成长”的经营理念为出发点,集合了一批敢于创新、充满活力、热衷于为IT行业服务的优秀人才,致力于成为您身边的网络安全专家。


关注路劲科技,关注网络安全!

公司:北京路劲科技有限公司

地址:北京市昌平区南邵镇双营西路78号院2号楼5层504


PS:如果觉得本篇文章对您有所帮助,欢迎关注!帮忙点个赞,转发一下 分享出去吧!


本文始发于微信公众号(LSCteam):越权漏洞检测工具 secscan-authcheck

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: