在本节中,我们将学习设计和开发团队所犯的一些典型错误的示例,来查看是如何直接导致业务逻辑缺陷的,主要包含以下五个方面:
◆过度信任客户端控制
◆无法处理非常规输入
◆对用户行为做出有缺陷的假设
◆特定领域的缺陷
◆提供加密预言机
无法处理非常规输入
上一小节中介绍了一个利用负数加购物车的试验场景,接下来再介绍另外两个场景。
场景试验-无法处理非常规输入二:
https://portswigger.net/web-security/logic-flaws/examples/lab-logic-flaws-low-level
场景说明:
这个场景没有充分验证用户输入,可以利用其采购工作流程中的逻辑缺陷以意想不到的价格购买商品。
试验目的:
要完成这个试验,需要购买"Lightweightl33t leather jacket"。
攻击过程:
①同样的购物网站,把添加购物车的请求发送到Repeater,Repeater重新修改个负数后发送,刷新下购物车,发现产品数量不能为负数了。
②我们尝试增加每次物品的数量,发现每次最大只能购买99个,把这个请求发送到Intruder,并清除所有变量
③在Payloads处把类型和攻击次说做下调整后发起攻击
④不停地刷新购物车,可看到总金额达到一定数后突然变成负数了,说明在处理总金额这块逻辑上存在缺陷
⑤继续不停地添加商品,直到总金额变成如下负数,就不要再添加这个商品了,因为再添加一个就超过100元了
⑥再增加个其他商品,数量直到增加到总金额控制在0~100元之间
⑦点击支付后成功,完成本次试验
试验小结:
因为业务逻辑缺陷不一定会在哪个环节出现,所以针对各种可能性都可以进行缺陷尝试。同样这个购物场景可能具有不同的逻辑缺陷,通过各种边界尝试来发现逻辑缺陷是一种常用的手段。
场景试验-异常输入的不一致处理:
https://portswigger.net/web-security/logic-flaws/examples/lab-logic-flaws-inconsistent-handling-of-exceptional-input
场景说明:
这个场景没有充分验证用户输入,可以利用其他账户注册过程中的逻辑缺陷来访问管理功能。
试验目的:
要完成这个试验,需要访问管理面板并删除Carlos。
攻击过程:
①可以先用BurpSuite来爬一下站点目录,位置在"Target">"Site map"标签里面,右键后选择"Engagement tools">"Discover content"
②点击"Session isnot running"开始扫描站点目录,过一段时间可以注意到,发现一个/admin的目录
③浏览下/admin,注意到没有访问权限,只有"DontWannaCry"这个公司才有权限
④在注册页面尝试注册个账号,email域名就使用试验场景提供的那个,域名前面的名字放一个超长字串(至少250个字符)
⑤注册成功后,到邮箱里面进行确认,确认完毕后登录这个新账号,进去后可以发现email地址被裁减到255个字符了
⑥利用这个漏洞,我们重新再注册一个账号,这次在email域名前面再加个子域,使整个email注册部分变成这样:
very-long-string@dontwannacry.com.YOUR-EMAIL-ID.web-security-academy.net
确保前面那个长字串一直到@dontwannacry.com总共255个字符
⑦新账号注册登录后,可以看到email地址经过裁减变成dontwannacry.com这个域名了
⑧浏览/admin目录,并删除carlos用户,完成本试验
对用户行为做出有缺陷的假设
逻辑漏洞最常见的根本原因之一是对用户行为做出有缺陷的假设,这可能会导致开发人员没有考虑到的假设所带来的风险问题。
受信任的用户并不总是值得信任的,虽然应用程序实施了看似强大的措施来强制执行业务规则,可能看起来是安全的,但不幸的是,一些应用程序错误地进行了假设,在最初通过了这些严格的控制之后,用户极其数据可以无限期地被信任。
如果在整个应用程序中没有一直地应用业务规则和安全措施,这可能会导致潜在的危险漏洞,而攻击者可能会利用这些漏洞。
场景试验-不一致的安全控制:
https://portswigger.net/web-security/logic-flaws/examples/lab-logic-flaws-inconsistent-security-controls
场景说明:
这个场景具有允许任意用户访问只对公司员工可用的管理功能的逻辑缺陷漏洞。
试验目的:
要完成这个试验,需要访问管理面板并删除Carlos。
攻击过程:
①这个场景跟上一个试验场景类似,/admin页面对访问权限有限制,因此我们先注册一个账号,并用场景提供的邮箱进行激活。
②登录这个账户,可以看到提供更新email的功能,我们将自己的email的域名更新成
@dontwannacry.com
③更新完后,就可以访问/admin管理面板了,删除carlos完成试验
命令注入攻击(上)
目录遍历攻击(上)
身份验证漏洞-多因素身份验证中的漏洞(上)
身份验证漏洞-基于密码的登录漏洞(上)
SQL注入攻击-检索隐藏的数据
HTTP高级请求走私-HTTP请求隧道(上)
HTTP高级请求走私-CRLF的利用(上)
HTTP高级请求走私-响应队列中毒
HTTP Host头漏洞-密码重置投毒
HTTP Host头漏洞攻击-概念梳理
原文始发于微信公众号(H君网安白话):业务逻辑漏洞-利用示例(二)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论