Quantcast
Channel: CodeSection,代码区,网络安全 - CodeSec
Viewing all articles
Browse latest Browse all 12749

【技术分享】看我如何利用过期链接进行链接劫持

0
0
【技术分享】看我如何利用过期链接进行链接劫持

2017-10-30 14:50:57

阅读:1375次
点赞(0)
收藏
来源: edoverflow.com





【技术分享】看我如何利用过期链接进行链接劫持

作者:興趣使然的小胃





【技术分享】看我如何利用过期链接进行链接劫持

译者:興趣使然的小胃

预估稿费:100RMB

投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿


一、前言

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


【技术分享】看我如何利用过期链接进行链接劫持

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


二、存储型过期链接劫持

2.1 账户伪造

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

2.2 外部JS文件劫持

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

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

<!DOCTYPEhtml> <html> <head> <metacharset="utf-8"> <metaname="viewport"content="width=device-width"> <title>BrokenLinkHijacking</title> </head> <body> <scriptsrc="//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上。

<!--http://example.edu/?version=1.0.0--> <!DOCTYPEhtml> <html> <head> <metacharset="utf-8"> <metaname="viewport"content="width=device-width"> <title>BrokenLinkHijacking</title> </head> <body> <scriptsrc="//cdn.example/1.0.0/script.js"></script> </body> </html>

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

<!--http://example.edu/?link=maliciouspath--> <!DOCTYPEhtml> <html> <head> <metacharset="utf-8"> <metaname="viewport"content="width=device-width"> <title>BrokenLinkHijacking</title> </head> <body> <scriptsrc="//cdn.example/maliciouspath/script.js"></script> </body> </html>

四、相关工具

4.1 broken-link-checker

broken-link-checker可以爬取目标,寻找过期链接。普通情况下,可以使用如下命令来运行这个工具:

$blc-rof--filter-level3https://example.com/

如果出现误报,你可以添加额外参数,修正误报情况:

$blc-rfoi--excludelinkedin.com--excludeyoutube.com--filter-level3https://example.com/

4.2 twitterBFTD

misterch0c公布了一个小脚本,可以在推特中查找过期域名。


五、参考链接

https://github.com/cure53/HTTPLeaks



【技术分享】看我如何利用过期链接进行链接劫持
【技术分享】看我如何利用过期链接进行链接劫持
本文由 安全客 翻译,转载请注明“转自安全客”,并附上链接。
原文链接:https://edoverflow.com/2017/broken-link-hijacking/

Viewing all articles
Browse latest Browse all 12749