业务逻辑漏洞-利用示例(三)

admin 2022年7月12日00:51:15评论40 views字数 2695阅读8分59秒阅读模式

在本节中,我们将学习设计和开发团队所犯的一些典型错误的示例,来查看是如何直接导致业务逻辑缺陷的,主要包含以下五个方面:

◆过度信任客户端控制

◆无法处理非常规输入

◆对用户行为做出有缺陷的假设

◆特定领域的缺陷

◆提供加密预言机

 


对用户行为做出有缺陷的假设

用户不会总是提供强制输入,有一种误解是用户总是为必填字段提供值,浏览器可能会阻止普通用户在没有必要输入的情况下提交表单。

但是攻击者可以在传输过程中篡改参数,甚至是完全删除参数。

在同一个服务器端脚本中实现多个功能的情况下,这是一个特殊的问题,在这种情况下,特定参数的存在或不存在可以确定执行哪个代码,删除参数值可能允许攻击者访问本应无法访问的代码路径。

在探查逻辑缺陷时,应尝试依次删除每个参数,并观察起对响应的影响:

●一次只删除一个参数,以确保到达所有相关的代码路径。

●尝试删除参数的名称及值,服务器通常会以不同的方式处理这两种情况。

●遵循多阶段流程直至完成,有时在一个步骤中篡改参数会对工作流程中的另一步骤产生影响。

这适用于URLPOST参数,但也不要忘记检查cookie

 

场景试验-两个账户的弱隔离:

https://portswigger.net/web-security/logic-flaws/examples/lab-logic-flaws-weak-isolation-on-dual-use-endpoint

场景说明:

这个场景根据用户的输入对用户权限的级别做出了错误的假设。因此,可以利用其账户管理功能的逻辑来访问任意用户的账号。

试验目的:

要完成这个试验,需要访问管理员账户并删除carlos

攻击过程:

访问后用场景提供的账号进行登录,再访问"My account"是个改密的页面,在页面上改密后把这个请求发送给Repeater,把当前密码的条件删掉,发现还是可以改密成功

业务逻辑漏洞-利用示例(三)

 

修改下这个请求,把username改成administrator,再发送请求

业务逻辑漏洞-利用示例(三)

 

最后用administrator登录后删除用户carlos即可完成试验。

 

试验小结:

这个试验其实虽然是非常扯,现实中根本不可能碰到到,但是很好的说明了在查找逻辑缺陷时对参数调整的过程。



 


用户不会总是遵循预期的顺序

另外,许多事务依赖于由一系列步骤组成的预定义工作流,Web界面通常会引导用户完成此过程,每次完成当前流程时,都会将他们带到工作流程的下一步。

但是,攻击者不一定会遵守这个预期的顺序,未能考虑到这种可能性可能会导致容易被利用的逻辑缺陷。

例如,许多实施双因素身份验证的网站要求用户在一个页面上登录,然后在另一个页面上输入验证码,假设用户始终遵循此过程直到完成,如果不验证他们是否这样做,可能会允许攻击者完全绕过双因素的步骤。

可以参照以前介绍过的试验场景-双因素简单旁路

身份验证漏洞-多因素身份验证中的漏洞(上)

 

即使在相同的工作流程或功能中,对事件顺序做出假设也会导致存在问题。通过各种攻击工具,一旦攻击者看到请求,他们就可以随意重放,并强制浏览他们想要与服务器执行交互的任何顺序。这允许他们在应用程序处于意外状态时完成不同的操作。

要识别这些类型的缺陷,我们可以强制以非预期的顺序提交请求进行浏览。

例如,我们可以跳过某些步骤、多次访问单个步骤、返回到之前的步骤等等。

注意,如何访问不同的步骤,尽管通常只向特定URL提交GETPOST请求,但有时可以通过向URL提交不同的参数集来进行访问。

跟所有逻辑缺陷一样,尝试确定开发人员所做的假设以及攻击面所在的位置,就可以寻找违反这些假设的方法。

但是要注意,这种测试通常会导致异常,因为预期变量具有null或未初始化的值,如果部分定义或不一致可能会导致应用程序错误,在这种情况下,务必密接注意遇到的任何错误消息或调试信息。这些可能是信息泄露的宝贵来源,可以帮助我们微调攻击并了解有关后端行为的关键细节。

 

场景试验-工作流程验证不足:

https://portswigger.net/web-security/logic-flaws/examples/lab-logic-flaws-insufficient-workflow-validation

场景说明:

这个场景对采购工作流程中的事件顺序做出了错误的假设。

试验目的:

要完成这个试验,需要利用这个漏洞购买一件"Lightweight133t leather jacket"

攻击过程:

登录页面后购买一件可以正常买得起的商品,查看Proxy history可以发现,当在购买支付时,会重定向另一个确认页面,把这个请求发送到Repeater

业务逻辑漏洞-利用示例(三)

 

jacket加到购物车里面,然后利用Repeater重新发送上面这个请求,即可购买成功完成试验。

 

试验小结:

这个场景暴露出来的逻辑缺陷,其实就是只通过页面来控制流程,一旦攻击者跳过中间某些关键流程,或是利用关键流程进行重放,则缺陷漏洞就会被利用。

 

场景试验-通过有缺陷的状态机绕过身份验证:

https://portswigger.net/web-security/logic-flaws/examples/lab-logic-flaws-authentication-bypass-via-flawed-state-machine

场景说明:

这个场景对登录过程中的事件顺序做出了错误的假设。

试验目的:

要完成这个试验,需要利用此漏洞绕过试验的身份验证,访问管理界面,并删除carlos

攻击过程:

登录后尝试访问/admin,发现只有administrator有权限可以进入,退出账号,然后将BurpSuite改为阻断模式。

 

再重新登录,输入账号密码的请求转发后,把后一个GET /role-selector请求丢弃掉,相当于跳过这一步角色确认的流程

业务逻辑漏洞-利用示例(三)

业务逻辑漏洞-利用示例(三)

 

跳过后再重新通过浏览器访问主页,发现默认已经是管理员权限了

业务逻辑漏洞-利用示例(三)

 

进入/admin删除carlos,即可完成本试验

业务逻辑漏洞-利用示例(三)

 

试验小结:

这个试验场景演示了在跳过一些正常流程后,如果存在逻辑缺陷的话可能会存在一些异常授权的情况,所以在进行渗透攻击时,可以尝试跳过一些流程步骤。


业务逻辑漏洞-利用示例(三)


命令注入攻击(上)
目录遍历攻击(上)
身份验证漏洞-多因素身份验证中的漏洞(上)
身份验证漏洞-基于密码的登录漏洞(上)

身份验证漏洞-概念梳理

SQL注入攻击-检索隐藏的数据
HTTP高级请求走私-HTTP请求隧道(上)
HTTP高级请求走私-CRLF的利用(上
HTTP高级请求走私-响应队列中毒
HTTP Host头漏洞-密码重置投毒
HTTP Host头漏洞攻击-概念梳理


原文始发于微信公众号(H君网安白话):业务逻辑漏洞-利用示例(三)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年7月12日00:51:15
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   业务逻辑漏洞-利用示例(三)http://cn-sec.com/archives/1162831.html

发表评论

匿名网友 填写信息