利用Cookie劫持+HTML注入进行钓鱼攻击
大家好,在这篇文章中,我将展示如何挖出一个html注入漏洞,以及将其配合cookie劫持漏洞最终形成一个钓鱼手段。
HTML注入和cookie劫持:
HTML注入漏洞一般是由于在用户能够控制的输入点上,由于缺乏安全过滤,导致攻击者能将任意HTML代码注入网页。此类漏洞可能会引起许多后续攻击,例如当用户的会话cookie被泄露时,攻击者可以利用这些cookie非法修改其他用户的个人页面。
会话劫持攻击一般涉及Web会话控制原理,其中最主要的是会话令牌管理。
发现漏洞
在某次测试中,我正对某个客户信息页面上的每个输入点进行手动测试。一段时间后,我注意到某些输入没有按预期的进行显示,貌似这里存在缺陷,那么要如何利用这种类型的漏洞呢,难道是登入后才能“激活”这些HTML代码吗?
第一次尝试:尝试利用CSRF漏洞登入,攻击者向受害者发送恶意代码,一旦受害者打开,就会自动登入到攻击者自己的帐户。代码如下:
<html>
<! - CSRF Login PoC ->
<body>
<sc ript> history.pushState ('', '', '/') </ sc ript>
<form action = "https://private-company.com/account/signin" method = "POST">
<input type = "hidden" name = "customerlogin" value = "attacker-email@gmail.com" />
<input type = "hidden" name = "customerpassword" value = "attacker-password" />
<input type = "submit" value = "Submit request" />
</ form>
</ body>
</ html>
很可惜的是,上面的利用代码没能成功,因为后端处理客户登录时涉及到了令牌。
第二次尝试:
Cookie劫持,攻击成功!因为管理用户会话的令牌在用户注销后并没有过期。cookies能在浏览器中继续生效,直到被手动清除。过程如下:
1.我先用一个测试帐户登录,然后点击“注销”。请注意,在这一系列操作后,本该注销的cookies仍在浏览器中:
2.再次注意,这个客户端会话的cookie的过期时间为一年。
3.我用工具复制了所有cookie,然后添加到另一个浏览器,接着再用浏览器访问用户界面,bingo!我成功进入了测试用户的主页面。
很好!是时候和HTML注入结合到一起来制造更大的威胁了。
如前所述,参数“customer_name”存在HTML注入漏洞。为了再次确认,我使用burpsuite截获了一个正常的提交用户信息请求,然后在customer_name插入了H1标签:
接着,我向自己的帐户发送了一封密码找回邮件:
漏洞确认成功!
实际利用
由于name参数存在HTML注入,因此我们可以编写一个假冒页面的HTML代码,最好看起来是需要用户提交的表单。
然后我们利用cookie劫持漏洞,它能让我们利用在浏览器中的cookie去登录受害者帐户。如果受害者是在公共环境中某个局域网中登录的,那么可按照以下步骤利用漏洞攻击。
当受害者使用公共电脑登录到他的账户。并在操作完成后,通过注销功能离开网站。
攻击者在受害者使用过的计算机上捕获cookie并登录受害者的帐户。
攻击者把自定义的恶意HTML代码注入存在漏洞的字段。
当受害者在重新登录帐户时,就会看到攻击者自定义的“新页面”。
当然,这一攻击需要和受害者进行互动,例如,使用某些著名的网络钓鱼攻击效果会更好。
本文由白帽汇整理并翻译,不代表白帽汇任何观点和立场
来源:https://medium.com/bugbountywriteup/when-cookie-hijacking-html-injection-become-dangerous-3c649f7f6c88
最新评论