专栏名称: HULK一线技术杂谈
HULK是360的私有云平台,丰富的一线实战经验,为你带来最有料的技术分享
目录
相关文章推荐
摩尔投研精选  ·  重磅升级!“AI小财神”推理能力全面升级, ... ·  10 小时前  
锦缎  ·  中慧元通生物冲刺IPO背后的辛酸 ·  20 小时前  
图解金融  ·  造芯片,很难吗? ·  2 天前  
成方三十二  ·  申请人数突破2000万! ·  3 天前  
51好读  ›  专栏  ›  HULK一线技术杂谈

如何利用过期链接进行链接劫持

HULK一线技术杂谈  · 公众号  ·  · 2017-11-02 18:57

正文


女主宣言

最近小编看到了一篇很有意思的文章,文中介绍了怎样利用过期链接进行链接劫持,今天就将这篇文章分享给大家。 本文经安全客授权发布,转载请联系安全客平台。

PS:丰富的一线技术、多元化的表现形式,尽在“ HULK一线技术杂谈 ”,点关注哦!


一、前言


当某个链接指向已过期的域名或页面时,就存在过期链接劫持(Broken Link Hijacking,BLH)问题。过期链接劫持有两种类型,分别为反射型(reflected)以及存储型(stored)。这种问题在野外已经被多次利用,但奇怪的是,漏洞奖励项目中,很少有研究人员会积极主动寻找这类过期链接。

当目标链接指向已过期端点时,可能会出现各种问题,本文对这类情况作了大致介绍,希望读者能对此形成基本理解。


二、存储型过期链接劫持


2.1 账户伪造

当某个公司删除社交媒体账户时,他们可能会忘记在公司网站上移除相应链接。攻击者可以使用该用户名在社交媒体平台上创建相同账户,假冒这个公司。

2.2 外部JS文件劫持

如果某个目标包含外部JS文件,并且对应的域名或页面已经过期,那么攻击者就可以接管该域名或页面的控制权,最终达到存储型XSS攻击效果。

举个例子,example.edu使用了托管在example.com上的一个外部JS文件,并且example.com已过期。

1
2
3
4
5
6
7
8
9
10
11
html>
< html >
< head >
< meta charset = "utf-8" >
< meta name = "viewport" content = "width=device-width" >
< title >Broken Link Hijacking title >
head >
< body >
< script src = "//example.com/script.js" > script >
body >
html >

现在,攻击者可以接管example.com,控制example.edu上的JS文件。

2.3 信息泄露

某些链接没有设置rel="noopener noreferrer"属性,劫持这类过期链接可能会将信息泄露给攻击者控制的页面。

有些时候,即使数据分析页面已过期,某些公司依然会链接到这些页面上。如果攻击者成功劫持这类过期页面,他们可以监控目标流量,有可能会收集到目标用户的有价值信息。现实生活中已有类似案例,有人曾经在Gratipay程序中发现过这种情况。

2.4 内容劫持

通过接管已过期的域名或页面,攻击者可以劫持某个页面的内容。@MisterCh0c的博客中介绍过这样一个经典案例,读者可以阅读他写的这篇文章:“如何劫持顶尖名人的推特(包括凯蒂·佩里、夏奇拉等)”。


三、反射型过期链接劫持


当你发现目标存在反射型XSS漏洞,却发现无法跳出href或者src属性的限制时,这种感觉肯定非常难受。

如果某个链接由CDN或者文件托管服务所提供,那么攻击者可以构造恶意链接,在这类服务上托管目标文件。实话实说,这种情况非常罕见,但我们还是应该记住这一点,以便将来碰到时能做到有备无患。

3.1 演示场景

举个例子,http://example.edu/?version=1.0.0代码中引用了某个版本的JS文件,这个文件托管于cdn.example上。

1
2
3
4
5
6
7
8
9
10
11
12
html>
< html >
< head >
< meta charset = "utf-8" >
< meta name = "viewport" content = "width=device-width" >
< title >Broken Link Hijacking title >
head >
< body >
< script src = "//cdn.example/1.0.0/script.js" > script >
body >
html >

而cdn.example允许我们添加自定义项目,托管恶意JS文件。

1
2
3
4
5
6
7
8
9
10
11
12
html>
< html >
< head >
< meta charset = "utf-8" >






请到「今天看啥」查看全文