某不知名博客 某不知名博客
首页
  • 《vulcat文档》
  • Web安全

    • 《BurpSuite及官方实验室》
    • 《OSWE学习历程》
  • 云原生安全

    • 《Docker命令大全》
    • 《CKS考试学习指南》
    • 《旧-Kubernetes教程》
漏洞库
  • 《渗透工具大全》
  • 《云安全》
事件库
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Carsaid

安全界的小学生
首页
  • 《vulcat文档》
  • Web安全

    • 《BurpSuite及官方实验室》
    • 《OSWE学习历程》
  • 云原生安全

    • 《Docker命令大全》
    • 《CKS考试学习指南》
    • 《旧-Kubernetes教程》
漏洞库
  • 《渗透工具大全》
  • 《云安全》
事件库
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 前言

  • 服务器端主题(翻译)

  • 客户端主题(翻译)

  • 高级主题(翻译)

  • 扩展阅读(翻译)

  • 个人学习笔记

  • 实验室做题记录

    • 实验室做题记录
    • 服务器端

      • SQL注入

      • 身份验证

      • 目录遍历

      • OS命令注入

      • 业务逻辑漏洞

        • 学徒-客户端控件-过度信任
        • 学徒-非常规输入-高级逻辑漏洞
        • 从业者-非常规输入-低级逻辑缺陷
        • 从业者-非常规输入-异常处理不一致
          • 题目
          • 实操
            • 注册测试1
            • 信息1
            • 信息2
            • 信息3(关键)
            • 信息4
            • 注册测试2 - 成功
          • 修复建议
        • 学徒-有缺陷的假设-安全控制不一致
        • 从业者-有缺陷的假设-复用端点的弱隔离
        • 从业者-有缺陷的假设-工作流验证不充分
        • 从业者-有缺陷的假设-有缺陷的状态机制
        • 学徒-特定领域的缺陷-业务规则的执行缺陷
        • 从业者-特定领域的缺陷-无限金钱
        • 从业者-加密预言机-通过预言机绕过身份验证
      • 信息泄露

      • 访问控制

      • 文件上传漏洞

      • SSRF漏洞

      • XXE注入漏洞

    • 客户端

    • 高级主题

  • BurpSuite及官方实验室
  • 实验室做题记录
  • 服务器端
  • 业务逻辑漏洞
clincat
2023-06-26
目录

从业者-非常规输入-异常处理不一致

# 实验室:异常输入的处理不一致

# 题目

此实验室未充分验证用户输入。你可以利用其 帐户注册过程中的逻辑缺陷 来访问管理功能。要解决实验室问题,请访问管理面板并删除carlos用户。

提示

你可以使用实验室横幅中的链接 访问邮件服务器的电子邮件客户端。客户端将显示发送到@YOUR-EMAIL-ID.web-security-academy.net中的所有消息和任意子域。你的唯一电子邮件 ID 将显示在电子邮件客户端中。

实验室-从业者

异常输入的处理不一致 >>

- name: 实验室-从业者
  desc: 异常输入的处理不一致 >>
  avatar: https://fastly.statically.io/gh/clincat/blog-imgs@main/vuepress/static/imgs/docs/burpsuite-learn/public/lab-logo.png
  link: https://portswigger.net/web-security/logic-flaws/examples/lab-logic-flaws-inconsistent-handling-of-exceptional-input
  bgColor: '#001350'
  textColor: '#4cc1ff'
1
2
3
4
5
6

# 实操

根据题意,可得实验目标:

  • 该实验室的 账户注册过程 中存在逻辑缺陷,能够访问站点管理功能。
  • 利用逻辑缺陷,访问站点的用户管理面板,然后删除 carlos 用户。

点击 “Access the lab” 进入实验室。

Not Found Image

点击 “Register” 转到注册页面。

Not Found Image

注册需要输入邮箱,点击上方的 “Email client” 进入邮箱客户端。

Not Found Image

记录我们的邮箱attacker@x.exploit-0aba001604d7e0d780a8a28f01a7003c.exploit-server.net。

Not Found Image

# 注册测试1

尝试注册 carlos 账户,程序提示该账户已存在,无法注册。

Not Found Image

注册 test 用户,启用浏览器代理,点击 “Register” 提交注册表单。

Not Found Image

服务端接收注册表单之后,会往邮箱中发送注册链接。

Not Found Image

在邮箱客户端中找到邮件,点击注册链接。

Not Found Image

点击之后,提示注册成功。

Not Found Image

随后使用账号密码进行登录,一切正常。

Not Found Image

# 信息1

注册过程中,产生了两个请求数据包。

第一个数据包,提交注册表单时发出,由于携带 token 所以该数据包无法复用。

Not Found Image

第二个数据包,在邮箱中点击注册链接时发出,也携带了 token 所以无法复用数据包。

Not Found Image

# 信息2

邮箱不能重复注册账户。

Not Found Image

# 信息3(关键)

在注册页面,有这样一条信息:

邮箱@dontwannacry.com代表内部员工。

Not Found Image

# 信息4

网站的/admin路径存在管理界面。

Not Found Image

综合以上信息,我们拥有的邮箱为@exploit-server.net,但只有邮箱为@dontwannacry.com的账户才能访问管理界面。

所以现在要做的是:用邮箱 @exploit-server.net 接收注册链接,但最终的账户邮箱必须为 @dontwannacry.com 。

我一直绕啊绕,绕不出来,不争气的看了答案,知识点+1 。

# 注册测试2 - 成功

用一个很长很长的邮箱进行注册。

attacker@123456789012345678901234567890123456789012345678901234567890.abcdefgabcdefgabcdefgabcdefgabcdefgabcdefg.xyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyz.exploit-0af20094043dc0f1801dcff2014a0089.exploit-server.net
1
Not Found Image

点击注册链接。

Not Found Image

注册成功之后,登录账户。

咋一看,好像没啥毛病,一切正常。

Not Found Image

用一个更长的邮箱进行注册,然后登录账户。

attacker@123456789012345678901234567890123456789012345678901234567890.abcdefgabcdefgabcdefgabcdefgabcdefgabcdefg.xyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyz.jkljkljkljkljkljkljkljkljkljkljkljkljkljkljkljkl.exploit-0af20094043dc0f1801dcff2014a0089.exploit-server.net
1

登录之后你会发现,展示的邮箱后面貌似少了一截?!

这是为什么?(又到了 C语言 时刻)

Not Found Image

经过测试,异常邮箱的长度为 255 个字符,难道是存储上限?

Not Found Image

在 C语言 的数据类型中,char 类型的存储长度一般为 1 字节,长度为0~255。

如果你用的是 Windows 系统,则可以用快捷键 Win + R 并输入 calc ,打开计算器。

Not Found Image

功能选择 “程序员” 。

Not Found Image

1 个字节就是 8 个比特位,点击二进制 “BIN” 一栏,然后输入 8 个数字 1 ,在十进制 “DEC” 的地方可以看到数字 255 。

Not Found Image

这里只是拿 char 类型举个例子,目标程序用的不一定是 char 类型。也可能是用了其他的字符串类型,但是将长度设置为了 255 导致后续内容丢失。

既然超过 255 字符的部分会被截断,那就好办了。

构建一个长度为 356 个字符的邮箱:

attacker@123456789012345678901234567890123456789012345678901234567890.abcdefgabcdefgabcdefgabcdefgabcdefgabcdefg.xyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyz.jkljkljkljkljkljkljkljkljkljkljkljkljkljkljkljkl.qweqweqweqwe.dontwannacry.com.exploit-0af20094043dc0f1801dcff2014a0089.exploit-0af20094043dc0f1801dcff2014a0089.exploit-server.net
1
Not Found Image

假设该邮箱被截断,则我们的邮箱 .XXX.exploit-server.net 会被去除,剩下的 255 个字符刚好包含 @XXX.dontwannacry.com 的内部员工邮箱。

Not Found Image

使用上述邮箱提交注册表单,在我们的邮箱中 点击注册链接。

Not Found Image

注册成功之后,登录账户。

我们的邮箱字符真被截断了,剩下了内部员工的邮箱。

Not Found Image

再次访问管理界面,访问成功。点击 carlos 账户的删除按钮。

Not Found Image

删除成功,实验完成。

Not Found Image

# 修复建议

身份验证绕过漏洞1 - 邮箱截断

  • 在服务端限制邮箱的长度,超过长度的时候请用户重新输入(正常人谁用那么长的邮箱)。

A:马冬梅啊!

B:马...?

编辑 (opens new window)
从业者-非常规输入-低级逻辑缺陷
学徒-有缺陷的假设-安全控制不一致

← 从业者-非常规输入-低级逻辑缺陷 学徒-有缺陷的假设-安全控制不一致→

最近更新
01
API测试笔记
04-30
02
msfvenom
03-29
03
Metasploit
03-29
更多文章>
Theme by Vdoing | Copyright © 2023-2024 Carsaid | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式