挖未授权、越权类漏洞的探究

VSole2022-12-06 16:24:22

市面上很多注入、XSS等漏洞的挖掘文章,但是权限类漏洞讲的比较少。并且在最近项目上发现的越权,未授权类的漏洞比较多,就想着写这么一篇文章,也是总结一下自己最近的学习心得。

文章开头也希望大家看看OWASP TOP10漏洞的变化,刚开始我觉得没什么,注入也只是变成了第三。

然后实际过程中发现,注入漏洞真的变少了,或者不容易发现了,更多关注的,便是访问控制类的漏洞。

未授权访问漏洞


概念

首先理解什么是未授权漏洞

未授权字面上理解是未获得授权,对于正常的业务来说,有些功能点需要经过登录之后才能进行,那么如果我们通过一些绕过,无需登录也可以完成此类操作,那么便是未授权访问漏洞了。

常见的未授权访问漏洞

常见的未授权漏洞一般分为两种:

1、组件类的,如redis未授权、mongodb未授权等,也是比较常见的。对于此类漏洞,可以理解为不需要登录即可执行里面的功能,所以存在未授权漏洞。

2、WEB层面的,如某某CMS未授权文件上传、未授权创建账号等。

因为可以绕过登录限制进行操作,所以存在未授权访问漏洞。

本文旨在探究WEB层面的未授权访问漏洞,暂不涉及组件类漏洞,感兴趣的可以参考格格巫 MMQ!!师傅的文章:https://blog.csdn.net/weixin_43214644/article/details/124348759

Cookie

由于 HTTP 是无状态的协议,不能保存每一次请求的状态,所以需要给客户端增加 Cookie 来保存客户端的状态。

在一些xss的文章中也常常会讲到Cookie的概念。以防有师傅不理解,这里简单讲一下。

Cookie,是某些网站为了辨别用户身份,进行Session跟踪而储存在用户本地终端上的数据(通常经过加密),由用户客户端计算机暂时或永久保存的信息。简单来说,Cookie就是一个加密了的字符串,用来分辨用户身份的,有点像放在保险箱中的身份证

当然不仅仅只能通过cookie,还有auth,jwt等认证方式。

大体方向是一样的,都是为了辨别用户身份。

如何挖掘此类漏洞

理解了什么是cookie之后,我们一起模拟一个场景:

用户A是某网站的管理员,他今天的任务是修改一个账号的信息。

首先,A打开网站后台登录界面,输入账号密码后登录系统,在系统后台界面点击用户管理功能,在管理功能中找到并点击修改按钮,在修改界面进行了修改账号信息的操作,点击完成。

思考:

1、在登录后,A至少点击了几个功能?

2、点击后台功能的时候,系统是怎么知道A是否登录的?

第一个问题,访问用户管理是一个,点击修改按钮是一个,点击修改完成按钮是一个。至少有3个,可能细节没有描述好,还会有更多。

进入到第二个问题,我想应该很多人已经知道了,就是Cookie,或者说是认证因子。考虑用户的体验性,不可能进行一步操作便输入一次账号密码的,当然,这是最安全的。

挖掘方式很简单,既然系统通过检测Cookie等认证因子进行判断是否登录,那么只需要将认证因子删除,分析删除前后返回包的变化即可判断。

这样一想,对于使用Burp测试来说,只需要将数据包中的Cookie等字段值置空或者修改为无用字符,再查看前后的数据包是否相同即可。

有那么一个插件可以帮助快速挖掘此类漏洞。

项目地址https://github.com/theLSA/burp-unauth-checker

burp本身的抓包模块也有个功能可以进行替换,将授权类参数替换即可,不过好像不太好用,这是直接修改数据包内容而不是重放操作,影响体验。如图新增了一个规则,将匹配到Match的替换成Replace的内容。

代码层面分析

代码层面以某OA系统为例,通过auth.inc.php文件进行鉴权,在需要鉴权的文件中包含auth.inc.php,即可达到鉴权的效果。

例如某个备份数据库操作,便在最前面包含了auth.inc.php文件进行鉴权。

auth.inc.php文件中可以看到进行了校验

越权访问漏洞

概念

使用用户A的权限去操作用户B的数据,如果能够成功操作,则称之为越权操作。

如果A、B的权限相同,或者说是在同一水平层面的,那么我们称此操作为水平越权。如果A的权限小于B的权限,那么我们称此操作为垂直越权。

如何挖掘此类漏洞

如果问我近几个月的渗透测试项目什么漏洞比较多,我应该会说越权漏洞。

在理解了越权漏洞之后,发现这类问题真的特别多,并且挖掘难度没有特别大。

首先我将挖掘越权类漏洞分为两大类:

1、未使用cookie鉴权,通过修改userid等字段进行越权。

2、使用cookie鉴权,未检测对应操作是否符合当前权限预期。

(下面通过某CMS模拟漏洞环境,并非实际存在越权类漏洞。)

未使用cookie鉴权

要挖掘越权类漏洞,不能局限于1、2个功能点。首先需要在大体方向上判断,整个系统的功能点,有没有通过userid等参数值进行校验的。

常见方式便是通过全局搜索userid、id、countid等字符,通过修改对应id值进行判断。

例如此处获取用户数据功能,如果未检测用户id是否与cookie对应。

那么便可以通过枚举用户id,获取其他用户数据。

或者在某个获取验证码功能,通过修改user字段值,伪造代替其他用户获取验证码进行越权操作。

使用cookie鉴权

第一种、拥有两个账号密码的情况下,使用管理员账号操作,抓取数据包,修改cookie为普通用户的cookie

第二种、只有普通账号的情况下,通过js文件发现接口,通过自主访问接口,fuzz字段值进行越权测试

拥有两个账号密码

1、登录管理员用户,获取以下cookie

PHPSESSID=lm5n7it0hinhbnqa3fp4v263i3

2、登录普通用户,获取以下cookie

PHPSESSID=9sa9vq9ng9n7b9hodjrkel5qg7

3、使用管理员进行添加用户操作并抓取数据包

4、将数据包发送到重放模块,替换cookie为普通用户cookie。

如果依旧可以正常执行,那么即表示存在越权漏洞。

当然也可以使用burp替换的方式进行

只有普通账号

这种情况下测试越权比较麻烦,但是更加适用于没有账号然后通过暴力破解获取了一个低权限账号的情况下,一般会先通过js文件、swagger等获取存在的接口,然后访问接口查看是否能直接获取信息。如果能够获取信息那么删除认证因子看看是否能够未授权。

如果直接访问提示错误,并且没有办法fuzz到具体的参数的话,一般就无法利用了。但是有些情况下,会提示缺少什么参数,或者什么参数不能为空。

这就可以构造出具体的请求包进行测试了,如果能够进行操作,比如获取某用户信息,修改某用户数据,那么便是存在越权漏洞。

使用普通账号登录后的Cookie,构造更新数据的数据包,成功执行更新操作,即存在越权漏洞。

当提示无权限或者其他错误信息,即不存在越权漏洞。

总结

权限问题最近发现了特别多,一开始挖掘替换cookie实现的越权,感觉好像没什么危害,但是当只有普通用户的情况下,通过js文件翻到了许多接口

再结合一些数据包中的参数,fuzz之后成功构造了数据包,越权实现了许多高危操作后,我发现越权漏洞确实应该重视。

那么怎么修复此类漏洞呢?

其实只要在每个操作前面做两个步骤:

1、检测cookie是否已登录。

2、如果该功能属于管理员才能操作的功能,检测cookie中的用户是否属于管理员组。

声明:⽂中所涉及的技术、思路和⼯具仅供以安全为⽬的的学习交流使⽤,任何⼈不得将其⽤于⾮法⽤途以及盈利等⽬的,否则后果⾃⾏承担。所有渗透都需获取授权

漏洞挖掘cookie
本作品采用《CC 协议》,转载必须注明作者和本文链接
挖掘方式很简单,既然系统通过检测Cookie等认证因子进行判断是否登录,那么只需要将认证因子删除,分析删除前后返回包的变化即可判断。)未使用cookie鉴权要挖掘越权类漏洞,不能局限于1、2个功能点。常见方式便是通过全局搜索userid、id、countid等字符,通过修改对应id值进行判断。
漏洞挖掘是指对应用程序中未知漏洞的探索,通过综合应用各种技术和工具,尽可能地找出其中的潜在漏洞cookie的key为RememberMe,并对相关信息进行序列化,先使用aes加密,然后再使用base64编码处理形成的。在网上关于Shiro反序列化的介绍很多,我这里就只简单介绍一下,详情各位可以看下大神们对其源码的分析。
我发现了一个存储的XSS漏洞,我可以通过窃取cookie升级为帐户接管。我的payload目前需要最少的用户交互,只需单击即可。之后,向下滚动并单击取消预约。确保您拦截了此请求。使用以下有效载荷添加消息:">您通常会收到一个确认框,确认您的预约已取消,单击确定。即使管理员注销,此cookie也可以轻松重用。这是因为cookie不会过期。影响我能够通过取消我们的预约并包含一条消息来接管一个管理员帐户。这意味着我们必须找到一个具有用户交互的。
这里建议doc文档,图片可以贴的详细一些。爆破完好了,一样的6。想给它一个清晰完整的定义其实是非常困难的。
一、漏洞挖掘的前期–信息收集 虽然是前期,但是却是我认为最重要的一部分; 很多人挖洞的时候说不知道如何入手,其实挖洞就是信息收集+常规owasp top 10+逻辑漏洞(重要的可能就是思路猥琐一点),这些漏洞的测试方法本身不是特别复杂,一般混迹在安全圈子的人都能复现漏洞。接下来我就着重说一下我在信息收集方面的心得。
跨站脚本英文全称(Cross Site Scripting跨站脚本),为了不和css层叠样式表(英文全称:Cascading Style Sheets)混淆,因此将跨站脚本缩写为XSS。本期我们讲解一下XSS漏洞原理和利用检测。
src漏洞挖掘浅谈
2023-02-20 11:22:13
信息收集就说到这里,信息收集的主要目的就是扩大可利用面,10000万个资产你可能碰到弱口令,但1个资产你肯定没有弱口令挖掘前篇前边已经讲了信息收集,在测试前为了能高效的挖掘src,就需要有数据进行测试,这个数据就是我们常说的字典,字典怎么来,整理,收集,经验,积累。金额,数量都是可以篡改的地方小结挖掘src漏洞最主要还是挖掘逻辑漏洞,无非就是耐心,细节,多留意数据包的可疑数据,数据包所实现的功能。
1.设想一种场景,一个恶意网站上嵌入了一个iframe标签去加载银行的登陆页面,高度和宽度的设置和真实的银行官网一样,当用户访问恶意网站并登录时,攻击者就可以利用恶意脚本通过XMLHttpRequest之类的dom操作窃取用户的银行卡数据,为了防止防御此类攻击,同源策略诞生了!
1.设想一种场景,一个恶意网站上嵌入了一个iframe标签去加载银行的登陆页面,高度和宽度的设置和真实的银行官网一样,当用户访问恶意网站并登录时,攻击者就可以利用恶意脚本通过XMLHttpRequest之类的dom操作窃取用户的银行卡数据,为了防止防御此类攻击,同源策略诞生了!
VSole
网络安全专家