业务逻辑漏洞

2024-07-21

对客户端控件的过度信任

lab

实验室:对客户端控件的过度信任 |网络安全学院 (portswigger.net)

solve

  1. bp后,登录并尝试购买皮夹克。订单被拒绝,因为您没有足够的商店信用额度。
  2. 在 Burp 中,转到“代理”>“HTTP 历史记录”并研究订购流程。请注意,当您将商品添加到购物车时,相应的请求包含一个参数。将请求发送到 Burp Repeater。price`POST /cart`
  3. 在 Burp Repeater 中,将价格更改为任意整数并发送请求。刷新购物车并确认价格已根据您的输入进行更改。
  4. 重复此过程,将价格设置为低于可用商店信用额度的任何金额。
  5. 完成求解实验的订单。

高级逻辑漏洞

lab

实验室:高级逻辑漏洞 |网络安全学院 (portswigger.net)

solve

  1. 打嗝后,登录并将便宜的商品添加到您的购物车中。
  2. 在 Burp 中,转到“代理”>“HTTP 历史记录”并研究相应的 HTTP 消息。请注意,数量由请求中的参数确定。POST /cart
  3. 转到“拦截”选项卡并打开拦截。将另一件商品添加到您的购物车,然后转到 Burp 中截获的请求。POST /cart
  4. 将参数更改为任意整数,然后转发任何剩余的请求。请注意,购物车中的数量已根据您的输入成功更新。quantity
  5. 重复此过程,但这次请求为负数量。检查这是否已成功从购物车数量中扣除。
  6. 请求适当的负数量,以从购物车中删除比当前包含的更多的商品。确认您已成功强制购物车包含负数量的产品。转到您的购物车,请注意总价现在也是负数。
  7. 像往常一样将皮夹克添加到您的购物车中。为另一件商品添加合适的负数量,将总价降低到低于您剩余的商店积分。
  8. 下单解决实验室。

安全控制不一致

lab

实验室:安全控制不一致 |网络安全学院 (portswigger.net)

solve

  1. 打开实验室,然后转到 Burp 中的“目标”>“站点地图”选项卡。右键单击实验室域,然后选择“参与工具”>“发现内容”以打开内容发现工具。
  2. 单击“会话未运行”以启动内容发现。片刻之后,查看对话框中的“站点地图”选项卡。请注意,它发现了路径 。/admin
  3. 尝试浏览到 。尽管您没有访问权限,但错误消息指示用户有权。/admin`DontWannaCry`
  4. 进入账号注册页面。请注意,该消息告诉员工使用其公司电子邮件地址。使用以下格式的任意电子邮件地址注册:DontWannaCry

    anything@your-email-id.web-security-academy.net

    您可以通过单击“电子邮件客户端”按钮找到您的电子邮件域名。

  5. 进入电子邮件客户端,点击确认邮件中的链接,完成注册。
  6. 使用您的新帐户登录,然后转到“我的帐户”页面。请注意,您可以选择更改您的电子邮件地址。将您的电子邮件地址更改为任意地址。``
  7. 请注意,您现在可以访问管理面板,您可以在其中删除以解决实验室问题。carlos

业务规则执行存在缺陷

lab

实验室:业务规则执行存在缺陷 |网络安全学院 (portswigger.net)

solve

  1. 登录并注意有一个优惠券代码。NEWCUST5
  2. 在页面底部,注册时事通讯。您会收到另一个优惠券代码。SIGNUP30
  3. 将皮夹克添加到您的购物车。
  4. 转到结帐并应用两个优惠券代码以获得订单折扣。
  5. 尝试多次应用这些代码。请注意,如果您连续两次输入相同的代码,则会被拒绝,因为优惠券已被应用。但是,如果在两个代码之间交替,则可以绕过此控件。
  6. 重复使用这两个代码的次数足够多,以将您的订单总额减少到低于剩余的商店信用额度。完成求解实验的订单。

低级逻辑缺陷

lab

实验室:低级逻辑缺陷 |网络安全学院 (portswigger.net)

solve

  1. 打嗝后,登录并尝试购买皮夹克。订单被拒绝,因为您没有足够的商店信用额度。在代理历史记录中,研究订购流程。将请求发送到 Burp Repeater。POST /cart
  2. 请注意,在 Burp Repeater 中,您只能为每个请求添加一个 2 位数的数量。将请求发送到 Burp Intruder。
  3. 转到打嗝入侵者。在“位置”选项卡上,将参数设置为 。quantity`99`
  4. 在“有效负载”选项卡上,选择有效负载类型“空有效负载”。在“有效负载设置”下,选择“无限期继续”。开始攻击。
  5. 当攻击正在运行时,转到您的购物车。每隔一段时间刷新页面并监控总价。最后,请注意,价格突然切换到一个大的负整数,并开始向上计数到 0。价格已超过后端编程语言中整数允许的最大值 (2,147,483,647)。因此,该值已循环回最小可能值 (-2,147,483,648)。
  6. 清空您的购物车。在接下来的几个步骤中,我们将尝试添加足够的商品,以便价格回转,并在您剩余的商店信用额度的 0 美元到 100 美元之间结算。这在数学上是不可能仅使用皮夹克的。请注意,夹克的价格以美分 (133700) 为单位。
  7. 再次创建相同的入侵者攻击,但这次,在“有效负载”>“有效负载设置”下,选择准确生成有效负载。323
  8. 转到“资源池”选项卡,将攻击添加到资源池中,并将“最大并发请求数”设置为 。开始攻击。1
  9. 入侵者攻击完成后,转到 Burp Repeater 中的请求并发送单个夹克请求。订单的总价现在应为 。POST /cart`47`-$1221.96
  10. 使用 Burp Repeater 将适当数量的其他商品添加到您的购物车中,使总额在 0 美元到 100 美元之间。
  11. 下单解决实验室。

异常输入的处理不一致

lab

实验室:异常输入的处理不一致 |网络安全学院 (portswigger.net)

solve

  1. 通过 Burp 代理流量时,打开实验室并转到“目标”>“站点地图”选项卡。右键单击实验室域,然后选择“参与工具”>“发现内容”以打开内容发现工具。
  2. 单击“会话未运行”以启动内容发现。片刻之后,查看对话框中的“站点地图”选项卡。请注意,它发现了路径 。/admin
  3. 尝试浏览到 。尽管您没有访问权限,但错误消息指示用户具有访问权限。/admin`DontWannaCry`
  4. 进入账号注册页面。请注意,该消息告诉员工使用其公司电子邮件地址。DontWannaCry
  5. 从实验室横幅中的按钮中,打开电子邮件客户端。记下电子邮件服务器域名中的唯一 ID ()。@YOUR-EMAIL-ID.web-security-academy.net
  6. 返回实验室,使用以下格式的超长电子邮件地址进行注册:

    very-long-string@YOUR-EMAIL-ID.web-security-academy.net

    长度应至少为 200 个字符。very-long-string

  7. 转到电子邮件客户端,并注意到您已收到确认电子邮件。单击链接以完成注册过程。
  8. 登录并转到“我的帐户”页面。请注意,您的电子邮件地址已被截断为 255 个字符。
  9. 注销并返回帐户注册页面。
  10. 使用另一个长电子邮件地址注册一个新帐户,但这次在您的电子邮件地址中包含子域,如下所示:dontwannacry.com

    very-long-string@dontwannacry.com.YOUR-EMAIL-ID.web-security-academy.net

    确保 是正确的字符数,以便末尾的“”恰好是字符 255。very-long-string`m`@dontwannacry.com

  11. 转到电子邮件客户端,然后单击您收到的确认电子邮件中的链接。登录到您的新帐户,请注意您现在可以访问管理面板。确认电子邮件已成功发送到您的电子邮件客户端,但应用程序服务器将与您的帐户关联的地址截断为 255 个字符。因此,您已经能够使用看似有效的地址进行注册。您可以从“我的帐户”页面确认这一点。@dontwannacry.com
  12. 转到管理面板并删除以解决实验室问题。carlos

两用端点上的弱隔离

lab

实验室:两用端点上的弱隔离 |网络安全学院 (portswigger.net)

solve

  1. 运行 Burp 后,登录并访问您的帐户页面。
  2. 更改密码。
  3. 研究打嗝中继器中的请求。POST /my-account/change-password
  4. 请注意,如果完全删除该参数,则无需提供当前密码即可成功更改密码。current-password
  5. 请注意,更改密码的用户由参数确定。重新设置并发送请求。username`username=administrator`
  6. 注销并注意,您现在可以使用刚刚设置的密码成功登录。administrator
  7. 转到管理面板并删除以解决实验室问题。carlos

工作流程验证不足

lab

实验室:工作流程验证不足 |网络安全学院 (portswigger.net)

solve

  1. 打嗝运行后,登录并使用商店积分购买您能负担得起的任何商品。
  2. 研究代理历史记录。请注意,当您下订单时,请求会将您重定向到订单确认页面。发送到打嗝中继器。POST /cart/checkout`GET /cart/order-confirmation?order-confirmation=true`
  3. 将皮夹克添加到您的篮子中。
  4. 在 Burp Repeater 中,重新发送订单确认请求。观察订单完成时,成本没有从您的商店信用中扣除,并且实验室已解决。

通过有缺陷的状态机绕过身份验证

lab

实验室:通过有缺陷的状态机绕过身份验证 |网络安全学院 (portswigger.net)

solve

  1. 运行 Burp 后,完成登录过程,请注意,您需要先选择角色,然后才能进入主页。
  2. 使用内容发现工具标识路径。/admin
  3. 尝试直接从角色选择页面浏览,并观察这不起作用。/admin
  4. 注销,然后返回登录页面。在 Burp 中,打开代理拦截,然后登录。
  5. 转发请求。下一个请求是 。删除此请求,然后浏览到实验室的主页。请注意,您的角色已默认为该角色,并且您有权访问管理面板。POST /login`GET /role-selector`administrator
  6. 删除以解决实验室问题。carlos

无限金钱逻辑缺陷

lab

实验室:无限金钱逻辑缺陷 |网络安全学院 (portswigger.net)

solve

该解决方案使用 Burp Intruder 来自动化购买和兑换礼品卡的过程。精通 Python 的用户可能更喜欢使用 Turbo Intruder 扩展。

  1. 在 Burp 运行的情况下,登录并注册时事通讯以获取优惠券代码 .请注意,您可以购买 10 美元的礼品卡并从“我的帐户”页面兑换它们。SIGNUP30
  2. 将礼品卡添加到您的购物篮并继续结账。应用优惠券代码可获得 30% 的折扣。完成订单并将礼品卡代码复制到剪贴板。
  3. 转到您的帐户页面并兑换礼品卡。请注意,整个过程已为您的商店信用额度增加了 3 美元。现在,您需要尝试自动执行此过程。
  4. 研究代理历史记录,并注意您通过在请求参数中提供代码来兑换礼品卡。gift-card`POST /gift-card`
  5. 转到“项目选项”>“会话”。在“会话处理规则”面板中,单击“添加”。此时将打开“会话处理规则编辑器”对话框。
  6. 在对话框中,转到“范围”选项卡。在“URL 范围”下,选择“包括所有 URL”。
  7. 返回“详细信息”选项卡。在“规则操作”下,单击“添加”>“运行宏”。在“选择宏”下,再次单击“添加”以打开宏记录器。
  8. 选择以下请求序列:

    POST /cart
    POST /cart/coupon
    POST /cart/checkout
    GET /cart/order-confirmation?order-confirmed=true
    POST /gift-card

    然后,单击“确定”。“宏编辑器”(Macro Editor) 打开。

  9. 在请求列表中,选择 。点击“配置项目”。在打开的对话框中,单击“添加”以创建自定义参数。命名参数并突出显示响应底部的礼品卡代码。单击“确定”两次以返回宏编辑器。GET /cart/order-confirmation?order-confirmed=true`gift-card`
  10. 选择请求,然后再次单击“配置项目”。在“参数处理”部分,使用下拉菜单指定参数应派生自先前的响应(响应 4)。单击“确定”。POST /gift-card`gift-card`
  11. 在宏编辑器中,单击“测试宏”。查看对生成的礼品卡代码的响应并记下。查看请求。确保参数匹配,并确认它收到了响应。继续单击“确定”,直到返回 Burp 主窗口。GET /cart/order-confirmation?order-confirmation=true`POST /gift-cardgift-card302`
  12. 将请求发送到 Burp Intruder。使用“狙击手”攻击类型。GET /my-account
  13. 在“有效负载”选项卡上,选择有效负载类型“空有效负载”。在“有效负载设置”下,选择生成有效负载。412
  14. 转到“资源池”选项卡,将攻击添加到资源池中,并将“最大并发请求数”设置为 。开始攻击。1
  15. 攻击结束后,您将有足够的商店信用来购买夹克并解决实验室问题。

通过加密预言机绕过身份验证

lab

实验室:通过加密预言机绕过身份验证 |网络安全学院 (portswigger.net)

solve

  1. 在启用“保持登录状态”选项的情况下登录并发表评论。使用 Burp 的手动测试工具研究相应的请求和响应。请注意 cookie 是否已加密。stay-logged-in
  2. 请注意,当您尝试使用无效的电子邮件地址提交评论时,响应会在将您重定向到博客文章之前设置一个加密的 cookie。notification
  3. 请注意,错误消息以明文形式反映了参数的输入:email

    Invalid email address: your-invalid-email

    推断这必须从 cookie 中解密。将后续请求(包含通知 cookie)发送到 Burp Repeater。notification`POST /post/comment`GET /post?postId=x

  4. 在 Repeater 中,您可以观察到您可以使用请求的参数对任意数据进行加密,并在标头中反映相应的密文。同样,您可以在请求中使用 cookie 来解密任意密文并在错误消息中反映输出。为简单起见,双击每个请求的选项卡,然后分别重命名选项卡和。email`POSTSet-CookienotificationGETencrypt`decrypt
  5. 在解密请求中,复制您的 cookie 并将其粘贴到 cookie 中。发送请求。响应现在包含解密的 cookie,而不是错误消息,例如:stay-logged-in`notification`stay-logged-in

    wiener:1598530205184

    这表明 cookie 的格式应为 。将时间戳复制到剪贴板。username:timestamp

  6. 转到加密请求并将 email 参数更改为 。发送请求,然后从响应中复制新的 Cookie。administrator:your-timestamp`notification`
  7. 解密这个新 cookie,并观察 23 个字符的 “” 前缀会自动添加到您使用该参数传入的任何值中。将 cookie 发送到 Burp Decoder。Invalid email address: `email`notification
  8. 在解码器中,URL 解码和 Base64 解码 cookie。
  9. 在 Burp Repeater 中,切换到消息编辑器的“十六进制”选项卡。选择前 23 个字节,然后右键单击并选择“删除所选字节”。
  10. 重新编码数据并将结果复制到解密请求的 cookie 中。发送请求时,请注意,错误消息指示使用了基于块的加密算法,并且输入长度必须是 16 的倍数。您需要在“”前缀中填充足够的字节,以便要删除的字节数是 16 的倍数。notification`Invalid email address:`
  11. 在 Burp Repeater 中,返回加密请求,并在预期 cookie 值的开头添加 9 个字符,例如:

    xxxxxxxxxadministrator:your-timestamp

    加密此输入并使用解密请求来测试它是否可以成功解密。

  12. 将新的密文发送到解码器,然后 URL 和 Base64 对其进行解码。这一次,从数据的开头删除 32 个字节。重新编码数据并将其粘贴到解密请求中的参数中。检查响应以确认您的输入已成功解密,并且至关重要的是,不再包含“”前缀。您应该只看到 .notification`Invalid email address: `administrator:your-timestamp
  13. 从代理历史记录中,将请求发送到 Burp Repeater。完全删除 cookie,并将 cookie 替换为您自制 cookie 的密文。发送请求。请注意,您现在以管理员身份登录并有权访问管理面板。GET /`session`stay-logged-in
  14. 使用 Burp Repeater,浏览并注意删除用户的选项。浏览到解决实验室问题。/admin`/admin/delete?username=carlos`

本文作者: yinshi

原文链接: 业务逻辑漏洞

版权声明: 本站所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!

免责声明: 文中如涉及第三方资源,均来自互联网,仅供学习研究,禁止商业使用,如有侵权,联系我们24小时内删除!

评论0

😊 😃 😄 😁 😆 😅 😂 🤣 🙂 🙃 😉 😇 😏 😌 😍 😘 😗 😙 😚 😋 😛 😜 😝 😒 😔 😖 😞 😟 😠 😡 😳 😨 😰 😥 😢 😭 😱 😲 😵 😷 🤒 🤕 🤢 😴 🤤 😪 😫 😬 😮 🤲 🤜 🤛 🤚 🤝 🙏 🤞 🤟 🤘 🤙 👌 👍 👎 👊 👏 🙌 👐 💪

暂时没有评论

已经这么晚了呀,早点休息吧,晚安~