前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Web攻防作业 | 越权访问漏洞全解析

Web攻防作业 | 越权访问漏洞全解析

作者头像
Ms08067安全实验室
发布2022-12-22 15:18:45
2K0
发布2022-12-22 15:18:45
举报

文章来源 | MS08067 Web高级攻防第3期作业

本文作者:xiaobai05050505

越权访问漏洞

一、越权漏洞概述
1、概述

通常情况下,一个 Web 程序功能流程是登录 - 提交请求 - 验证权限 - 数据库查询 - 返回结果。在验证权限阶段逻辑不够缜密,便会导致越权。(常见的程序都会认为通过登录后即可验证用户的身份,从而不会做下一步验证,最后导致越权。)

2、分类

①、未授权访问:没有某个功能权限,通过越权操作,获取了某个功能权限;②、水平越权:本来只能操作自己的数据,比如增删改查,通过越权操作,能操作其他同等权限账号的数据。③、垂直越权:本来有个账号只有低权限,通过越权操作,获取了高权限。

3、原因

①、通过隐藏 URL实现验证权限:

  • 有些程序的管理页面只有管理员才会显示,普通用户无法看不到,程序开发人员利用 URL 实现访问控制。(但若URL 泄露或被恶意攻击者猜到后,这会导致普通用户访问导致出现越权攻击。)

②、直接对象引用实现验证权限:

  • 这种通过修改验证参数就可以模拟成其他用户进行访问。(例如查看用户信息页面 URL 后加上自己的 id 便可查看,当修改为他人的 ID 号时会返回他人的信息,便产生了水平越权。)

③、多阶段功能处疏忽验证权限:

  • 多阶段功能是一个功能由多个阶段来进行实现。(例如修改密码,可能第一步是验证用户身份信息,号码验证码类的。当验证成功后,跳到第二步,输入新密码,很多程序会在这一步不再验证用户身份,导致恶意攻击者抓包直接修改标识身份参数值,导致可修改其他用户密码。)

④、静态文件下载疏忽验证权限:

  • 很多网站的下载功能,一些被下载的静态文件,可能只有付费用户或会员可下载。(但当这些文件的 URL 地址泄露后,导致任何人可下载,如果知道 URL 命名规则,则会便利服务器的收费文档进行批量下载。)

⑤、平台验证权限配置错误:

  • 一些程序会通过控件来限制用户的访问。(例如后台地址,普通用户不属于管理员组,则不能访问。但当配置平台或配置控件错误时,就会出现越权访问。)
二、越权漏洞发现

思路:①、使用已登陆账户访问页面的URL让未登录用户直接访问,根据是否能访问判断是否由未授权访问 ②、使用普通账户标识信息去替换管理员账户标识,根据是否能进行访问判断是否有垂直越权漏洞 ③、使用普通账户标识信息去替换其他普通账户标识,根据是否能进行访问判断是否有水平越权漏洞

三、越权漏洞复现
1、metinfoV4.0越权漏洞复现

①、下载metinfoV4.0CMS源码进行网站搭建

  • 下载地址:https://www.metinfo.cn/upload/file/update/MetInfo4.0.zip
  • 其他版本下载地址:http://www.metinfo.cn/upload/file/update/MetInfox.x.x.zip(将x.x.x改成对应版本即可)
  • 源码:MetInfo4.0.zip

②、使用phpstudy搭建该网站 ③、web访问网站地址进入安装目录 ④、创建普通用户进行登录

(:/0fc4a4ce23144741bffd5808ae208522)

代码语言:javascript
复制
会员注册路径:http://127.0.0.1:8003/member/login.php?lang=cn

⑤、进入会员中心页面修改用户信息 ⑥、使用burp进行抓包判断参数含义并重放

代码语言:javascript
复制
在修改页面中使用useid进行区分用户,将useid修改未管理员的名字

⑦、使用修改后的密码登录管理员账户

代码语言:javascript
复制
后台登录路径:http://127.0.0.1:8003/admin/login/login.php
2、seacmsV7.0越权漏洞复现

①、下载metinfoV4.0CMS源码进行网站搭建

  • 源码:seacms7.0.rar

②、使用phpstudy搭建该网站 ③、web访问网站地址进入安装目录

④、创建两个普通用户进行登录

代码语言:javascript
复制
会员注册路径:http://127.0.0.1:8004/reg.php

⑤、使用其中一个进入会员中心页面修改用户信息 ⑥、使用burp进行抓包判断参数含义并重放

抓包分析:

  • 在普通用户与管理用户修改信息时,所有的cookie信息一致
  • 普通用户修改密码时,决定修改账号的为email参数,在修改信息时将email参数改为其他普通用户邮箱即可登陆其他账户
  • 管理员用户使用需改信息时,决定修改账号的为username参数,将该参数修改可直接修改其他管理员密码或者直接创建管理员用户
代码语言:javascript
复制
后台登陆路径:http://127.0.0.1:8004/847pno/login.php?gotopage=%2F847pno%2F  \\该路径为系统创建时自动生成

⑦、使用修改后的密码登录另一个账号

3、CouchDB(CVE-2017-12635)越权漏洞复现

概述: Apache CouchDB是一个开源数据库,专注于易用性和成为”完全拥抱web的数据库”。CouchDB 会默认会在 5984 端口开放 Restful 的 API 接口,用于数据库的管理功能。它是一个使用JSON作为存储格式,JavaScript作为查询语言,MapReduce和HTTP作为API的NoSQL数据库。

  • 影响版本:小于 1.7.0 以及 小于 2.1.1

原理: Erlang和JavaScript,对JSON解析方式的不同,对于重复的键Erlang会存储两个值,而JavaScript只存储第二个值。

复现:①、使用docker搭建vulhub靶场 ②、进入靶场进行启动靶场

代码语言:javascript
复制
路径:vulhub/couchdb/CVE-2017-12635
命令:
docker-compose up -d  \\下载启用该靶场
docker ps  \\查看docker运行
docker-compose down -v  \\关闭该靶场

③、使用浏览器访问

代码语言:javascript
复制
访问路径:http://180.76.161.10:5984/

④、使用burp抓包流量并修改数据尝试创建用户

  • 该数据包创建一个用户,字段type的值对应用户,字段name的值代表账号,字段roles的值代表用户权限,字段password的值对应密码。
  • 创建admin权限用户提示只有admin才能进行设置。

⑤、利用漏洞进行创建用户

  • 字段roles的值代表用户权限,使用两个值进行设置,在JavaScript在检测时,检测的值为第二个[],代表无权限,系统判定为安全。在CouchDB的Erlang部分实现身份验证和授权时,检测的值为"roles": ["_admin"],代表为管理员权限,故创建具有管理员权限账户。
代码语言:javascript
复制
payload:
PUT /_users/org.couchdb.user:xiaobai HTTP/1.1
{
"type": "user",
"name": "xiaobai",
"roles": ["_admin"],
"roles": [],
"password": "xiaobai"

⑥、利用创建管理员登陆后台

代码语言:javascript
复制
后台登陆路径:http://180.76.161.10:5984/_utils/#login
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-11-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Ms08067安全实验室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 越权访问漏洞
    • 一、越权漏洞概述
      • 1、概述
      • 2、分类
      • 3、原因
    • 二、越权漏洞发现
      • 三、越权漏洞复现
        • 1、metinfoV4.0越权漏洞复现
        • 2、seacmsV7.0越权漏洞复现
        • 3、CouchDB(CVE-2017-12635)越权漏洞复现
    相关产品与服务
    访问管理
    访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用CAM创建子用户、用户组和角色,并通过策略控制其访问范围。CAM支持用户和角色SSO能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档