越权漏洞学习


[TOC]

越权漏洞

概念

  • 越权,顾名思义就是超出权限范围进行操作。
  • 多数WEB应用都具备权限划分和控制,但是如果权限控制功能设计存在缺陷,那么攻击者就可以通过这些缺陷来访问未经授权的功能或数据,这就是我们通常说的越权漏洞。
  • 越权漏洞的==成因==主要是因为开发人员在对数据进++行增、删、改、查询++时对客户端请求的数据过分相信而遗漏了权限的判定。所以测试越权就是和开发人员拼细心的过程。

主要攻击场景

image

分类

1. 水平越权

  • 水平越权指的是攻击者尝试访问与他拥有==相同权限==的用户的资源

比如某系统中有个人资料这个功能,A账号和B账号都可以访问这个功能,但是A账号的个人信息和B账号的个人信息不同,可以理解为A账号和B账号个人资料这个功能上具备水平权限的划分。此时,A账号通过攻击手段访问了B账号的个人资料,这就是水平越权漏洞。

  • 水平越权主要有三种攻击场景:
  1. 基于用户身份的ID:

在使用某个功能时通过用户提交的身份ID(用户ID、账号、手机号、证件号等用户唯一标识)来访问或操作对应的数据。

  1. 基于对象的ID:

在使用某个功能时通过用户提交的对象ID(如订单号、记录号)来访问或操作对应的数据。

  1. 基于文件名

在使用某个功能时通过文件名直接访问文件,最常见于用户==上传文件==的场景。


2.垂直越权

  • 垂直越权指的是一个==低==级别攻击者尝试访问==高==级别用户的资源。

比如说某个系统分为普通用户和管理员,管理员有系统管理功能,而普通用户没有,那我们就可以理解管理功能具备垂直权限划分,如果普通用户能利用某种攻击手段访问到管理功能,那我们就称之为垂直越权。

  • 垂直越权主要有两种攻击场景:
  1. 未认账账户访问无需认证后能访问该功能
  2. 不具备某个功能权限的账户认证后成功访问该功能

3. 权限框架缺陷

  • 权限控制框架是实现权限控制功能的基础,如果权限控制框架本身存在缺陷容易被攻陷会导致权限控制功能完全失效。

在cookie中使用简单的权限标识来标记用户的权限等级或使用用户请求参数中所带的简单用户ID来控制用户权限,是典型的权限框架缺陷。


具体案例:

  1. 在一个提交订单的页面,抓取提交的数据包

image
发现有一个oid的参数很可疑,尝试进行测试发现,可遍历订单号,查看他人待付款订单信息。
image

以上为水平越权。

  1. 站点后使用js跳转来限制未授权用户访问。
    <script language="javascript">
    //alert("非法操作");
    location='login.php';
    </script>
    所以我们只要==去掉js==就能成功访问后台,且可操作
    image

以上为垂直越权


修复

  • 采用成熟的权限管理框架:如spring security
  • 用户进行访问操作的凭证(如用户ID、产品号码、订单流水号等)优先采用在服务端关联session或加密后放在session中的方式获取
  • 必须采用表单或其他参数提交用户进行访问操作的凭证(如用户ID、产品号码、订单流水号等)时,应尽可能采用++难以猜测的构造方式++(增加字母及随机数字等)或++采用复杂的加密算法加密++后提交,应对客户端提交的凭证与会话的权限进行严格的验证,如提交的产品号码是否为隶属于登录用户的产品号码。
  • 对管理功能模块进行严格的权限验证,如非必要建议不对互联网开放或进行网络层的访问控制。

转自Freebuf


文章作者: Doublenine
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Doublenine !
 上一篇
Brainfuck&Ook!加密 Brainfuck&Ook!加密
[TOC] Brainfuck/Ook!编码加密 Ook!加密语法规则OOK!只有三个不同的语法元素:Ook。OOK?OOK! 它们组合成两个组,各种组合组合指定命令。因此,节目必须包含偶数个“Ook”。换行符被忽略 命令OOK。OOK
下一篇 
CSRF漏洞学习 CSRF漏洞学习
[TOC] CSRF学习概念 CSRF(Cross-site request forgery)跨站请求伪造,通过伪装成受信任用户的请求来利用受信任的网站。 攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法
  目录