第十二关 通过电子邮件地址解析差异绕过访问控制
这一关利用电子邮件地址被解析的差异性从而绕过访问控制
提示:1、靶场验证电子邮件地址,以防止攻击者从未经授权的域注册地址
2、用于解析电子邮件地址的验证逻辑和库中存在解析器差异。
3、请利用此缺陷注册帐户并删除 carlos
具体操作:
1、这里已经提提示了:如果你在GinAndJuice工作,请使用你的@ginandjuice.shop电子邮件地址
在这里我随便填写邮件地址进行注册,看有没有什么反馈

提交注册后,弹出提示:仅允许带有ginandjuice.shop域的电子邮件
意思就是说:只有授权的域(ginandjuice.shop)才可以进行账户的注册

2、提示中说:用于解析电子邮件地址的验证逻辑和库中存在解析器差异
一般就会联想到:去调查编码差异这个方向
使用电子邮件:
abcfoo@ginandjuice.shop
其中 abc 部分使用 靶场给的Q编码技术,这是“编码字"标准的一部分
=?iso-8859-1?q?=61=62=63?=foo@ginandjuice.shop
那现在就尝试使用以下电子邮件注册一个帐户:
=?iso-8859-1?q?=61=62=63?=foo@ginandjuice.shop

使用仅允许的域名再经过编码后变成的邮件地址进行注册
现在报错提示就不一样了:注册因安全原因被阻止

3、现在再去尝试使用UTF-8 编码的电子邮件注册帐户:
=?utf-8?q?=61=62=63?=foo@ginandjuice.shop
报错是一样的:

注册被阻止并显示相同的错误消息。这表明服务器正在检测并拒绝使用编码字编码操作注册电子邮件的尝试。
一般的话,服务器的验证可能无法选择不太常见的编码格式,也就是说服务器一般对常见的编码格式进行验证
那就尝试采用特殊的编码进行服务端的绕过:
比如:尝试使用以下 UTF-7 编码的电子邮件注册帐户:
=?utf-7?q?&AGEAYgBj-?=foo@ginandjuice.shop
成功生成注册的邮件链接

此尝试不会触发错误。这表明服务器无法将 UTF-7 编码识别为安全威胁。由于 UTF-7 编码似乎绕过了服务器的验证,所以可以使用它来制造攻击,诱骗服务器向我的漏洞利用服务器电子邮件地址发送确认电子邮件,同时看起来仍然满足 ginandjuice.shop 域要求
4、使用 UTF-7 利用漏洞
先去靶场给的攻击者的邮件客户端复制邮件地址:
attacker@exploit-0aed002f03bcb287807b2f660124001b.exploit-server.net
使用以下 UTF-7 编码的电子邮件注册一个帐户:
插入自己的邮件地址:
=?utf-7?q?attacker&AEA-exploit-0aed002f03bcb287807b2f660124001b.exploit-server.net&ACA-?=@ginandjuice.shop

生成邮件链接

点击链接完成注册

跳转到注册成功的页面
然后去我的账户进行登录刚刚注册的账户test7:test7
点击管理界面

删除carlos用户靶场过关
