供应链安全之Broken Link Hijacking (BLH)
有这样一个问题,如果构成网络的底层硬件或软件在源头上出现了漏洞或攻击该怎么办?这种日益普遍同时又不易发现的攻击形式被称为供应链攻击,通过这种方式攻击者可以利用供应商的缺陷来完成对下游链路的攻击,比如可以劫持其更新分发系统来传播木马;对于深度集成的下游软件甚至可以直接完成攻击,比如这次的Log4J漏洞。
我们知道链接是网络交互的基础,它们可以使访问者在页面之间来回跳转,可以将网络资源连接或引用来提供给用户使用。但是需要注意的是,链接往往不是永久性的,随着实践的推移,它们可能出现失效的情况,比如域名过期、短链接失效、服务器关闭、文章删除或是用户注销等等,而这些情况都会造成相关的链接失效。
那么当链接失效,安全人员就可以通过一些方法去拥有或接管当前的链接,从而完成Broken Link Hijacking,并在此之后进行各种恶意行为攻击。这种问题实际上在野已经被无数利用,而目前来看仍然有很多研究人员不了解或者企业对于此类问题不重视。本篇文章会简要分享下Broken Link Hijacking (BLH) 的形式以及危害。
什么是 Broken Link Hijacking
简单总结来说,每当目标链接失效时就会存在BLH的风险,攻击者可以利用网站上嵌入的过期或无效外部链接来进行劫持。如果的Web应用程序或网站使用从外部url加载的第三方服务或资源或重定向到这些服务并且它们碰巧不可用或无效(通常是由于被劫持的域过期而发生),那么攻击者就可以利用这些用于发起各种类型的网络攻击例如窃取数据,诱导用户或进行跨站脚本攻击(XSS)。
Broken Link Hijacking 形式
Broken Link Hijacking有两种形式,分别是存储型和反射型。
存储型BLH
账户接管
当公司删除某些账户时,他们可能会忘记删除之前写在网页上的链接(或者本身网页上链接中的用户名写错了),这时攻击者就可以去注册这个账户来接管或者说冒充这个用户从而完成一些恶意行为。
劫持LinkedIn账号
https://medium.com/@bathinivijaysimhareddy/how-i-takeover-the-companys-linkedin-page-790c9ed2b04d
接管GitHub账号来构造恶意仓库
https://hackerone.com/reports/1398572
https://hackerone.com/reports/1031321
接管流量分析
https://hackerone.com/reports/111078
外部JS文件劫持
如果目标有一个外部JS文件并且该域/页面已过期,那么攻击者就可以去接管并控制它,此时就能够造成存储型XSS。
域名过期
比如说example.edu有一个托管在example.com上的外部JS文件,而example.com已经过期。
1 2 3 4 5 6 7 8 9 10 11 12 |
<!DOCTYPE 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文件。
接管未注册的storage bucke从而托管恶意JS导致XSS
攻击者可以接管存储桶并在其上托管恶意JS文件,当JS文件加载到仪表板上时,它将运行恶意JS代码,这也可能导致XSS攻击。此外,当dashboard.js文件尝试调用存储桶来获取json数据时,攻击者将能够控制并返回恶意或误导性或误导性信息。
https://hackerone.com/reports/1398706
跳转劫持主页面
如果使用target=”_blank”
构建锚链接,当链接可控被打开时,新打开的选项卡可以访问window.opener
对象,该对象可用于控制主页。使用window.opener
对象,新打开的页面可以使用window.opener.location
操纵和更改位置或将页面重定向到恶意页面。 攻击者可以将主页重定向到类似的恶意克隆页面,然后用户可以毫无疑问地向该页面输入敏感数据。
1 2 |
window.opener.location = "http://fakewebsite.com" |
可以通过增加noopener noreferrer 来解决这类问题:
1 2 |
<a href="//example.com" target="_blank" rel="noopener noreferrer">Link</a> |
内容劫持
攻击者可以通过接管过期的域/页面来劫持页面的内容。
劫持推特内容
https://hackernoon.com/how-i-hijacked-top-celebrities-tweets-including-katy-perry-shakira-fca3a0e751c6
反射型BLH
指无法控制href
或src
属性时,可能出现的利用情况。比如链接是CDN或文件托管服务。
案例场景
http://example.edu/?version=1.0.0
返回托管在cdn.example上JS文件的特定版本(1.0.0)。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<!-- http://example.edu/?version=1.0.0 --> <!DOCTYPE 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 13 |
<!-- http://example.edu/?link=maliciouspath --> <!DOCTYPE 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/maliciouspath/script.js"></script> </body> </html> |
这时通过link参数为maliciouspath即可控制加载JS内容。
自动化检查Broken Link Hijacking
https://github.com/stevenvachon/broken-link-checker
https://github.com/MayankPandey01/BrokenLinkHijacker
https://github.com/misterch0c/twitterBFTD
https://github.com/cure53/HTTPLeaks
Broken X Hijacking
除了链接,实际上还有很多类似的事物有失效的情况,比如手机号,目前也出现越来越多二次放号导致的安全问题。
随着时间的推移,Broken Link Hijacking会逐渐受到安全人员的重视。而除了链接以外,我们需要知道对于网络账号、手机号的失效情况也都在慢慢增长,Broken X Hijacking的X的形态也会逐渐变多,应该持续关注。
参考
https://edoverflow.com/2017/broken-link-hijacking/
https://github.com/cure53/HTTPLeaks
https://medium.com/@bathinivijaysimhareddy/how-i-takeover-the-companys-linkedin-page-790c9ed2b04d
https://hackernoon.com/how-i-hijacked-top-celebrities-tweets-including-katy-perry-shakira-fca3a0e751c6
https://www.securecoding.com/blog/protecting-your-site-from-broken-link-hijacking/
近期评论