freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

history钓鱼攻击
2022-05-05 18:25:49
所属地 四川省

前言

这里来分析一下js中history对象的回退功能导致的可能的钓鱼活动。

history

参考:JavaScript Window History | 菜鸟教程 (runoob.com)

为了安全,目前history仅有三个方法。history对象是标签页独立的。

history.back() - 与在浏览器点击后退按钮相同 
history.forward() - 与在浏览器中点击向前按钮相同 
history.go(1);//参数为1表示前进1,为0表示刷新页面,为-1表示后退1

漏洞介绍

某些站点,在访问404URL时,响应中会包含一个返回上一页的超链接,其通过js代码:history.back()或history.go(-1)实现。

当攻击者构建一个钓鱼网站,在用户访问钓鱼网站时,先重定向到目标网站的404URL,受害者通过地址栏以及页面内的其他信息(比如登录状态、个人信息等)确信现在是正确的地址,然后点击404URL中的返回上一页,跳转到钓鱼网站,也进行信任。

网站开发者和用户都认为其是在站内的回到前一页或者上一级,而攻击者利用该机制实现重定向到钓鱼站点,造成危害。

1651743470_62739aeecd9f0f3406c28.png!small?1651743470500

漏洞危害

通过站内链接重定向到钓鱼网站,导致信任钓鱼网站,攻击者可以进行伪造登录界面或者问卷调查等。

漏洞挖掘和利用

1、挖掘404页面

同一域名下404URL响应可能表现不同,一般选择至少两个路径进行测试,一个静态文件,一个动态接口。篡改之后访问,看响应中是否包含“返回”的超链接。

如果包含,查看其代码是否是history.back()或history.go(-1)

并不完全是404时才出现回退,比如参数不正确,或者干脆作为常用功能,某些网站可能滥用history回退机制。

2、进一步确认

由步骤1完成了挖掘,基本就可以了,步骤2主要是感受其后退功能。

点击返回上一页,看页面是否后退。

将404URL直接粘贴到新的标签页,访问之后点击返回上一页,看页面是否后退以超出目标站点范围。

3、利用说明

要完成漏洞的利用,根据漏洞介绍,要求第一次访问钓鱼网站时直接跳转到目标网站404URL,而回退时第二次访问钓鱼网站,不能再直接跳转到目标网站404URL。

因此,选择cookie来存储状态,第一次访问钓鱼网站时,判断读取的cookie是否为“flag=5“,很显然并不是,然后js写下cookie“flag=5“,跳转。第二次第一次访问钓鱼网站时,判断读取的cookie是否为“flag=5“,由前一次访问可以确定结果为是,因此不跳转。

钓鱼站点html:

<!DOCTYPE html>
<html>
<head>
</head>
<body>
<script src="jquery-3.6.0.min.js"> </script>
<h1>钓鱼</h1>
<script>
$(document).ready(function(){
str = document.cookie
if(str!="flag=5"){
document.cookie="flag=5";
location.href="http://www.cc.com/abx";//404URL
}
});
</script>
</html>

HBuilder运行,初次请求该html时,写下cookie并跳转404URL,回退时由于有了cookie不再跳转,停留在钓鱼网站。

拓展

1、与xss比较

xss的利用之一,是篡改页面中的超链接的地址,使其跳转到钓鱼网站。

比如访问下述url,服务端或者响应后页面的js将r参数的值赋值给某超链接a。

http://www.cc.com/a?r=http://www.cc.com/b

因此,构造payload URL:(这里不讨论javascript伪协议,或者认为过滤限制了javascript)

http://www.cc.com/a?r=http://www.cc.org/b

点击之后,跳转到钓鱼网站www.cc.org。

在该过程中,用户信任的是点击访问之前,作为域名的www.cc.com,因此导致信任了访问之后站内的链接http://www.cc.org/b。

而history钓鱼攻击,利用的是点击钓鱼URL之后,地址栏显示的404URL是目标站点的URL,与上述xss钓鱼相比,一个优势是地址栏是干净的,另一个优势是不会受到服务器或者前端额外的过滤干扰,也几乎没有攻击痕迹。

2、起始URL

当然可以直接使用http://www.cc.org/b作为跳转起点进行钓鱼。但是将其隐藏,使用其他url会有更好的效果,受害者会更加相信这是目标网站回退指定的URL,而非直接的回到前一页。

比如使用baidu.com,如果baidu.com的搜索引擎存在对www.cc.org的链接,则在点击baidu.com的链接后跳转到www.cc.org的链接,再跳转到目标站点www.cc.com的链接。回退时,跳转到钓鱼站点www.cc.org的链接

3、自动回退

某些站点,当页面404,时,响应页面中包含定时回退的代码。比如5秒后回退到上一页面

好处是自动回退,显得更专业,更方便钓鱼

坏处是该漏洞的核心是由用户确认404URL仍然属于目标网站而信任,而定时后退可能导致无法确认(当然,多看两遍可以确认)

4、404URL的页面

钓鱼是个精细活,越真实越具有成功的可能性。攻击者无法控制404URL的页面的显示,但是其很大程度影响着钓鱼的成功性。

如果响应页面仅仅只有一个超链接,其可信度偏低。

如果响应页面具有与目标站点相同的风格,丰富的页面布局,甚至还有受害者用户的登录信息等,则可信度大大提高。

回退超链接内的提示文本也是一个重要因素。

如果是“后退”,其可能使用户猜到该链接的真实功能仅仅是回退,不保证在站内。而如果是“回到上一页”,“回到上一级”等具有诱导性的词汇,则提高点击之后仍在站内的可信度。

防范

1、不使用history,可以使用cookie存储上一页面的路径,并做检查是否在站内

2、如果要使用,直接回退,而不是定时回退或者让用户自行点击回退





# web安全 # 钓鱼 # 漏洞分析 # JS # history
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录