前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >WEB安全新玩法 [5] 防范水平越权之查看他人订单信息

WEB安全新玩法 [5] 防范水平越权之查看他人订单信息

原创
作者头像
天存信息
修改于 2021-06-29 06:44:47
修改于 2021-06-29 06:44:47
1.1K0
举报

水平越权是指系统中的用户在未经授权的情况下,查看到另一个同级别用户所拥有的资源。水平越权会导致信息泄露,其产生原因是软件业务设计或编码上的缺陷。iFlow 业务安全加固平台可以缓解部分场景下的水平越权问题。


以某电商网站为例,其查看订单功能存在漏洞:仅依靠修改 URL 参数,任意登录用户不仅可以查看自己的订单信息,也可以查看到其他用户的订单信息。我们看看在网站自身存在缺陷的情况下,如何利用 iFlow 阻止水平越权的订单信息访问。

一、原始网站

1.1 正常用户访问

正常用户登录成功之后,进入个人中心的订单管理页面显示自己的订单列表。

图1
图1

从订单列表中点击其中一个订单的订单详情,则可以看到订单的具体信息。

图2
图2

HTTP 交互流程如下:

表1
表1

1.2 攻击者访问

电商网站在处理订单详情业务时有个漏洞:它使用提交参数中的订单 ID 在数据库中获取到了订单信息,但没有去检查订单所有者是否与已登录用户为同一用户,而是直接将订单信息返回给了浏览器。

这样,攻击者与正常用户经过同样的操作 (即在订单列表查看自己的订单详情) 后,可以手工修改 URL 中的订单 ID 从而获取到任意用户的订单信息。这个过程可以连续地进行。

下图中,攻击者访问了 ID 为 8 的订单详情,而这个订单本应属于「test01」用户。

图3
图3

HTTP 交互流程如下:

表2
表2

二、iFlow虚拟补丁后的网站

我们在 Web 服务器前部署 iFlow 业务安全加固平台,它有能力拦截、计算和修改双向 HTTP 报文并具备存储能力,成为 Web 应用的虚拟补丁。在本例中,iFlow 记录订单列表中的所有订单 ID,在用户访问订单详情时进行检查。

2.1 正常用户访问

服务器在返回用户订单列表时,iFlow 解析出每一订单项目的订单 ID 形成用户的 合法id记录。用户在访问订单详情时,iFlow 检查要访问的订单 ID 是否包含在 合法id记录 中。

正常用户的 HTTP 交互流程如下:

表3
表3

2.2 攻击者访问

如前所示,攻击者自行修改订单 ID 发出请求,iFlow 拦截此请求,发现请求的 ID 不在 合法id记录 中,即终止此过程。

攻击者的 HTTP 协议交互过程如下:

表4
表4

2.3 代码

iFlow 内置的 W2 语言是一种专门用于实现 Web 应用安全加固的类编程语言。它介于配置和通用语言之间,具备编程的基本要素和针对 HTTP 协议的特有扩展,能为业务系统编写涉及复杂判断和动态修改的逻辑。

考虑到安全产品的使用者通常为非程序员,他们习惯面对配置文件而非一段代码。因此,W2 语言虽包含语言要素,仍以规则文件方式呈现,并采用可以体现层次结构和方便词法校验的 JSON 格式。

用 W2 语言实现上述虚拟补丁的代码如下:

代码语言:txt
AI代码解释
复制
[
	{
        "if": [
			"streq(REQUEST_FILENAME, '/shopx/index.php')",
			"streq(@ARGS.s, '/index/order/index.html')"
		],
		"then": {
            "execution": { 
                "directive": "setVariable", 
                "variable": "SESSION.valid_ids", 
                "value": "rxMatch(RESPONSE_BODY, '<a[^>]+href=\"[^\"].*(/index/order/detail/id.*)\" target=.*\"[^>]*>', -1, 1)",
                "expiry": 3600
            } 
        }
    },
    {
        "if": [ 
            "streq(REQUEST_FILENAME, '/shopx/public/index.php')",
            "contain(@ARGS.s, '/index/order/detail/id')",
            "!contain(SESSION.valid_ids, @ARGS.s)",
        ],
        "then": { 
            "verdict": { 
                "action": "deny", 
                "log": "User access page ${@ARGS.s} NOT in ${SESSION.valid_ids}" 
            } 
        } 
    }
]

示例代码中有两条规则,分别作用如下:

第一条规则

当服务器返回订单列表时,iFlow 解析此响应。iFlow 用正则表达式匹配列表中每一个订单详情的链接,然后保存在会话 (SESSION) 的存储变量 valid_ids 中。

第二条规则

当浏览器请求订单详情时,iFlow 拦截此请求。iFlow 检查请求参数 s 是否包含在会话 (SESSION) 的存储变量 valid_ids 中。如果没有,则表示这个订单 ID 是攻击者自行输入的,阻止访问。

注意:上述会话中的 valid_ids 是保存在服务器端的 iFlow 存储中的,攻击者在浏览器端是看不到数据更无法进行修改的。

三、总结

iFlow 使用两条规则在不修改服务器端代码的前提下,利用没有越权的订单列表信息,透明地保证了订单详情不被水平越权查看。

这个例子是建立在用户常规操作顺序的基础上的,即先获得订单列表再查看订单详情。如果网站的其他页面也包含了订单详情链接或者用户从书签中访问订单详情,则会产生误判。因此,它仅适用于这个场景而非彻底解决了水平越权问题。

以补丁方式解决水平越权问题还可以有其他一些方式,如后端参数混淆、加入鉴别码等方式。如何用 iFlow 实现这些功能,在后续介绍中可以看到。(张戈 | 天存信息)

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
WEB安全新玩法 [8] 阻止订单重复提交
交易订单的重复提交虽然通常不会直接影响现金流和商品流,但依然会给网站运营方带来损害,如消耗系统资源、影响正常用户订单生成、制造恶意用户发起纠纷的机会等。倘若订单对象是虚拟商品,也有可能造成实际损失。订单重复提交的检查工作本应该由网站自身实现,而 iFlow 业务安全加固平台则可以为未实现这项功能的网站提供防护。
天存信息
2021/07/28
1.6K0
WEB安全新玩法 [8] 阻止订单重复提交
WEB安全新玩法 [3] 防护交易数据篡改
在任何涉及交易的系统中,客户与商家之间的交易数据具有核心作用,如购买商品的价格、数量、型号和优惠券等。在客户挑选商品的过程中,这些交易数据逐渐形成;待客户提交订单时,交易数据被商家接收,形成双方认可的订单。交易数据在形成过程中必须要有可靠的临时存储,而不可靠的存储会允许攻击者提交伪造的交易数据,使商家利益受损。
天存信息
2021/06/24
1.7K0
WEB安全新玩法 [3] 防护交易数据篡改
WEB安全新玩法 [4] 防护邮箱密码重置漏洞
大部分具有账号系统的应用都会提供重置用户登录密码的功能,常见方式之一是:用户输入自己的邮箱地址或手机号,应用向这个邮箱或手机号发送验证码,用户将收到的验证码输入应用中即可完成密码重置。这一过程容易因设计不周全而被攻击者加以利用。iFlow 业务安全加固平台可以为设计不当的应用打上动态虚拟补丁,使之防御可能的恶意利用。
天存信息
2021/06/28
2.2K0
WEB安全新玩法 [4] 防护邮箱密码重置漏洞
WEB安全新玩法 [6] 防范图形验证码重复使用
在完成关键业务操作时,要求用户输入图形验证码是防范自动化攻击的一种措施。为安全起见,即使针对同一用户,在重新输入信息时也应该更新图形验证码。iFlow 业务安全加固平台可以加强这方面的处理。
天存信息
2021/06/30
1.1K0
WEB安全新玩法 [6] 防范图形验证码重复使用
WEB安全新玩法 [2] 防范前端验证绕过
用户登录,几乎是所有 Web 应用所必须的环节。Web 应用通常会加入一些验证手段,以防止攻击者使用机器人自动登录,如要求用户输入图形验证码、拖动滑动条等。但是,如果验证的逻辑仅仅在前端执行,是很容易被攻击者绕过的。iFlow 业务安全加固平台可以为只使用前端验证的应用打上动态虚拟补丁,使之成为需要前后端配合执行的验证逻辑,大幅度提高攻击者的攻击难度。
天存信息
2021/06/23
1.8K0
WEB安全新玩法 [2] 防范前端验证绕过
WEB安全新玩法 [7] 加密不安全下载路径
提供下载功能的网站,其下载资源的链接是任何用户都能获取的。如若设计不当,攻击者通过分析链接的文本,能够构造出意外但有效的链接,访问网站功能之外的资源,从而窃取主机上的敏感信息。
天存信息
2021/07/01
5450
WEB安全新玩法 [7] 加密不安全下载路径
WEB安全新玩法 [9] 重置密码之验证流程防绕过
一般来说,业务流程中出现多个操作环节时,是需要顺序完成的。程序设计者往往按照正常用户的操作顺序实现功能,而忽略了攻击者能够绕过中途环节,直接在后续环节上进行非法操作。iFlow 业务安全加固平台能够在不修改网站程序的情况下,强制流程的顺序执行。
天存信息
2021/07/29
1.2K0
WEB安全新玩法 [9] 重置密码之验证流程防绕过
WEB安全新玩法 [10] 防范竞争条件支付漏洞
服务器端业务逻辑,特别是涉及数据库读写时,存在着关键步骤的时序问题,如果设计或代码编写不当就可能存在竞争条件漏洞。攻击者可以利用多线程并发技术,在数据库的余额字段更新之前,同时发起多次兑换积分或购买商品请求,从中获取利益。本文将讨论如何简单地使用 iFlow 应用安全加固平台的可编程特性,对竞争条件产生的支付漏洞进行防护。
天存信息
2021/07/30
1K0
WEB安全新玩法 [10] 防范竞争条件支付漏洞
WEB安全新玩法 [11] 防范批量注册
网站的攻击者通过批量注册用户,能够实施大规模非法操作,如抢优惠券、恶意刷单等。这给服务商造成了直接的经济损失,而大量的垃圾用户也会占用系统资源,增加系统运行压力。防范批量注册需要针对系统特点,多管齐下综合应对,iFlow 业务安全加固平台可以提供各种防范批量注册的技术实现方式。
天存信息
2021/08/03
1.1K0
WEB安全新玩法 [11] 防范批量注册
WEB安全新玩法 [1] 业务安全动态加固平台
近年来,信息安全体系建设趋于完善,以注入攻击、跨站攻击等为代表的传统 Web 应用层攻击很大程度上得到了缓解。但是,Web 应用的业务功能日益丰富、在线交易活动愈加频繁,新的安全问题也随之呈现:基于 Web 应用所承载的交易特性,某些利用其业务逻辑设计缺陷来构造的针对具体业务的攻击逐渐成为主流,我们称之为业务层攻击。
天存信息
2021/06/22
4910
WEB安全新玩法 [1] 业务安全动态加固平台
水平越权挖掘技巧与自动化越权漏洞检测
自从2022.5入职字节无恒实验室以来,我一直从事SDLC相关工作,在SDLC中自动化安全能力卡点之一就是DAST(Dynamic Application Security Test),也是非常重要的用于实现安全左移的手段,我本人近两个月也在从事DAST产品的开发,目标自然也是希望能投入商用。我开发的DAST不会开源,但是最近恰逢一个契机需要写一款安全工具,于是随便用python简单写了一个水平越权的检测工具,误报率、漏水率这些数据不关心,反正能有个代码然后会做PPT扯淡就行了。
Y1ng
2023/03/08
4.6K1
水平越权挖掘技巧与自动化越权漏洞检测
Web安全系列——越权访问(权限控制失效)
本文将介绍越权访问的原理、风险以及典型攻击场景,并为开发者提供有效的防范措施,帮助构建安全的Web应用。
windealli
2023/10/13
2.3K0
Web安全系列——越权访问(权限控制失效)
[红日安全]Web安全Day7 - 越权/非授权访问实战攻防
大家好,我们是红日安全-Web安全攻防小组。此项目是关于Web安全的系列文章分享,还包含一个HTB靶场供大家练习,我们给这个项目起了一个名字叫 Web安全实战 ,希望对想要学习Web安全的朋友们有所帮助。每一篇文章都是于基于漏洞简介-漏洞原理-漏洞危害-测试方法(手工测试,工具测试)-靶场测试(分为PHP靶场、JAVA靶场、Python靶场基本上三种靶场全部涵盖)-实战演练(主要选择相应CMS或者是Vulnhub进行实战演练),如果对大家有帮助请Star鼓励我们创作更好文章。如果你愿意加入我们,一起完善这个项目,欢迎通过邮件形式(sec-redclub@qq.com)联系我们。
红日安全
2020/02/24
2.6K0
web应用水平越权(横向越权)和垂直权限(纵向越权)问题
横向越权:横向越权指的是攻击者尝试访问与他拥有相同(级别或角色)权限的用户的资源。
全栈程序员站长
2022/07/05
1.8K0
业务逻辑漏洞探索之越权漏洞
越权,顾名思义,就是超出了权限或权力范围。多数WEB应用都具备权限划分和控制,但是如果权限控制功能设计存在缺陷,那么攻击者就可以通过这些缺陷来访问未经授权的功能或数据,这就是我们通常说的越权漏洞。攻击者越权后就可以进行一些操作,例如查看敏感信息、进行一些增删改查的操作等等。
漏斗社区
2018/11/30
2.5K0
业务逻辑漏洞探索之越权漏洞
逻辑漏洞之越权、支付漏洞
因为程序本身逻辑不严或逻辑太复杂,导致一些逻辑分支不能够正常处理或处理错误,造成的一系列漏洞
宸寰客
2020/09/08
2.6K0
越权漏洞详解
越权访问(Broken Access Control,简称BAC)是Web应用程序中一种常见的漏洞
全栈程序员站长
2022/07/04
1.3K0
越权漏洞详解
这可能是最全的入门Web安全路线规划
本次写的是一篇如何通过针对性系统学习Web安全或者说如何能成为一名渗透测试人员(有疑问或者错误的地方还望大家多多指正)。
Gcow安全团队
2020/03/19
1.6K0
[ffffffff0x] 浅谈web安全之逻辑漏洞
实战渗透测试中,web的攻防一直是重中之重,而无论是对于富有经验的老手黑客和新手脚本小子来说,相比 SQL 注入、XSS 漏洞等传统安全漏洞,逻辑漏洞都是最具价值的。这类漏洞往往危害巨大,可能造成企业的资产损失和名誉受损,并且传统的WAF设备和防护措施收效甚微。
r0fus0d
2020/12/21
1.3K0
[ffffffff0x] 浅谈web安全之逻辑漏洞
渗透测试越权漏洞测试详情
最近忙于工作没有抽出时间来分享渗透测试文章,索性今天由我们Sinesafe的高级渗透大牛给大家详细讲下主要在业务中发现逻辑和越权的漏洞检测方法,希望大家能对自己的网站安全进行提前预防和了解,再次提醒做安全测试前必须要有正规的授权才能进行测试,提供网站的安全性保障权益。
技术分享达人
2019/10/17
1.5K0
渗透测试越权漏洞测试详情
推荐阅读
相关推荐
WEB安全新玩法 [8] 阻止订单重复提交
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文