欢迎光临
我们一直在努力

【Web安全】Portswigger 业务逻辑漏洞 Lab: Bypassing access controls using email address parsing discrepancies

目录

一.实验环境

二.利用电子邮件地址解析差异绕过访问控制

必备知识

注册账户观察

漏洞利用

三.小结


一.实验环境

实验室:利用电子邮件地址解析差异绕过访问控制 |网络安全学院

https://portswigger.net/web-security/logic-flaws/examples/lab-logic-flaws-bypassing-access-controls-using-email-address-parsing-discrepancies

二.利用电子邮件地址解析差异绕过访问控制

必备知识

这道题在开始之前就给了你提示,要解决这道题你必须要理解白皮书里描述的利用解析器绕过访问技术。这个技术主要就是讲编码字,通过编码字来绕过解析器解析,因为有老的编码字比如utf-7可能会绕过直接解析。

正常来说一个编码字的格式是=?字符?编码?编码后的内容?=,比如一个=?iso-8859-1?q?=61=62=63?=foo@ginandjuice.shop中iso-8859-1,或者常见的一个utf-8和它是一样的。q就是Q-encoding,所以要解决实验必须要理解这个编码字。

注册账户观察

在注册账户页面直接告诉你,你需要用ginandjuice来进行注册,我们来尝试一下。

但是在你注册之后需要check你的email,而email只接受email client里限定的,所以这里就有了思路,就是前面加上你的email address后面加上@ginandjuice.shop即可。

漏洞利用

我们首先尝试使用@ginandjuice.shop.exploit-0a6e00000301f37980e5521b016300d6.exploit-server.net来尝试注册,发现只能有ginandjuice shop。

这里换别的思路,使用@ginandjuice shop@exploit-0a6e00000301f37980e5521b016300d6.exploit-server.net,发现不能有两个@。

那么我们此时就可以使用编码子进行绕过。这里先尝试用utf-8,构造一个=?utf-8?b?(utf-8)shyrain@exploit-0a6e00000301f37980e5521b016300d6.exploit-server.net?=为=?utf-8?b?c2h5cmFpbkBleHBsb2l0LTBhNmUwMDAwMDMwMWYzNzk4MGU1NTIxYjAxNjMwMGQ2LmV4cGxvaXQtc2VydmVyLm5ldA==?=后面加上@ginandjuice.shop。

提示了invalid email。这里我们就再尝试一下utf-7编码字。将上面内容使用utf-7和q进行编码。

=?utf-7?q?shyrain&AEA-exploit-0a6e00000301f37980e5521b016300d6.exploit-server.net&ACA-?=@ginandjuice.shop

发现这个成功注册。我们去email client 看看有没有。

发现存在。我们直接点击。

尝试登录注册的账号。

直接进入了管理员界面,删除carlos即可。

三.小结

该实验室的漏洞源于应用程序在邮箱地址的验证逻辑与底层解析库之间存在解析差异(Parser Discrepancy)。应用程序试图通过检查邮箱域名来防止来自未授权域名的注册,但未能识别某些符合RFC标准的编码格式。攻击者可以利用这一差异,构造一个特殊的邮箱地址,使其在通过域名检查的同时,将确认邮件发送到攻击者可控的服务器。其攻击流程如下:首先,应用程序要求注册邮箱的域名必须为ginandjuice.shop;攻击者随后使用UTF-7编码构造了一个邮箱地址,该地址的末尾是@ginandjuice.shop以满足验证,但实际解码后的邮箱地址却是attacker@[YOUR-EXPLOIT-SERVER-ID];由于验证逻辑未能识别UTF-7编码,该地址通过了检查,而邮件服务器在解析时却将其解释为攻击者可控的地址并发送了确认邮件;攻击者点击收到的确认链接激活账户后,即可获得管理员权限并删除目标用户carlos。本质上,这是应用程序的不同组件(验证逻辑与邮件发送器)对同一邮箱地址的解析结果不一致所导致的访问控制绕过漏洞。

为有效防范此类风险,首先应在服务端实施严格且一致的输入校验,在将邮箱地址用于安全决策(如权限判定)前,必须使用与邮件发送组件完全相同的解析库对其进行规范化处理,确保不同组件对同一地址的理解一致;其次,安全决策应基于规范化后的结果,而非用户输入的原始字符串,同时避免仅依赖邮箱域名作为唯一的访问控制手段,应结合其他因素(如账户状态、角色等)进行综合判断;此外,应对邮箱地址等用户输入禁用或严格限制不必要的编码格式(如UTF-7),并对所有输入进行深度校验,拒绝包含特殊字符或编码的异常输入;最后,应遵循最小权限原则,默认情况下不授予任何特权,并对所有注册行为进行全面的日志记录与监控,当发现大量使用非常规编码格式的注册尝试时及时触发告警

赞(0)
未经允许不得转载:171主机测评 » 【Web安全】Portswigger 业务逻辑漏洞 Lab: Bypassing access controls using email address parsing discrepancies
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址