目录
一.实验环境
二.特殊输入处理不一致
编辑漏洞分析
注册用户
漏洞利用
三.小结
一.实验环境
实验室:特殊输入处理不一致 |网络安全学院
https://portswigger.net/web-security/logic-flaws/examples/lab-logic-flaws-inconsistent-handling-of-exceptional-input
二.特殊输入处理不一致
漏洞分析
这个实验是利用账户注册过程中的逻辑漏洞获取管理权限,我们先来尝试注册,并打开burpsuite观察http历史记录。
在这里注册时上面给了提示,意思是让我们用它的邮箱地址,但是这个 dontwannacry不知道是什么,我们尝试能不能直接进入admin,在url地址后面加上/admin,观察
可以知道它的意思是就是让我们以它提供的dontwannacry.com地址来尝试登录管理员账号,我们注册一个自己的账号,上面还有一个email client可以想到后面可能还要进行验证,我们就直接使用它提供的email来注册。
注册用户
需要我们点击验证。
提示我们注册成功,观察自己的账号,这里看到账号,再根据上面注册时的提示,思路已经很明确了,构造一个email,使我们既能收到验证,又是以dontwannacry.com来登录。
漏洞利用
这里我们构造一个email,attacker@dontwannacry.com.exploit-0ab80089035e2627803416fc01f400d2.exploit-server.net尝试注册。
同样收到了验证。
验证成功后观察账号。
我们的目的是仅仅只要dontwannacry.com,该怎么保证既能收取验证码又只显示管理员地址,这里有个方法,我们可以利用这里的前端展示来绕过后端业务逻辑,举个例子,可以构造一个很长的邮箱AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA@dontwannacry.com.exploit-0ab80089035e2627803416fc01f400d2.exploit-server.net,但是由于前端可能只展示255个字符(具体展示多少个要进行测试),最后这里的my-account页面可能就只展示了AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA@dontwannacry.com从而绕过。
进行测试。将register的请求发送到intruder里。
在email前面添加payload,并将类型设置为字符块,最小长度为100最大为1000间隔100,开始攻击。
看看email client的验证。它实际上发了10个,我们就使用这个长的来注册观察。
观察登录之后果然出现了这个问题。只显示了前255个。
那么我们只需要在注册里把前面的字符串加上@dontwannacry凑成255个字符即可,最后注册验证即可进入管理员页面。
通过admin panel删除carlos。
三.小结
该实验室的漏洞源于应用程序在账号注册流程中,对用户输入的异常数据(如超长字符串)处理不一致。攻击者可以构造一个超长的电子邮件地址,使得前端展示与后端业务逻辑对同一输入产生不同的解析结果。具体而言,当注册邮箱为<超长字符串>@dontwannacry.com.exploit-<实验室域名>.web-security-academy.net时,用于发送确认邮件的邮件系统可能会截断该字符串,将邮件发送至攻击者可控制的地址;而业务系统却仍将其识别为来自dontwannacry.com的合法用户,从而授予攻击者本不具备的管理员权限。为防范此类风险,首先需在服务端对所有用户输入实施严格且一致的校验,不能仅依赖前端验证;其次,应对关键字段(如邮箱)设置合理的长度限制,并确保整个系统中对该字段的处理方式(如截断规则)保持完全一致,避免因不同组件的解析差异而产生安全缝隙;此外,权限控制应基于服务端最终认定的用户身份,而非客户端提交的原始数据;最后,应记录并监控异常的注册行为(如超长邮箱),以便及时发现并阻断此类绕过尝试。